From: cristy Date: Sat, 11 May 2013 01:05:45 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~3688 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=071c2e261259c0957447cebc377c3fdea6f437f9;p=imagemagick --- diff --git a/MagickCore/stream.c b/MagickCore/stream.c index d6dc3cfd3..a2ba2ba87 100644 --- a/MagickCore/stream.c +++ b/MagickCore/stream.c @@ -756,7 +756,7 @@ static const Quantum *GetVirtualPixelStream(const Image *image, } } else - if (cache_info->length != length) + if (cache_info->length < length) { RelinquishStreamPixels(cache_info); cache_info->length=length; @@ -1251,10 +1251,12 @@ MagickExport Image *StreamImage(const ImageInfo *image_info, assert(exception != (ExceptionInfo *) NULL); read_info=CloneImageInfo(image_info); stream_info->image_info=image_info; + stream_info->quantum_info=AcquireQuantumInfo(image_info,(Image *) NULL); stream_info->exception=exception; read_info->client_data=(void *) stream_info; image=ReadStream(read_info,&WriteStreamImage,exception); read_info=DestroyImageInfo(read_info); + stream_info->quantum_info=DestroyQuantumInfo(stream_info->quantum_info) stream_info->quantum_info=AcquireQuantumInfo(image_info,image); if (stream_info->quantum_info == (QuantumInfo *) NULL) image=DestroyImage(image); diff --git a/coders/caption.c b/coders/caption.c index 66d09c0a6..f7a15b5dd 100644 --- a/coders/caption.c +++ b/coders/caption.c @@ -210,10 +210,15 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info, status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5); height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5); - if ((width >= image->columns) && (height >= image->rows)) - break; - if ((width >= (image->columns << 1)) || (height >= (image->rows << 1))) - break; + if ((image->columns != 0) && (image->rows != 0)) + { + if ((width > image->columns) && (height > image->rows)) + break; + } + else + if (((image->columns != 0) && (width > image->columns)) || + ((image->rows != 0) && (height > image->rows))) + break; } high=draw_info->pointsize; for (low=1.0; (high-low) > 1.0; ) @@ -231,30 +236,21 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info, status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5); height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5); - if ((width <= image->columns) && (height <= image->rows)) - low=draw_info->pointsize+1.0; + if ((image->columns != 0) && (image->rows != 0)) + { + if ((width <= image->columns) && (height <= image->rows)) + low=draw_info->pointsize+1.0; + else + high=draw_info->pointsize-1.0; + } else - high=draw_info->pointsize-1.0; - } - for (draw_info->pointsize=(low+high)/2.0; (high-low) > 1.0; ) - { - text=AcquireString(caption); - i=FormatMagickCaption(image,draw_info,MagickFalse,&metrics,&text, - exception); - (void) CloneString(&draw_info->text,text); - text=DestroyString(text); - (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g", - -metrics.bounds.x1,metrics.ascent); - if (draw_info->gravity == UndefinedGravity) - (void) CloneString(&draw_info->geometry,geometry); - status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); - width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5); - height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5); - if ((width <= image->columns) && (height <= image->rows)) - break; - draw_info->pointsize--; + if (((image->columns != 0) && (width < image->columns)) || + ((image->rows != 0) && (height < image->rows))) + low=draw_info->pointsize+1.0; + else + high=draw_info->pointsize-1.0; } - draw_info->pointsize--; + draw_info->pointsize=(low+high)/2.0; } (void) CloneString(&draw_info->text,caption); i=FormatMagickCaption(image,draw_info,MagickFalse,&metrics,&caption, diff --git a/coders/label.c b/coders/label.c index c2a9463e2..dcdfb4a80 100644 --- a/coders/label.c +++ b/coders/label.c @@ -156,12 +156,15 @@ static Image *ReadLABELImage(const ImageInfo *image_info, status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5); height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5); - if (((image->columns != 0) && (width >= image->columns)) || - ((image->rows != 0) && (height >= image->rows))) - break; - if (((image->columns != 0) && (width >= (2*image->columns))) || - ((image->rows != 0) && (height >= (2*image->rows)))) - break; + if ((image->columns != 0) && (image->rows != 0)) + { + if ((width > image->columns) && (height > image->rows)) + break; + } + else + if (((image->columns != 0) && (width > image->columns)) || + ((image->rows != 0) && (height > image->rows))) + break; } high=draw_info->pointsize; for (low=1.0; (high-low) > 1.0; ) @@ -174,27 +177,21 @@ static Image *ReadLABELImage(const ImageInfo *image_info, status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5); height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5); - if (((image->columns != 0) && (width < image->columns)) || - ((image->rows != 0) && (height < image->rows))) - low=draw_info->pointsize+1.0; + if ((image->columns != 0) && (image->rows != 0)) + { + if ((width <= image->columns) && (height <= image->rows)) + low=draw_info->pointsize+1.0; + else + high=draw_info->pointsize-1.0; + } else - high=draw_info->pointsize-1.0; - } - for (draw_info->pointsize=(low+high)/2.0; (high-low) > 1.0; ) - { - (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g", - -metrics.bounds.x1,metrics.ascent); - if (draw_info->gravity == UndefinedGravity) - (void) CloneString(&draw_info->geometry,geometry); - status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); - width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5); - height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5); - if (((image->columns != 0) && (width < image->columns)) || - ((image->rows != 0) && (height < image->rows))) - break; - draw_info->pointsize--; + if (((image->columns != 0) && (width < image->columns)) || + ((image->rows != 0) && (height < image->rows))) + low=draw_info->pointsize+1.0; + else + high=draw_info->pointsize-1.0; } - draw_info->pointsize--; + draw_info->pointsize=(low+high)/2.0; } status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); if (status == MagickFalse)