if (draw_info == (DrawInfo *) NULL)
return(clone_info);
exception=AcquireExceptionInfo();
- (void) CloneString(&clone_info->primitive,draw_info->primitive);
- (void) CloneString(&clone_info->geometry,draw_info->geometry);
+ if (clone_info->primitive != (char *) NULL)
+ (void) CloneString(&clone_info->primitive,draw_info->primitive);
+ if (draw_info->geometry != (char *) NULL)
+ (void) CloneString(&clone_info->geometry,draw_info->geometry);
clone_info->viewbox=draw_info->viewbox;
clone_info->affine=draw_info->affine;
clone_info->gravity=draw_info->gravity;
clone_info->dash_offset=draw_info->dash_offset;
clone_info->decorate=draw_info->decorate;
clone_info->compose=draw_info->compose;
- (void) CloneString(&clone_info->text,draw_info->text);
- (void) CloneString(&clone_info->font,draw_info->font);
- (void) CloneString(&clone_info->metrics,draw_info->metrics);
- (void) CloneString(&clone_info->family,draw_info->family);
+ if (draw_info->text != (char *) NULL)
+ (void) CloneString(&clone_info->text,draw_info->text);
+ if (draw_info->font != (char *) NULL)
+ (void) CloneString(&clone_info->font,draw_info->font);
+ if (draw_info->metrics != (char *) NULL)
+ (void) CloneString(&clone_info->metrics,draw_info->metrics);
+ if (draw_info->family != (char *) NULL)
+ (void) CloneString(&clone_info->family,draw_info->family);
clone_info->style=draw_info->style;
clone_info->stretch=draw_info->stretch;
clone_info->weight=draw_info->weight;
- (void) CloneString(&clone_info->encoding,draw_info->encoding);
+ if (draw_info->encoding != (char *) NULL)
+ (void) CloneString(&clone_info->encoding,draw_info->encoding);
clone_info->pointsize=draw_info->pointsize;
clone_info->kerning=draw_info->kerning;
clone_info->interline_spacing=draw_info->interline_spacing;
clone_info->interword_spacing=draw_info->interword_spacing;
clone_info->direction=draw_info->direction;
- (void) CloneString(&clone_info->density,draw_info->density);
+ if (draw_info->density != (char *) NULL)
+ (void) CloneString(&clone_info->density,draw_info->density);
clone_info->align=draw_info->align;
clone_info->undercolor=draw_info->undercolor;
clone_info->border_color=draw_info->border_color;
- (void) CloneString(&clone_info->server_name,draw_info->server_name);
+ if (draw_info->server_name != (char *) NULL)
+ (void) CloneString(&clone_info->server_name,draw_info->server_name);
if (draw_info->dash_pattern != (double *) NULL)
{
register ssize_t
draw_info->gradient.stops,(size_t) number_stops*
sizeof(*clone_info->gradient.stops));
}
- (void) CloneString(&clone_info->clip_mask,draw_info->clip_mask);
+ if (draw_info->clip_mask != (char *) NULL)
+ (void) CloneString(&clone_info->clip_mask,draw_info->clip_mask);
clone_info->bounds=draw_info->bounds;
clone_info->clip_units=draw_info->clip_units;
clone_info->render=draw_info->render;
ExceptionInfo
*exception;
+ ImageInfo
+ *clone_info;
+
/*
Initialize draw attributes.
*/
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
assert(draw_info != (DrawInfo *) NULL);
(void) ResetMagickMemory(draw_info,0,sizeof(*draw_info));
+ clone_info=CloneImageInfo(image_info);
GetAffineMatrix(&draw_info->affine);
exception=AcquireExceptionInfo();
(void) QueryColorCompliance("#000F",AllCompliance,&draw_info->fill,
draw_info->compose=OverCompositeOp;
draw_info->render=MagickTrue;
draw_info->debug=IsEventLogging();
- if (image_info != (ImageInfo *) NULL)
- {
- draw_info->stroke_antialias=image_info->antialias;
- if (image_info->font != (char *) NULL)
- draw_info->font=AcquireString(image_info->font);
- if (image_info->density != (char *) NULL)
- draw_info->density=AcquireString(image_info->density);
- draw_info->text_antialias=image_info->antialias;
- if (image_info->pointsize != 0.0)
- draw_info->pointsize=image_info->pointsize;
- draw_info->border_color=image_info->border_color;
- if (image_info->server_name != (char *) NULL)
- draw_info->server_name=AcquireString(image_info->server_name);
- option=GetImageOption(image_info,"encoding");
- if (option != (const char *) NULL)
- (void) CloneString(&draw_info->encoding,option);
- option=GetImageOption(image_info,"kerning");
- if (option != (const char *) NULL)
- draw_info->kerning=StringToDouble(option,(char **) NULL);
- option=GetImageOption(image_info,"interline-spacing");
- if (option != (const char *) NULL)
- draw_info->interline_spacing=StringToDouble(option,(char **) NULL);
- option=GetImageOption(image_info,"interword-spacing");
- if (option != (const char *) NULL)
- draw_info->interword_spacing=StringToDouble(option,(char **) NULL);
- option=GetImageOption(image_info,"direction");
- if (option != (const char *) NULL)
- draw_info->direction=(DirectionType) ParseCommandOption(
- MagickDirectionOptions,MagickFalse,option);
- else
- draw_info->direction=UndefinedDirection;
- option=GetImageOption(image_info,"fill");
- if (option != (const char *) NULL)
- (void) QueryColorCompliance(option,AllCompliance,&draw_info->fill,
- exception);
- option=GetImageOption(image_info,"stroke");
- if (option != (const char *) NULL)
- (void) QueryColorCompliance(option,AllCompliance,&draw_info->stroke,
- exception);
- option=GetImageOption(image_info,"strokewidth");
- if (option != (const char *) NULL)
- draw_info->stroke_width=StringToDouble(option,(char **) NULL);
- option=GetImageOption(image_info,"undercolor");
- if (option != (const char *) NULL)
- (void) QueryColorCompliance(option,AllCompliance,&draw_info->undercolor,
- exception);
- option=GetImageOption(image_info,"gravity");
- if (option != (const char *) NULL)
- draw_info->gravity=(GravityType) ParseCommandOption(
- MagickGravityOptions,MagickFalse,option);
- }
+ draw_info->stroke_antialias=clone_info->antialias;
+ if (clone_info->font != (char *) NULL)
+ draw_info->font=AcquireString(clone_info->font);
+ if (clone_info->density != (char *) NULL)
+ draw_info->density=AcquireString(clone_info->density);
+ draw_info->text_antialias=clone_info->antialias;
+ if (clone_info->pointsize != 0.0)
+ draw_info->pointsize=clone_info->pointsize;
+ draw_info->border_color=clone_info->border_color;
+ if (clone_info->server_name != (char *) NULL)
+ draw_info->server_name=AcquireString(clone_info->server_name);
+ option=GetImageOption(clone_info,"encoding");
+ if (option != (const char *) NULL)
+ (void) CloneString(&draw_info->encoding,option);
+ option=GetImageOption(clone_info,"kerning");
+ if (option != (const char *) NULL)
+ draw_info->kerning=StringToDouble(option,(char **) NULL);
+ option=GetImageOption(clone_info,"interline-spacing");
+ if (option != (const char *) NULL)
+ draw_info->interline_spacing=StringToDouble(option,(char **) NULL);
+ option=GetImageOption(clone_info,"interword-spacing");
+ if (option != (const char *) NULL)
+ draw_info->interword_spacing=StringToDouble(option,(char **) NULL);
+ option=GetImageOption(clone_info,"direction");
+ if (option != (const char *) NULL)
+ draw_info->direction=(DirectionType) ParseCommandOption(
+ MagickDirectionOptions,MagickFalse,option);
+ else
+ draw_info->direction=UndefinedDirection;
+ option=GetImageOption(clone_info,"fill");
+ if (option != (const char *) NULL)
+ (void) QueryColorCompliance(option,AllCompliance,&draw_info->fill,
+ exception);
+ option=GetImageOption(clone_info,"stroke");
+ if (option != (const char *) NULL)
+ (void) QueryColorCompliance(option,AllCompliance,&draw_info->stroke,
+ exception);
+ option=GetImageOption(clone_info,"strokewidth");
+ if (option != (const char *) NULL)
+ draw_info->stroke_width=StringToDouble(option,(char **) NULL);
+ option=GetImageOption(clone_info,"undercolor");
+ if (option != (const char *) NULL)
+ (void) QueryColorCompliance(option,AllCompliance,&draw_info->undercolor,
+ exception);
+ option=GetImageOption(clone_info,"gravity");
+ if (option != (const char *) NULL)
+ draw_info->gravity=(GravityType) ParseCommandOption(MagickGravityOptions,
+ MagickFalse,option);
exception=DestroyExceptionInfo(exception);
draw_info->signature=MagickSignature;
+ clone_info=DestroyImageInfo(clone_info);
}
\f
/*