From: cristy Date: Tue, 10 Jun 2014 00:18:20 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~2230 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a9b9e25d0388e9018376be0d4217f7ed8b989ac9;p=imagemagick --- diff --git a/coders/svg.c b/coders/svg.c index e94646142..e7cebb27e 100644 --- a/coders/svg.c +++ b/coders/svg.c @@ -3404,15 +3404,6 @@ static MagickBooleanType IsPoint(const char *point) static MagickBooleanType TraceSVGImage(Image *image,ExceptionInfo *exception) { - ssize_t - y; - - register const Quantum - *p; - - register ssize_t - x; - #if defined(MAGICKCORE_AUTOTRACE_DELEGATE) { at_bitmap_type @@ -3430,12 +3421,19 @@ static MagickBooleanType TraceSVGImage(Image *image,ExceptionInfo *exception) ImageType type; + register const PixelPacket + *p; + register ssize_t - i; + i, + x; size_t number_planes; + ssize_t + y; + /* Trace image and write as SVG. */ @@ -3450,7 +3448,7 @@ static MagickBooleanType TraceSVGImage(Image *image,ExceptionInfo *exception) for (y=0; y < (ssize_t) image->rows; y++) { p=GetVirtualPixels(image,0,y,image->columns,1,exception); - if (p == (const Quantum *) NULL) + if (p == (const PixelPacket *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) { @@ -3479,13 +3477,30 @@ static MagickBooleanType TraceSVGImage(Image *image,ExceptionInfo *exception) #else { char - message[MaxTextExtent], - tuple[MaxTextExtent]; + *base64, + message[MaxTextExtent]; + + Image + *clone_image; + + ImageInfo + *image_info; - PixelInfo - pixel; + register char + *p; + + size_t + blob_length, + encode_length; + + ssize_t + i; + + unsigned char + *blob; - (void) WriteBlobString(image,"\n"); + (void) WriteBlobString(image, + "\n"); (void) WriteBlobString(image, "\n",(double) image->columns, (double) image->rows); (void) WriteBlobString(image,message); - GetPixelInfo(image,&pixel); - for (y=0; y < (ssize_t) image->rows; y++) + clone_image=CloneImage(image,0,0,MagickTrue,exception); + if (clone_image == (Image *) NULL) + return(MagickFalse); + image_info=AcquireImageInfo(); + (void) CopyMagickString(image_info->magick,"PNG",MaxTextExtent); + blob_length=2048; + blob=(unsigned char *) ImageToBlob(image_info,clone_image,&blob_length, + exception); + encode_length=0; + base64=Base64Encode(blob,blob_length,&encode_length); + blob=(unsigned char *) RelinquishMagickMemory(blob); + (void) FormatLocaleString(message,MaxTextExtent, + " scene,(double) image->columns,(double) image->rows, + (double) image->page.x,(double) image->page.y); + (void) WriteBlobString(image,message); + p=base64; + for (i=(ssize_t) encode_length; i > 0; i-=76) { - p=GetVirtualPixels(image,0,y,image->columns,1,exception); - if (p == (const Quantum *) NULL) - break; - for (x=0; x < (ssize_t) image->columns; x++) - { - GetPixelInfoPixel(image,p,&pixel); - (void) QueryColorname(image,&pixel,SVGCompliance,tuple,exception); - (void) FormatLocaleString(message,MaxTextExtent, - " \n", - (double) x,(double) y,tuple); - (void) WriteBlobString(image,message); - p+=GetPixelChannels(image); - } + (void) FormatLocaleString(message,MaxTextExtent,"%.76s",p); + (void) WriteBlobString(image,message); + p+=76; + if (i > 76) + (void) WriteBlobString(image,"\n"); } + (void) WriteBlobString(image,"\" />\n"); (void) WriteBlobString(image,"\n"); } #endif