]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 11 May 2013 01:05:45 +0000 (01:05 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 11 May 2013 01:05:45 +0000 (01:05 +0000)
MagickCore/stream.c
coders/caption.c
coders/label.c

index d6dc3cfd3bd80dc3c6004a5b658206cfd8748727..a2ba2ba87573f8e0f7cff341a6e8b50c07579023 100644 (file)
@@ -756,7 +756,7 @@ static const Quantum *GetVirtualPixelStream(const Image *image,
         }
     }
   else
-    if (cache_info->length != length)
+    if (cache_info->length < length)
       {
         RelinquishStreamPixels(cache_info);
         cache_info->length=length;
@@ -1251,10 +1251,12 @@ MagickExport Image *StreamImage(const ImageInfo *image_info,
   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);
index 66d09c0a695000129aa7457cd8580651a5befc09..f7a15b5dd3ef7e26dbb0afcc300f4db56d1d26dc 100644 (file)
@@ -210,10 +210,15 @@ static Image *ReadCAPTIONImage(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))
-          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; )
@@ -231,30 +236,21 @@ static Image *ReadCAPTIONImage(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))
-          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,
index c2a9463e2d0079af10cf88cb3ffc4630f613809e..dcdfb4a807a2f9550598255b3571dc922be4713d 100644 (file)
@@ -156,12 +156,15 @@ 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 (((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; )
@@ -174,27 +177,21 @@ 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 (((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)