summaryrefslogtreecommitdiffstats
path: root/src/libavoid/connector.cpp
diff options
context:
space:
mode:
authormjwybrow <mjwybrow@users.sourceforge.net>2006-07-14 05:30:15 +0000
committermjwybrow <mjwybrow@users.sourceforge.net>2006-07-14 05:30:15 +0000
commit4d9217f4f7b6e5b11f88af486e8659f539dc1300 (patch)
tree4e554ba1a27ff9ef8d3d3299cca9eb303c73a726 /src/libavoid/connector.cpp
parentfixed warnings (diff)
downloadinkscape-4d9217f4f7b6e5b11f88af486e8659f539dc1300.tar.gz
inkscape-4d9217f4f7b6e5b11f88af486e8659f539dc1300.zip
* src/sp-conn-end-pair.cpp, src/connector-context.cpp,
src/document.cpp, src/libavoid/*: Update libavoid with upstream fixes, optimisations and new features. (bzr r1411)
Diffstat (limited to 'src/libavoid/connector.cpp')
-rw-r--r--src/libavoid/connector.cpp58
1 files changed, 52 insertions, 6 deletions
diff --git a/src/libavoid/connector.cpp b/src/libavoid/connector.cpp
index a9f144688..3526b3f15 100644
--- a/src/libavoid/connector.cpp
+++ b/src/libavoid/connector.cpp
@@ -46,6 +46,7 @@ ConnRef::ConnRef(Router *router, const unsigned int id)
, _initialised(false)
, _callback(NULL)
, _connector(NULL)
+ , _hateCrossings(false)
{
// TODO: Store endpoints and details.
_route.pn = 0;
@@ -69,6 +70,7 @@ ConnRef::ConnRef(Router *router, const unsigned int id,
, _initialised(false)
, _callback(NULL)
, _connector(NULL)
+ , _hateCrossings(false)
{
_route.pn = 0;
_route.ps = NULL;
@@ -121,7 +123,9 @@ void ConnRef::updateEndPoint(const unsigned int type, const Point& point)
{
assert((type == (unsigned int) VertID::src) ||
(type == (unsigned int) VertID::tar));
- //assert(IncludeEndpoints);
+
+ // XXX: This was commented out. Is there a case where it isn't true?
+ assert(_router->IncludeEndpoints);
if (!_initialised)
{
@@ -163,8 +167,11 @@ void ConnRef::updateEndPoint(const unsigned int type, const Point& point)
altered = _dstVert;
partner = _srcVert;
}
-
- bool knownNew = false;
+
+ // XXX: Seems to be faster to just remove the edges and recreate
+ bool isConn = true;
+ altered->removeFromGraph(isConn);
+ bool knownNew = true;
vertexVisibility(altered, partner, knownNew, true);
}
@@ -182,6 +189,18 @@ void ConnRef::setEndPointId(const unsigned int type, const unsigned int id)
}
+unsigned int ConnRef::getSrcShapeId(void)
+{
+ return _srcId;
+}
+
+
+unsigned int ConnRef::getDstShapeId(void)
+{
+ return _dstId;
+}
+
+
void ConnRef::makeActive(void)
{
assert(!_active);
@@ -249,6 +268,12 @@ void ConnRef::lateSetup(const Point& src, const Point& dst)
}
+unsigned int ConnRef::id(void)
+{
+ return _id;
+}
+
+
VertInf *ConnRef::src(void)
{
return _srcVert;
@@ -355,8 +380,9 @@ int ConnRef::generatePath(Point p0, Point p1)
tar = _dstVert;
bool knownNew = true;
- vertexVisibility(src, tar, knownNew);
- vertexVisibility(tar, src, knownNew);
+ bool genContains = true;
+ vertexVisibility(src, tar, knownNew, genContains);
+ vertexVisibility(tar, src, knownNew, genContains);
}
bool *flag = &(_needs_reroute_flag);
@@ -405,7 +431,9 @@ int ConnRef::generatePath(Point p0, Point p1)
{
_false_path = true;
}
- path[j--] = i->point;
+ path[j] = i->point;
+ path[j].id = i->id.objID;
+ j--;
}
path[0] = src->point;
@@ -415,11 +443,29 @@ int ConnRef::generatePath(Point p0, Point p1)
PolyLine& output_route = route();
output_route.pn = pathlen;
output_route.ps = path;
+
+ if ( !(_router->IncludeEndpoints) )
+ {
+ assert(_initialised);
+ unInitialise();
+ }
return (int) result;
}
+void ConnRef::setHateCrossings(bool value)
+{
+ _hateCrossings = value;
+}
+
+
+bool ConnRef::doesHateCrossings(void)
+{
+ return _hateCrossings;
+}
+
+
//============================================================================
}