From: cristy Date: Tue, 31 Aug 2010 23:21:38 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~8993 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=826a5475b6246db70fdcb9081573fb8967e27b5a;p=imagemagick --- diff --git a/ChangeLog b/ChangeLog index 489776dca..89f6c816a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-08-31 6.6.4-0 Cristy + * Path no longer closed if join style is round (reference + http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=16943). + 2010-08-23 6.6.3-10 Cristy * Fixed bug in the raw BGRA coders (reference http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=16880). diff --git a/magick/draw.c b/magick/draw.c index c7cd29aa1..ddec876ae 100644 --- a/magick/draw.c +++ b/magick/draw.c @@ -698,10 +698,6 @@ static void LogPathInfo(const PathInfo *path_info) static PathInfo *ConvertPrimitiveToPath( const DrawInfo *magick_unused(draw_info),const PrimitiveInfo *primitive_info) { - ssize_t - coordinates, - start; - PathInfo *path_info; @@ -716,6 +712,10 @@ static PathInfo *ConvertPrimitiveToPath( i, n; + ssize_t + coordinates, + start; + /* Converts a PrimitiveInfo structure into a vector path structure. */ @@ -1094,9 +1094,6 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image, ExceptionInfo *exception; - ssize_t - y; - MagickBooleanType status; @@ -1118,6 +1115,9 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image, SegmentInfo edge; + ssize_t + y; + /* Determine bounding box. */ @@ -1180,9 +1180,6 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image, int id; - ssize_t - x_offset; - MagickPixelPacket composite, pixel; @@ -1202,6 +1199,9 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image, SegmentInfo inverse_edge; + ssize_t + x_offset; + inverse_edge=AffineEdge(source,&inverse_affine,(double) y,&edge); if (inverse_edge.x2 < inverse_edge.x1) continue; @@ -1272,9 +1272,6 @@ static void DrawBoundingRectangles(Image *image,const DrawInfo *draw_info, DrawInfo *clone_info; - ssize_t - coordinates; - MagickRealType mid; @@ -1292,6 +1289,9 @@ static void DrawBoundingRectangles(Image *image,const DrawInfo *draw_info, SegmentInfo bounds; + ssize_t + coordinates; + clone_info=CloneDrawInfo((ImageInfo *) NULL,draw_info); (void) QueryColorDatabase("#0000",&clone_info->fill,&image->exception); resolution.x=DefaultResolution; @@ -1493,10 +1493,6 @@ static MagickBooleanType DrawDashPolygon(const DrawInfo *draw_info, DrawInfo *clone_info; - ssize_t - j, - n; - MagickRealType length, maximum_length, @@ -1520,6 +1516,10 @@ static MagickBooleanType DrawDashPolygon(const DrawInfo *draw_info, size_t number_vertices; + ssize_t + j, + n; + assert(draw_info != (const DrawInfo *) NULL); if (image->debug != MagickFalse) (void) LogMagickEvent(DrawEvent,GetMagickModule()," begin draw-dash"); @@ -1700,11 +1700,6 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info) DrawInfo **graphic_context; - ssize_t - j, - k, - n; - MagickBooleanType proceed, status; @@ -1737,11 +1732,14 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info) bounds; size_t - length; - - size_t + length, number_points; + ssize_t + j, + k, + n; + /* Ensure the annotation info is valid. */ @@ -3245,9 +3243,6 @@ MagickExport MagickBooleanType DrawGradientImage(Image *image, ExceptionInfo *exception; - ssize_t - y; - MagickBooleanType status; @@ -3263,6 +3258,9 @@ MagickExport MagickBooleanType DrawGradientImage(Image *image, RectangleInfo bounding_box; + ssize_t + y; + /* Draw linear or radial gradient on image. */ @@ -3286,9 +3284,6 @@ MagickExport MagickBooleanType DrawGradientImage(Image *image, #endif for (y=bounding_box.y; y < (ssize_t) bounding_box.height; y++) { - ssize_t - j; - MagickPixelPacket composite, pixel; @@ -3307,6 +3302,9 @@ MagickExport MagickBooleanType DrawGradientImage(Image *image, register PixelPacket *restrict q; + ssize_t + j; + if (status == MagickFalse) continue; q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception); @@ -3599,12 +3597,12 @@ static PolygonInfo **AcquirePolygonThreadSet(const DrawInfo *draw_info, PathInfo *restrict path_info; - register ssize_t - i; - PolygonInfo **polygon_info; + register ssize_t + i; + size_t number_threads; @@ -3808,11 +3806,6 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image, ExceptionInfo *exception; - ssize_t - start, - stop, - y; - MagickBooleanType fill, status; @@ -3832,6 +3825,11 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image, SegmentInfo bounds; + ssize_t + start, + stop, + y; + /* Compute bounding box. */ @@ -3952,12 +3950,12 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image, fill_color, stroke_color; - register ssize_t - x; - register PixelPacket *restrict q; + register ssize_t + x; + if (status == MagickFalse) continue; q=GetCacheViewAuthenticPixels(image_view,start,y,(size_t) (stop- @@ -4043,10 +4041,6 @@ static void LogPrimitiveInfo(const PrimitiveInfo *primitive_info) "?" }; - ssize_t - coordinates, - y; - PointInfo p, q, @@ -4056,6 +4050,10 @@ static void LogPrimitiveInfo(const PrimitiveInfo *primitive_info) i, x; + ssize_t + coordinates, + y; + x=(ssize_t) ceil(primitive_info->point.x-0.5); y=(ssize_t) ceil(primitive_info->point.y-0.5); switch (primitive_info->primitive) @@ -4141,9 +4139,6 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, ExceptionInfo *exception; - ssize_t - y; - MagickStatusType status; @@ -4151,6 +4146,9 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, i, x; + ssize_t + y; + if (image->debug != MagickFalse) { (void) LogMagickEvent(DrawEvent,GetMagickModule(), @@ -4264,12 +4262,12 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, for (y=0; y < (ssize_t) image->rows; y++) { - register ssize_t - x; - register PixelPacket *restrict q; + register ssize_t + x; + q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1, exception); if (q == (PixelPacket *) NULL) @@ -4323,12 +4321,12 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, (void) GetOneCacheViewVirtualPixel(image_view,x,y,&target,exception); for (y=0; y < (ssize_t) image->rows; y++) { - register ssize_t - x; - register PixelPacket *restrict q; + register ssize_t + x; + q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1, exception); if (q == (PixelPacket *) NULL) @@ -4378,12 +4376,12 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, for (y=0; y < (ssize_t) image->rows; y++) { - register ssize_t - x; - register PixelPacket *restrict q; + register ssize_t + x; + q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1, exception); if (q == (PixelPacket *) NULL) @@ -4436,13 +4434,13 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, ImageInfo *clone_info; + RectangleInfo + geometry; + ssize_t x1, y1; - RectangleInfo - geometry; - if (primitive_info->text == (char *) NULL) break; clone_info=AcquireImageInfo(); @@ -5026,13 +5024,13 @@ static void TraceBezier(PrimitiveInfo *primitive_info, point, *points; + register PrimitiveInfo + *p; + register ssize_t i, j; - register PrimitiveInfo - *p; - size_t control_points, quantum; @@ -5400,7 +5398,7 @@ static size_t TracePath(PrimitiveInfo *primitive_info,const char *path) i++; TracePoint(q,point); q+=q->coordinates; - if (attribute == (int) 'M') + if ((i != 0) && (attribute == (int) 'M')) { TracePoint(q,point); q+=q->coordinates; @@ -5663,9 +5661,6 @@ static void TraceSquareLinecap(PrimitiveInfo *primitive_info, MagickRealType distance; - ssize_t - j; - register MagickRealType dx, dy; @@ -5673,6 +5668,9 @@ static void TraceSquareLinecap(PrimitiveInfo *primitive_info, register ssize_t i; + ssize_t + j; + dx=0.0; dy=0.0; for (i=1; i < (ssize_t) number_vertices; i++) @@ -5722,12 +5720,6 @@ static PrimitiveInfo *TraceStrokePolygon(const DrawInfo *draw_info, slope, theta; - ssize_t - j, - n, - p, - q; - MagickBooleanType closed_path; @@ -5757,6 +5749,12 @@ static PrimitiveInfo *TraceStrokePolygon(const DrawInfo *draw_info, max_strokes, number_vertices; + ssize_t + j, + n, + p, + q; + /* Allocate paths. */