]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Thu, 14 Mar 2013 13:35:37 +0000 (13:35 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Thu, 14 Mar 2013 13:35:37 +0000 (13:35 +0000)
coders/caption.c
coders/label.c

index 33081cbd20c883693890fb8859875559a0082be1..b6a00318ddca7e277bb4fbee4eccc5cace6fea4a 100644 (file)
@@ -131,8 +131,6 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info,
   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.
@@ -155,8 +153,41 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info,
   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;
@@ -168,40 +199,6 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info,
       /*
         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);
index 3df2cab71e8f7b85048b2a6d4cf644f67cec7777..672d80728ea77546c266527c098d8c97d2e1f114 100644 (file)
@@ -130,8 +130,41 @@ static Image *ReadLABELImage(const ImageInfo *image_info,
   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,
@@ -140,40 +173,6 @@ static Image *ReadLABELImage(const ImageInfo *image_info,
       /*
         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",