diff options
Diffstat (limited to 'src/libavoid/graph.h')
| -rw-r--r-- | src/libavoid/graph.h | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/src/libavoid/graph.h b/src/libavoid/graph.h index 05f03a988..db776b80b 100644 --- a/src/libavoid/graph.h +++ b/src/libavoid/graph.h @@ -2,24 +2,27 @@ * vim: ts=4 sw=4 et tw=0 wm=0 * * libavoid - Fast, Incremental, Object-avoiding Line Router - * Copyright (C) 2004-2006 Michael Wybrow <mjwybrow@users.sourceforge.net> + * + * Copyright (C) 2004-2009 Monash University * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. + * See the file LICENSE.LGPL distributed with the library. + * + * Licensees holding a valid commercial license may use this file in + * accordance with the commercial license agreement provided with the + * library. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * Author(s): Michael Wybrow <mjwybrow@users.sourceforge.net> */ + #ifndef AVOID_GRAPH_H #define AVOID_GRAPH_H @@ -31,6 +34,7 @@ namespace Avoid { + class ConnRef; class Router; @@ -42,8 +46,8 @@ typedef std::list<bool *> FlagList; class EdgeInf { public: - EdgeInf(VertInf *v1, VertInf *v2); - virtual ~EdgeInf(); + EdgeInf(VertInf *v1, VertInf *v2, const bool orthogonal = false); + ~EdgeInf(); inline double getDist(void) { return _dist; @@ -53,6 +57,9 @@ class EdgeInf void addConn(bool *flag); void addCycleBlocker(void); void addBlocker(int b); + bool added(void); + bool isOrthogonal(void) const; + bool rotationLessThan(const VertInf* last, const EdgeInf *rhs) const; std::pair<VertID, VertID> ids(void); std::pair<Point, Point> points(void); @@ -70,6 +77,7 @@ class EdgeInf Router *_router; bool _added; bool _visible; + bool _orthogonal; VertInf *_v1; VertInf *_v2; EdgeInfList::iterator _pos1; @@ -87,12 +95,17 @@ class EdgeInf class EdgeList { public: - EdgeList(); - void addEdge(EdgeInf *edge); - void removeEdge(EdgeInf *edge); + friend class EdgeInf; + EdgeList(bool orthogonal = false); + ~EdgeList(); + void clear(void); EdgeInf *begin(void); EdgeInf *end(void); + int size(void) const; private: + void addEdge(EdgeInf *edge); + void removeEdge(EdgeInf *edge); + bool _orthogonal; EdgeInf *_firstEdge; EdgeInf *_lastEdge; unsigned int _count; |
