double
angle,
coordinates,
+ cursor,
factor,
primitive_extent;
}
token=AcquireString(primitive);
extent=strlen(token)+MagickPathExtent;
+ cursor=0.0;
defsDepth=0;
symbolDepth=0;
macros=GetMVGMacros(primitive);
if (LocaleCompare("text",keyword) == 0)
{
primitive_type=TextPrimitive;
+ affine.tx+=cursor;
break;
}
if (LocaleCompare("text-align",keyword) == 0)
}
case TextPrimitive:
{
+ DrawInfo
+ *clone_info;
+
+ TypeMetric
+ metrics;
+
if (primitive_info[j].coordinates != 1)
{
status=MagickFalse;
if (*token != ',')
GetNextToken(q,&q,extent,token);
primitive_info[j].text=AcquireString(token);
+ /*
+ Compute text cursor offset.
+ */
+ clone_info=CloneDrawInfo((ImageInfo *) NULL,graphic_context[n]);
+ if (clone_info->density != (char *) NULL)
+ clone_info->density=DestroyString(clone_info->density);
+ clone_info->render=MagickFalse;
+ clone_info->text=AcquireString(token);
+ (void) ConcatenateString(&clone_info->text," ");
+ status&=GetTypeMetrics(image,clone_info,&metrics,exception);
+ clone_info=DestroyDrawInfo(clone_info);
+ cursor+=metrics.width;
break;
}
case ImagePrimitive:
{
if (*svg_info->text != '\0')
{
- DrawInfo
- *draw_info;
-
- TypeMetric
- metrics;
-
char
*text;
svg_info->bounds.x-svg_info->center.x,svg_info->bounds.y-
svg_info->center.y,text);
text=DestroyString(text);
- draw_info=CloneDrawInfo(svg_info->image_info,(DrawInfo *) NULL);
- draw_info->pointsize=svg_info->pointsize;
- draw_info->text=AcquireString(svg_info->text);
- (void) ConcatenateString(&draw_info->text," ");
- (void) GetTypeMetrics(svg_info->image,draw_info,
- &metrics,svg_info->exception);
- svg_info->bounds.x+=metrics.width;
- draw_info=DestroyDrawInfo(draw_info);
*svg_info->text='\0';
}
PushGraphicContext(id);
{
if (*svg_info->text != '\0')
{
- DrawInfo
- *draw_info;
-
- TypeMetric
- metrics;
-
char
*text;
svg_info->bounds.x-svg_info->center.x,svg_info->bounds.y-
svg_info->center.y,text);
text=DestroyString(text);
- draw_info=CloneDrawInfo(svg_info->image_info,(DrawInfo *) NULL);
- draw_info->pointsize=svg_info->pointsize;
- draw_info->text=AcquireString(svg_info->text);
- (void) ConcatenateString(&draw_info->text," ");
- (void) GetTypeMetrics(svg_info->image,draw_info,&metrics,
- svg_info->exception);
- svg_info->bounds.x+=metrics.width;
- draw_info=DestroyDrawInfo(draw_info);
*svg_info->text='\0';
}
(void) FormatLocaleFile(svg_info->file,"pop graphic-context\n");