diff options
| author | mjwybrow <mjwybrow@users.sourceforge.net> | 2006-02-15 13:25:54 +0000 |
|---|---|---|
| committer | mjwybrow <mjwybrow@users.sourceforge.net> | 2006-02-15 13:25:54 +0000 |
| commit | 618fe74db3717f5c37f7a51d0d6df95776efbfe1 (patch) | |
| tree | 4c9afdc2bb436cd52cef7609d1960291433bf3c9 /src/libavoid/router.h | |
| parent | fix svg to dxf scaling factor (diff) | |
| download | inkscape-618fe74db3717f5c37f7a51d0d6df95776efbfe1.tar.gz inkscape-618fe74db3717f5c37f7a51d0d6df95776efbfe1.zip | |
* src/document.cpp, src/document.h, src/sp-conn-end-pair.cpp,
src/connector-context.cpp, src/conn-avoid-ref.cpp:
Keep a seperate connector router for each document.
* src/libavoid/Makefile_insert, src/libavoid/connector.cpp,
src/libavoid/connector.h, src/libavoid/debug.h,
src/libavoid/geometry.cpp, src/libavoid/geometry.h,
src/libavoid/geomtypes.h, src/libavoid/graph.cpp,
src/libavoid/graph.h, src/libavoid/incremental.cpp,
src/libavoid/incremental.h, src/libavoid/libavoid.h,
src/libavoid/makepath.cpp, src/libavoid/makepath.h,
src/libavoid/polyutil.cpp, src/libavoid/polyutil.h,
src/libavoid/router.cpp, src/libavoid/router.h,
src/libavoid/shape.cpp, src/libavoid/shape.h,
src/libavoid/static.cpp, src/libavoid/static.h,
src/libavoid/timer.cpp, src/libavoid/timer.h,
src/libavoid/vertices.cpp, src/libavoid/vertices.h,
src/libavoid/visibility.cpp, src/libavoid/visibility.h:
Upstream changes to libavoid that allow multiple connector
router instances, as well a few other minor bugfixes.
(bzr r144)
Diffstat (limited to 'src/libavoid/router.h')
| -rw-r--r-- | src/libavoid/router.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/libavoid/router.h b/src/libavoid/router.h new file mode 100644 index 000000000..bcb4ea67c --- /dev/null +++ b/src/libavoid/router.h @@ -0,0 +1,105 @@ +/* + * 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> + * + * 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. + * + * 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 + * +*/ + + +#ifndef AVOID_ROUTER_H +#define AVOID_ROUTER_H + +//#define LINEDEBUG + +#include "libavoid/shape.h" +#include "libavoid/graph.h" +#include "libavoid/timer.h" +#ifdef LINEDEBUG + #include <SDL.h> +#endif + + +namespace Avoid { + +class ConnRef; +typedef std::list<ConnRef *> ConnRefList; +typedef std::list<unsigned int> IntList; + + +static const unsigned int runningTo = 1; +static const unsigned int runningFrom = 2; +static const unsigned int runningToAndFrom = runningTo | runningFrom; + + +class Router { + public: + Router(); + + ShapeRefList shapeRefs; + ConnRefList connRefs; + EdgeList visGraph; + EdgeList invisGraph; + ContainsMap contains; + VertInfList vertices; + + bool PartialTime; + double segmt_penalty; + double angle_penalty; + + bool UseAStarSearch; + bool IgnoreRegions; + bool SelectiveReroute; + bool IncludeEndpoints; + bool UseLeesAlgorithm; + bool InvisibilityGrph; + bool PartialFeedback; + + // Instrumentation: + Timer timers; + int st_checked_edges; +#ifdef LINEDEBUG + SDL_Surface *avoid_screen; +#endif + + void addShape(ShapeRef *shape); + void delShape(ShapeRef *shape); + ShapeRef *moveShape(ShapeRef *oldShape, Polygn *newPoly, + const bool first_move = false); + + void attachedConns(IntList &conns, const unsigned int shapeId, + const unsigned int type); + void attachedShapes(IntList &shapes, const unsigned int shapeId, + const unsigned int type); + + void markConnectors(ShapeRef *shape); + void generateContains(VertInf *pt); + void printInfo(void); + private: + void newBlockingShape(Polygn *poly, int pid); + void checkAllBlockedEdges(int pid); + void checkAllMissingEdges(void); + void adjustContainsWithAdd(const Polygn& poly, const int p_shape); + void adjustContainsWithDel(const int p_shape); + void callbackAllInvalidConnectors(void); +}; + +} + + + +#endif |
