From: cristy Date: Mon, 28 May 2012 11:43:37 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~5521 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=17386ff059907b275aeb762297179b2d26d95a33;p=imagemagick --- diff --git a/coders/caption.c b/coders/caption.c index 1a29559aa..cca4c5250 100644 --- a/coders/caption.c +++ b/coders/caption.c @@ -209,7 +209,25 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info, else high=draw_info->pointsize-1.0; } - draw_info->pointsize--; + for (draw_info->pointsize=(low+high)/2.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--; + } + draw_info->pointsize=floor(draw_info->pointsize); } i=FormatMagickCaption(image,draw_info,MagickTrue,&metrics,&caption,exception); if (image->rows == 0)