+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.
*/
(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);
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)
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));
/*
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;
"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);