From 588a36363f2d45e18119cbb4adb9a2cb7c9a116f Mon Sep 17 00:00:00 2001 From: johanengelen Date: Sun, 13 Jul 2008 22:46:59 +0000 Subject: [PATCH] if the closing line segment has zero length, don't include it in the nodepath! --- src/nodepath.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/nodepath.cpp b/src/nodepath.cpp index aec5ff058..89d1d3e8b 100644 --- a/src/nodepath.cpp +++ b/src/nodepath.cpp @@ -525,9 +525,14 @@ static void subpaths_from_pathvector(Inkscape::NodePath::Path *np, Geom::PathVec if (pit->closed()) { // Add last knot (because sp_nodepath_subpath_close kills the last knot) - // Remember that last closing segment is always a lineto, and that its endpoint is the path's initialPoint because the path is closed - NR::Point pos = from_2geom(pit->initialPoint()) * np->i2d; - sp_nodepath_node_new(sp, NULL, t[i++], NR_LINETO, &pos, &pos, &pos); + /* Remember that last closing segment is always a lineto, but its length can be zero if the path is visually closed already + * If the length is zero, don't add it to the nodepath. */ + Geom::Curve const &back = pit->back_closed(); + if ( back.initialPoint() != back.finalPoint() ) { + NR::Point pos = from_2geom(back.finalPoint()) * np->i2d; + sp_nodepath_node_new(sp, NULL, t[i++], NR_LINETO, &pos, &pos, &pos); + } + sp_nodepath_subpath_close(sp); } } -- 2.30.2