]> granicus.if.org Git - imagemagick/commitdiff
Respect gravity when rendering text (e.g. convert -gravity center my.txt ...)
authorCristy <urban-warrior@imagemagick.org>
Tue, 22 Mar 2016 17:02:52 +0000 (13:02 -0400)
committerCristy <urban-warrior@imagemagick.org>
Tue, 22 Mar 2016 17:02:52 +0000 (13:02 -0400)
coders/txt.c

index 85e6c1a571ad90f7f73bc5c4d685fb73038a87aa..3740e9fc7d7d73503031b9f4fbb5e30ef0efdd9f 100644 (file)
@@ -251,15 +251,15 @@ static Image *ReadTEXTImage(const ImageInfo *image_info,Image *image,
   (void) SetImageBackgroundColor(image,exception);
   draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);
   (void) CloneString(&draw_info->text,image_info->filename);
-  (void) FormatLocaleString(geometry,MagickPathExtent,"0x0%+ld%+ld",(long) page.x,
-    (long) page.y);
+  (void) FormatLocaleString(geometry,MagickPathExtent,"%lux%lu%+ld%+ld",
+    image->columns,image->rows,(long) page.x,(long) page.y);
   (void) CloneString(&draw_info->geometry,geometry);
   status=GetTypeMetrics(image,draw_info,&metrics,exception);
   if (status == MagickFalse)
     ThrowReaderException(TypeError,"UnableToGetTypeMetrics");
   page.y=(ssize_t) ceil((double) page.y+metrics.ascent-0.5);
-  (void) FormatLocaleString(geometry,MagickPathExtent,"0x0%+ld%+ld",(long) page.x,
-    (long) page.y);
+  (void) FormatLocaleString(geometry,MagickPathExtent,"%lux%lu%+ld%+ld",
+    image->columns,image->rows,(long) page.x,(long) page.y);
   (void) CloneString(&draw_info->geometry,geometry);
   (void) CopyMagickString(filename,image_info->filename,MagickPathExtent);
   if (*draw_info->text != '\0')
@@ -275,7 +275,8 @@ static Image *ReadTEXTImage(const ImageInfo *image_info,Image *image,
     offset+=(ssize_t) (metrics.ascent-metrics.descent);
     if (image->previous == (Image *) NULL)
       {
-        status=SetImageProgress(image,LoadImageTag,offset,image->rows);
+        status=SetImageProgress(image,LoadImageTag,(MagickOffsetType) offset,
+          image->rows);
         if (status == MagickFalse)
           break;
       }
@@ -371,9 +372,7 @@ static Image *ReadTXTImage(const ImageInfo *image_info,ExceptionInfo *exception)
     *image;
 
   long
-    type,
     x_offset,
-    y,
     y_offset;
 
   PixelInfo
@@ -393,7 +392,9 @@ static Image *ReadTXTImage(const ImageInfo *image_info,ExceptionInfo *exception)
     *q;
 
   ssize_t
-    count;
+    count,
+    type,
+    y;
 
   unsigned long
     depth,
@@ -532,12 +533,18 @@ static Image *ReadTXTImage(const ImageInfo *image_info,ExceptionInfo *exception)
             green+=(range+1)/2.0;
             blue+=(range+1)/2.0;
           }
-        pixel.red=ScaleAnyToQuantum((QuantumAny) (red+0.5),range);
-        pixel.green=ScaleAnyToQuantum((QuantumAny) (green+0.5),range);
-        pixel.blue=ScaleAnyToQuantum((QuantumAny) (blue+0.5),range);
-        pixel.black=ScaleAnyToQuantum((QuantumAny) (black+0.5),range);
-        pixel.alpha=ScaleAnyToQuantum((QuantumAny) (alpha+0.5),range);
-        q=GetAuthenticPixels(image,x_offset,y_offset,1,1,exception);
+        pixel.red=(MagickRealType) ScaleAnyToQuantum((QuantumAny) (red+0.5),
+          range);
+        pixel.green=(MagickRealType) ScaleAnyToQuantum((QuantumAny) (green+0.5),
+          range);
+        pixel.blue=(MagickRealType) ScaleAnyToQuantum((QuantumAny) (blue+0.5),
+          range);
+        pixel.black=(MagickRealType) ScaleAnyToQuantum((QuantumAny) (black+0.5),
+          range);
+        pixel.alpha=(MagickRealType) ScaleAnyToQuantum((QuantumAny) (alpha+0.5),
+          range);
+        q=GetAuthenticPixels(image,(ssize_t) x_offset,(ssize_t) y_offset,1,1,
+          exception);
         if (q == (Quantum *) NULL)
           continue;
         SetPixelViaPixelInfo(image,&pixel,q);
@@ -728,7 +735,7 @@ static MagickBooleanType WriteTXTImage(const ImageInfo *image_info,Image *image,
         MagickFalse,value);
     if (LocaleCompare(image_info->magick,"SPARSE-COLOR") != 0)
       {
-        ssize_t
+        size_t
           depth;
 
         depth=compliance == SVGCompliance ? image->depth :