Code

Patch by Johan for 445790
authorscislac <scislac@users.sourceforge.net>
Sun, 8 Nov 2009 01:19:29 +0000 (01:19 +0000)
committerscislac <scislac@users.sourceforge.net>
Sun, 8 Nov 2009 01:19:29 +0000 (01:19 +0000)
src/livarot/PathStroke.cpp

index 465bb205c3260f5db9f89d4adea9800025ef10d9..93280d7943834b77df794b8869804fefc797c21d 100644 (file)
@@ -63,7 +63,13 @@ void Path::Stroke(Shape *dest, bool doClose, double width, JoinType join,
         }
 
         if ( lastP > lastM+1 ) {
-            if ( pts[lastP - 1].closed ) {
+            Geom::Point sbStart = pts[lastM].p;
+            Geom::Point sbEnd = pts[lastP - 1].p;
+            // if ( pts[lastP - 1].closed ) { // this is correct, but this bugs text rendering (doesn't close text stroke)...
+            if ( Geom::LInfty(sbEnd-sbStart) < 0.00001 ) {       // why close lines that shouldn't be closed?
+                // ah I see, because close is defined here for
+                // a whole path and should be defined per subpath.
+                // debut==fin => ferme (on devrait garder un element pour les close(), mais tant pis)
                 DoStroke(lastM, lastP - lastM, dest, true, width, join, butt, miter, true);
             } else {
                 DoStroke(lastM, lastP - lastM, dest, doClose, width, join, butt, miter, true);