]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <urban-warrior@imagemagick.org>
Fri, 20 Apr 2018 19:00:26 +0000 (15:00 -0400)
committerCristy <urban-warrior@imagemagick.org>
Fri, 20 Apr 2018 19:00:26 +0000 (15:00 -0400)
MagickCore/draw.c

index 5aed52e01c5908cc4cb5f9a56b50449bf27b3d4e..6d1f7eb0145b35323ef1c7d927f764f298f8d093 100644 (file)
@@ -763,30 +763,34 @@ static PathInfo *ConvertPrimitiveToPath(const PrimitiveInfo *primitive_info)
     code=LineToCode;
     if (coordinates <= 0)
       {
+        /*
+          New subpath.
+        */ 
         coordinates=(ssize_t) primitive_info[i].coordinates;
         p=primitive_info[i].point;
         start=n;
         code=MoveToCode;
       }
     coordinates--;
-    /*
-      Eliminate duplicate points.
-    */
-    if ((i == 0) || (fabs(q.x-primitive_info[i].point.x) >= DrawEpsilon) ||
+    if ((code == MoveToCode) ||
+        (fabs(q.x-primitive_info[i].point.x) >= DrawEpsilon) ||
         (fabs(q.y-primitive_info[i].point.y) >= DrawEpsilon))
       {
+        /*
+          Eliminate duplicate points.
+        */
         path_info[n].code=code;
         path_info[n].point=primitive_info[i].point;
         q=primitive_info[i].point;
         n++;
       }
     if (coordinates > 0)
-      continue;
+      continue;  /* next point in current subpath */
     if ((fabs(p.x-primitive_info[i].point.x) < DrawEpsilon) &&
         (fabs(p.y-primitive_info[i].point.y) < DrawEpsilon))
-      continue;
+      continue;  /* new subpath */
     /*
-      Mark the p point as open if it does not match the q.
+      Subpath is not closed-- close it with a "ghost" line.
     */
     path_info[start].code=OpenCode;
     path_info[n].code=GhostlineCode;