assert(exception != (ExceptionInfo *) NULL);
assert(exception->signature == MagickSignature);
image=AcquireImage(image_info,exception);
- if (image->columns == 0)
- ThrowReaderException(OptionError,"MustSpecifyImageSize");
(void) ResetImagePage(image,"0x0+0+0");
/*
Format caption.
if (gravity != (char *) NULL)
draw_info->gravity=(GravityType) ParseCommandOption(MagickGravityOptions,
MagickFalse,gravity);
- if (((image->columns != 0) || (image->rows != 0)) &&
- (image_info->pointsize == 0.0))
+ 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;
+ }
+ 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;
+ }
+ if (image_info->pointsize == 0.0)
{
char
*text;
/*
Auto fit text into bounding box.
*/
- 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)
- break;
- }
- image->columns=width;
- }
- 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)
- break;
- }
- image->rows=height;
- }
for ( ; ; draw_info->pointsize*=2.0)
{
text=AcquireString(caption);
label=GetImageProperty(image,"label",exception);
draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);
draw_info->text=ConstantString(label);
- if (((image->columns != 0) || (image->rows != 0)) &&
- (image_info->pointsize == 0.0))
+ 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;
+ }
+ 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;
+ }
+ if (image_info->pointsize == 0.0)
{
double
high,
/*
Auto fit text into bounding box.
*/
- 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)
- break;
- }
- image->columns=width;
- }
- 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)
- break;
- }
- image->rows=height;
- }
for ( ; ; draw_info->pointsize*=2.0)
{
(void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",