}
}
else
- if (cache_info->length != length)
+ if (cache_info->length < length)
{
RelinquishStreamPixels(cache_info);
cache_info->length=length;
assert(exception != (ExceptionInfo *) NULL);
read_info=CloneImageInfo(image_info);
stream_info->image_info=image_info;
+ stream_info->quantum_info=AcquireQuantumInfo(image_info,(Image *) NULL);
stream_info->exception=exception;
read_info->client_data=(void *) stream_info;
image=ReadStream(read_info,&WriteStreamImage,exception);
read_info=DestroyImageInfo(read_info);
+ stream_info->quantum_info=DestroyQuantumInfo(stream_info->quantum_info)
stream_info->quantum_info=AcquireQuantumInfo(image_info,image);
if (stream_info->quantum_info == (QuantumInfo *) NULL)
image=DestroyImage(image);
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;
- if ((width >= (image->columns << 1)) || (height >= (image->rows << 1)))
- break;
+ if ((image->columns != 0) && (image->rows != 0))
+ {
+ if ((width > image->columns) && (height > image->rows))
+ break;
+ }
+ else
+ if (((image->columns != 0) && (width > image->columns)) ||
+ ((image->rows != 0) && (height > image->rows)))
+ break;
}
high=draw_info->pointsize;
for (low=1.0; (high-low) > 1.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))
- low=draw_info->pointsize+1.0;
+ if ((image->columns != 0) && (image->rows != 0))
+ {
+ if ((width <= image->columns) && (height <= image->rows))
+ low=draw_info->pointsize+1.0;
+ else
+ high=draw_info->pointsize-1.0;
+ }
else
- high=draw_info->pointsize-1.0;
- }
- for (draw_info->pointsize=(low+high)/2.0; (high-low) > 1.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--;
+ 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;
}
- draw_info->pointsize--;
+ draw_info->pointsize=(low+high)/2.0;
}
(void) CloneString(&draw_info->text,caption);
i=FormatMagickCaption(image,draw_info,MagickFalse,&metrics,&caption,
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 (((image->columns != 0) && (width >= image->columns)) ||
- ((image->rows != 0) && (height >= image->rows)))
- break;
- if (((image->columns != 0) && (width >= (2*image->columns))) ||
- ((image->rows != 0) && (height >= (2*image->rows))))
- break;
+ if ((image->columns != 0) && (image->rows != 0))
+ {
+ if ((width > image->columns) && (height > image->rows))
+ break;
+ }
+ else
+ if (((image->columns != 0) && (width > image->columns)) ||
+ ((image->rows != 0) && (height > image->rows)))
+ break;
}
high=draw_info->pointsize;
for (low=1.0; (high-low) > 1.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 (((image->columns != 0) && (width < image->columns)) ||
- ((image->rows != 0) && (height < image->rows)))
- low=draw_info->pointsize+1.0;
+ if ((image->columns != 0) && (image->rows != 0))
+ {
+ if ((width <= image->columns) && (height <= image->rows))
+ low=draw_info->pointsize+1.0;
+ else
+ high=draw_info->pointsize-1.0;
+ }
else
- high=draw_info->pointsize-1.0;
- }
- for (draw_info->pointsize=(low+high)/2.0; (high-low) > 1.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 (((image->columns != 0) && (width < image->columns)) ||
- ((image->rows != 0) && (height < image->rows)))
- break;
- draw_info->pointsize--;
+ 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;
}
- draw_info->pointsize--;
+ draw_info->pointsize=(low+high)/2.0;
}
status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);
if (status == MagickFalse)