From 23421ea20e6185c4b73cf283c9573b28980caa07 Mon Sep 17 00:00:00 2001 From: Michael Wybrow Date: Tue, 26 Oct 2010 13:00:27 +1100 Subject: [PATCH] Fix bug #666586: Connector routing regression --- src/conn-avoid-ref.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/conn-avoid-ref.cpp b/src/conn-avoid-ref.cpp index a918f8745..fe25fa418 100644 --- a/src/conn-avoid-ref.cpp +++ b/src/conn-avoid-ref.cpp @@ -28,6 +28,7 @@ #include "libavoid/router.h" #include "libavoid/connector.h" #include "libavoid/geomtypes.h" +#include "libavoid/shape.h" #include "xml/node.h" #include "document.h" #include "desktop.h" @@ -389,8 +390,6 @@ Geom::Point SPAvoidRef::getConnectionPointPos(const int type, const int id) g_assert(item); Geom::Point pos; const Geom::Matrix& transform = sp_item_i2doc_affine(item); - // TODO investigate why this was asking for the active desktop: - SPDesktop *desktop = inkscape_active_desktop(); if ( type == ConnPointDefault ) { @@ -447,6 +446,12 @@ static std::vector approxCurveWithPoints(SPCurve *curve) { Geom::Path::const_iterator cit = pit->begin(); while (cit != pit->end()) + { + if (cit == pit->begin()) + { + poly_points.push_back(cit->initialPoint()); + } + if (dynamic_cast(&*cit)) { at += seg_size; @@ -463,6 +468,7 @@ static std::vector approxCurveWithPoints(SPCurve *curve) poly_points.push_back(cit->finalPoint()); ++cit; } + } ++pit; } return poly_points; @@ -521,7 +527,7 @@ static Avoid::Polygon avoid_item_poly(SPItem const *item) prev_parallel_hull_edge.origin(hull_edge.origin()+hull_edge.versor().ccw()*spacing); prev_parallel_hull_edge.versor(hull_edge.versor()); int hull_size = hull.boundary.size(); - for (int i = 0; i <= hull_size; ++i) + for (int i = 0; i < hull_size; ++i) { hull_edge.setBy2Points(hull[i], hull[i+1]); Geom::Line parallel_hull_edge; -- 2.30.2