char
*caption,
geometry[MaxTextExtent],
- *property;
+ *property,
+ *text;
const char
*gravity,
if (gravity != (char *) NULL)
draw_info->gravity=(GravityType) ParseCommandOption(MagickGravityOptions,
MagickFalse,gravity);
- status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);
if (image->columns == 0)
{
for ( ; ; draw_info->pointsize*=2.0)
{
+ text=AcquireString(caption);
+ i=FormatMagickCaption(image,draw_info,MagickTrue,&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);
- (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 ((height > image->rows) || (image_info->pointsize != 0.0))
+ if ((width >= image->columns) || (image_info->pointsize != 0.0))
break;
}
image->columns=width;
{
for ( ; ; draw_info->pointsize*=2.0)
{
+ text=AcquireString(caption);
+ i=FormatMagickCaption(image,draw_info,MagickTrue,&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)
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 ((width >= image->columns) || (image_info->pointsize != 0.0))
break;
}
- image->rows=height;
+ 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)
{
text=AcquireString(caption);
i=FormatMagickCaption(image,draw_info,MagickTrue,&metrics,&text,
exception);
- (void) i;
(void) CloneString(&draw_info->text,text);
text=DestroyString(text);
(void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",
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 ((width >= image->columns) && (height >= image->rows))
break;
- if ((width > (image->columns << 1)) || (height > (image->rows << 1)))
+ if ((width >= (image->columns << 1)) || (height >= (image->rows << 1)))
break;
}
high=draw_info->pointsize/2.0;
/*
Draw caption.
*/
+ i=FormatMagickCaption(image,draw_info,MagickTrue,&metrics,&caption,exception);
(void) CloneString(&draw_info->text,caption);
status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);
if ((draw_info->gravity != UndefinedGravity) &&
status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);
if (image->columns == 0)
{
- for ( ; ; draw_info->pointsize*=2.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;
- 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 ((height > image->rows) || (image_info->pointsize != 0.0))
- break;
- }
- image->columns=width;
+ (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)
{
- for ( ; ; draw_info->pointsize*=2.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 ((width > image->columns) || (image_info->pointsize != 0.0))
- break;
- }
- image->rows=height;
+ (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)
{
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 ((width >= image->columns) && (height >= image->rows))
break;
- if ((width > (image->columns << 1)) || (height > (image->rows << 1)))
+ if ((width >= (image->columns << 1)) || (height >= (image->rows << 1)))
break;
}
high=draw_info->pointsize/2.0;