]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Fri, 3 Jun 2011 17:52:52 +0000 (17:52 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Fri, 3 Jun 2011 17:52:52 +0000 (17:52 +0000)
ChangeLog
coders/caption.c
coders/label.c
magick/annotate.c

index 5c28bd343625f08a74ae7c63d89ef5256d18565c..9548a4f5e1b02fd1ab4e7876a7347f9d741b1695 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2011-06-03  6.7.0-3 Cristy  <quetzlzacatenango@image...>
+  * Support -direction right-to-left for the label: and caption: coders.
+
 2011-06-03  6.7.0-3 Cristy  <quetzlzacatenango@image...>
   * New version 6.7.0-3.
 
index 3d2280e0d9fee722e81d1f8efd0d86a7fd5f0ca1..7d6006ccac0561ff632d2ec561ac54ad422a8b57 100644 (file)
@@ -207,14 +207,19 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info,
   */
   (void) CloneString(&draw_info->text,caption);
   status=GetMultilineTypeMetrics(image,draw_info,&metrics);
-  if (draw_info->gravity != UndefinedGravity)
+  if ((draw_info->gravity != UndefinedGravity) &&
+      (draw_info->direction != RightToLeftDirection))
     image->page.x=(ssize_t) (metrics.bounds.x1-draw_info->stroke_width/2.0);
   else
     {
       (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",
         -metrics.bounds.x1+draw_info->stroke_width/2.0,metrics.ascent+
         draw_info->stroke_width/2.0);
-      (void) CloneString(&draw_info->geometry,geometry);
+      if (draw_info->direction == RightToLeftDirection)
+        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",
+          image->columns-(metrics.bounds.x2+draw_info->stroke_width/2.0),
+          metrics.ascent+draw_info->stroke_width/2.0);
+      draw_info->geometry=AcquireString(geometry);
     }
   (void) AnnotateImage(image,draw_info);
   draw_info=DestroyDrawInfo(draw_info);
index 55886aeb65260787b6c362a0d43d420170671084..fed0dda020fdc1014d07306a3845847eaabac401 100644 (file)
@@ -170,13 +170,17 @@ static Image *ReadLABELImage(const ImageInfo *image_info,
   if (image->columns == 0)
     image->columns=(size_t) (metrics.width+draw_info->stroke_width+1.5);
   if (image->columns == 0)
-    image->columns=(size_t) (draw_info->pointsize+
-      draw_info->stroke_width+1.5);
-  if (draw_info->gravity == UndefinedGravity)
+    image->columns=(size_t) (draw_info->pointsize+draw_info->stroke_width+1.5);
+  if ((draw_info->gravity == UndefinedGravity) ||
+      (draw_info->direction == RightToLeftDirection))
     {
       (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",
         -metrics.bounds.x1+draw_info->stroke_width/2.0,metrics.ascent+
         draw_info->stroke_width/2.0);
+      if (draw_info->direction == RightToLeftDirection)
+        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",
+          image->columns-(metrics.bounds.x2+draw_info->stroke_width/2.0),
+          metrics.ascent+draw_info->stroke_width/2.0);
       draw_info->geometry=AcquireString(geometry);
     }
   if (image->rows == 0)
index cf912da4d5c1767b305520177c9901ba60e74976..328db51953bbc27756264a1ff25577cc07623826 100644 (file)
@@ -691,6 +691,7 @@ MagickExport MagickBooleanType GetMultilineTypeMetrics(Image *image,
   if (textlist == (char **) NULL)
     return(MagickFalse);
   annotate_info->render=MagickFalse;
+  annotate_info->direction=UndefinedDirection;
   (void) ResetMagickMemory(metrics,0,sizeof(*metrics));
   (void) ResetMagickMemory(&extent,0,sizeof(extent));
   /*
@@ -784,6 +785,7 @@ MagickExport MagickBooleanType GetTypeMetrics(Image *image,
   assert(draw_info->signature == MagickSignature);
   annotate_info=CloneDrawInfo((ImageInfo *) NULL,draw_info);
   annotate_info->render=MagickFalse;
+  annotate_info->direction=UndefinedDirection;
   (void) ResetMagickMemory(metrics,0,sizeof(*metrics));
   offset.x=0.0;
   offset.y=0.0;
@@ -795,8 +797,8 @@ MagickExport MagickBooleanType GetTypeMetrics(Image *image,
       "underline position: %g; underline thickness: %g",annotate_info->text,
       metrics->width,metrics->height,metrics->ascent,metrics->descent,
       metrics->max_advance,metrics->bounds.x1,metrics->bounds.y1,
-      metrics->bounds.x2,metrics->bounds.y2,metrics->origin.x,metrics->origin.y,
-      metrics->pixels_per_em.x,metrics->pixels_per_em.y,
+      metrics->bounds.x2,metrics->bounds.y2,metrics->origin.x,
+      metrics->origin.y,metrics->pixels_per_em.x,metrics->pixels_per_em.y,
       metrics->underline_position,metrics->underline_thickness);
   annotate_info=DestroyDrawInfo(annotate_info);
   return(status);