Handle special cases when Bezier curves are used to describe
corners and straight lines.
*/
- if ((last[1].x == last[2].x) && (last[1].y == last[2].y) &&
+ if (((last[1].x == last[2].x) || (last[1].y == last[2].y)) &&
(point[0].x == point[1].x) && (point[0].y == point[1].y))
(void) FormatLocaleString(message,MagickPathExtent,
"L %g %g\n",point[1].x,point[1].y);
else
(void) FormatLocaleString(message,MagickPathExtent,
- "C %g %g %g %g %g %g\n",last[2].x,
- last[2].y,point[0].x,point[0].y,point[1].x,point[1].y);
+ "C %g %g %g %g %g %g\n",last[2].x,last[2].y,point[0].x,
+ point[0].y,point[1].x,point[1].y);
for (i=0; i < 3; i++)
last[i]=point[i];
}
Same special handling as above except we compare to the
first point in the path and close the path.
*/
- if ((last[1].x == last[2].x) && (last[1].y == last[2].y) &&
+ if (((last[1].x == last[2].x) || (last[1].y == last[2].y)) &&
(first[0].x == first[1].x) && (first[0].y == first[1].y))
(void) FormatLocaleString(message,MagickPathExtent,
"L %g %g Z\n",first[1].x,first[1].y);
else
(void) FormatLocaleString(message,MagickPathExtent,
- "C %g %g %g %g %g %g Z\n",last[2].x,
- last[2].y,first[0].x,first[0].y,first[1].x,first[1].y);
+ "C %g %g %g %g %g %g Z\n",last[2].x,last[2].y,first[0].x,
+ first[0].y,first[1].x,first[1].y);
(void) ConcatenateString(&path,message);
in_subpath=MagickFalse;
}