From: cristy Date: Sun, 14 Apr 2013 21:14:20 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~3882 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a492593efccb08b72392d64966b5c7728e56f16a;p=imagemagick --- diff --git a/coders/caption.c b/coders/caption.c index 6db7a4a75..d06cabc49 100644 --- a/coders/caption.c +++ b/coders/caption.c @@ -169,11 +169,12 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info, 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) || (image_info->pointsize != 0.0)) + if ((height >= image->rows) || (image_info->pointsize != 0.0)) break; } + draw_info->pointsize/=2.0; + width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5); image->columns=width; } if (image->rows == 0) @@ -195,13 +196,12 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info, if ((width >= image->columns) || (image_info->pointsize != 0.0)) break; } + draw_info->pointsize/=2.0; + status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); image->rows=(size_t) ((i+1)*(metrics.ascent-metrics.descent+ draw_info->interline_spacing+draw_info->stroke_width)+0.5); } - if (image_info->pointsize != 0.0) - i=FormatMagickCaption(image,draw_info,MagickTrue,&metrics,&caption, - exception); - else + if (fabs(image_info->pointsize) < MagickEpsilon) { double high, @@ -269,9 +269,10 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info, draw_info->pointsize--; } draw_info->pointsize--; - i=FormatMagickCaption(image,draw_info,MagickFalse,&metrics,&caption, - exception); } + (void) CloneString(&draw_info->text,caption); + i=FormatMagickCaption(image,draw_info,MagickFalse,&metrics,&caption, + exception); if (SetImageBackgroundColor(image,exception) == MagickFalse) { image=DestroyImageList(image); diff --git a/coders/label.c b/coders/label.c index a0860a850..68d0ad361 100644 --- a/coders/label.c +++ b/coders/label.c @@ -131,27 +131,8 @@ static Image *ReadLABELImage(const ImageInfo *image_info, label=GetImageProperty(image,"label",exception); draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL); draw_info->text=ConstantString(label); - status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); - if (image->columns == 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); - (void) status; - image->columns=(size_t) floor(metrics.width+draw_info->stroke_width+0.5); - } - if (image->rows == 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); - image->rows=(size_t) floor(metrics.height+draw_info->stroke_width+0.5); - } - if (image_info->pointsize == 0.0) + if (((image->columns == 0) || (image->rows == 0)) && + (fabs(image_info->pointsize) < MagickEpsilon)) { double high, @@ -169,9 +150,11 @@ 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 ((width >= image->columns) && (height >= image->rows)) + if (((image->columns != 0) && (width >= image->columns)) || + ((image->rows != 0) && (height >= image->rows))) break; - if ((width >= (image->columns << 1)) || (height >= (image->rows << 1))) + if (((image->columns != 0) && (width >= (2*image->columns))) || + ((image->rows != 0) && (height >= (2*image->rows)))) break; } high=draw_info->pointsize/2.0; @@ -185,7 +168,8 @@ 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 ((width <= image->columns) && (height <= image->rows)) + 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; @@ -199,7 +183,8 @@ 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 ((width <= image->columns) && (height <= image->rows)) + if (((image->columns != 0) && (width < image->columns)) || + ((image->rows != 0) && (height < image->rows))) break; draw_info->pointsize--; } @@ -211,6 +196,15 @@ static Image *ReadLABELImage(const ImageInfo *image_info, image=DestroyImageList(image); return((Image *) NULL); } + if (image->columns == 0) + image->columns=(size_t) (metrics.width+draw_info->stroke_width+0.5); + if (image->columns == 0) + image->columns=(size_t) (draw_info->pointsize+draw_info->stroke_width+0.5); + if (image->rows == 0) + image->rows=(size_t) (metrics.ascent-metrics.descent+ + draw_info->stroke_width+0.5); + if (image->rows == 0) + image->rows=(size_t) (draw_info->pointsize+draw_info->stroke_width+0.5); if (draw_info->gravity == UndefinedGravity) { (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",