summaryrefslogtreecommitdiffstats
path: root/src/libavoid/router.h
diff options
context:
space:
mode:
authormjwybrow <mjwybrow@users.sourceforge.net>2006-02-15 13:25:54 +0000
committermjwybrow <mjwybrow@users.sourceforge.net>2006-02-15 13:25:54 +0000
commit618fe74db3717f5c37f7a51d0d6df95776efbfe1 (patch)
tree4c9afdc2bb436cd52cef7609d1960291433bf3c9 /src/libavoid/router.h
parentfix svg to dxf scaling factor (diff)
downloadinkscape-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.h105
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