From: Cristy Date: Sat, 16 Jun 2018 14:58:50 +0000 (-0400) Subject: https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=34142 X-Git-Tag: 7.0.8-1~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d6ebad69e0e2f852e629884caab1f41a1fb1267c;p=imagemagick https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=34142 --- diff --git a/MagickCore/draw.c b/MagickCore/draw.c index 7d6adf218..306212f75 100644 --- a/MagickCore/draw.c +++ b/MagickCore/draw.c @@ -3354,7 +3354,7 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info, name); (void) FormatLocaleString(geometry,MagickPathExtent, "%.20gx%.20g%+.20g%+.20g",(double)bounds.width,(double) - bounds.height,(double)bounds.x,(double) bounds.y); + bounds.height,(double) bounds.x,(double) bounds.y); (void) SetImageArtifact(image,key,geometry); GetNextToken(q,&q,extent,token); break; @@ -5409,15 +5409,22 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, ((draw_info->stroke.alpha != (Quantum) TransparentAlpha) || (draw_info->stroke_pattern != (Image *) NULL))) { + double + x, + y; + MagickBooleanType closed_path; /* Draw strokes while respecting line cap/join attributes. */ - for (i=0; primitive_info[i].primitive != UndefinedPrimitive; i++) ; closed_path=primitive_info[0].closed_subpath; i=(ssize_t) primitive_info[0].coordinates; + x=fabs(primitive_info[i-1].point.x-primitive_info[0].point.x); + y=fabs(primitive_info[i-1].point.y-primitive_info[0].point.y); + if ((x < DrawEpsilon) && (y < DrawEpsilon)) + closed_path=MagickTrue; if ((((draw_info->linecap == RoundCap) || (closed_path != MagickFalse)) && (draw_info->linejoin == RoundJoin)) || @@ -6138,7 +6145,7 @@ static void TraceEllipse(MVGInfo *mvg_info,const PointInfo center, primitive_info[primitive_info->coordinates-1].point.x); y=fabs(primitive_info[0].point.y- primitive_info[primitive_info->coordinates-1].point.y); - if ((x <= DrawEpsilon) && (y <= DrawEpsilon)) + if ((x < DrawEpsilon) && (y < DrawEpsilon)) primitive_info->closed_subpath=MagickTrue; for (i=0; i < (ssize_t) primitive_info->coordinates; i++) {