From: cristy Date: Wed, 13 Mar 2013 21:24:28 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~4091 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=49cc86477d2a31ad4198167787b04a1a1652f54f;p=imagemagick --- diff --git a/coders/caption.c b/coders/caption.c index 45ce95cc3..5b8cd55fa 100644 --- a/coders/caption.c +++ b/coders/caption.c @@ -155,8 +155,7 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info, if (gravity != (char *) NULL) draw_info->gravity=(GravityType) ParseCommandOption(MagickGravityOptions, MagickFalse,gravity); - if ((*caption != '\0') && (image->rows != 0) && - (image_info->pointsize == 0.0)) + if ((*caption != '\0') && (image_info->pointsize == 0.0)) { char *text; @@ -168,6 +167,27 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info, /* Auto fit text into bounding box. */ + status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); + if (image->rows == 0) + { + for ( ; ; ) + { + (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); + (void) status; + 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) + break; + if (width > (image->columns << 1)) + break; + draw_info->pointsize*=2.0; + } + image->rows=(size_t) floor(height); + } for ( ; ; draw_info->pointsize*=2.0) { text=AcquireString(caption); diff --git a/coders/label.c b/coders/label.c index fc59df6a4..0fef1c9d6 100644 --- a/coders/label.c +++ b/coders/label.c @@ -130,7 +130,7 @@ static Image *ReadLABELImage(const ImageInfo *image_info, label=GetImageProperty(image,"label",exception); draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL); draw_info->text=ConstantString(label); - if ((*label != '\0') && (image->rows != 0) && (image_info->pointsize == 0.0)) + if ((*label != '\0') && (image_info->pointsize == 0.0)) { double high, @@ -140,6 +140,26 @@ static Image *ReadLABELImage(const ImageInfo *image_info, Auto fit text into bounding box. */ status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); + if (image->rows == 0) + { + for ( ; ; ) + { + (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); + (void) status; + 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) + break; + if (width > (image->columns << 1)) + break; + draw_info->pointsize*=2.0; + } + image->rows=(size_t) floor(height); + } for ( ; ; ) { (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",