Home | History | Annotate | Download | only in MagickCore

Lines Matching defs:draw_info

212     *draw_info;
214 draw_info=(DrawInfo *) AcquireMagickMemory(sizeof(*draw_info));
215 if (draw_info == (DrawInfo *) NULL)
217 GetDrawInfo((ImageInfo *) NULL,draw_info);
218 return(draw_info);
233 % CloneDrawInfo() makes a copy of the given draw_info structure. If NULL
240 % const DrawInfo *draw_info)
246 % o draw_info: the draw info.
250 const DrawInfo *draw_info)
262 if (draw_info == (DrawInfo *) NULL)
266 (void) CloneString(&clone_info->primitive,draw_info->primitive);
267 if (draw_info->geometry != (char *) NULL)
268 (void) CloneString(&clone_info->geometry,draw_info->geometry);
269 clone_info->viewbox=draw_info->viewbox;
270 clone_info->affine=draw_info->affine;
271 clone_info->gravity=draw_info->gravity;
272 clone_info->fill=draw_info->fill;
273 clone_info->stroke=draw_info->stroke;
274 clone_info->stroke_width=draw_info->stroke_width;
275 if (draw_info->fill_pattern != (Image *) NULL)
276 clone_info->fill_pattern=CloneImage(draw_info->fill_pattern,0,0,MagickTrue,
278 if (draw_info->stroke_pattern != (Image *) NULL)
279 clone_info->stroke_pattern=CloneImage(draw_info->stroke_pattern,0,0,
281 clone_info->stroke_antialias=draw_info->stroke_antialias;
282 clone_info->text_antialias=draw_info->text_antialias;
283 clone_info->fill_rule=draw_info->fill_rule;
284 clone_info->linecap=draw_info->linecap;
285 clone_info->linejoin=draw_info->linejoin;
286 clone_info->miterlimit=draw_info->miterlimit;
287 clone_info->dash_offset=draw_info->dash_offset;
288 clone_info->decorate=draw_info->decorate;
289 clone_info->compose=draw_info->compose;
290 if (draw_info->text != (char *) NULL)
291 (void) CloneString(&clone_info->text,draw_info->text);
292 if (draw_info->font != (char *) NULL)
293 (void) CloneString(&clone_info->font,draw_info->font);
294 if (draw_info->metrics != (char *) NULL)
295 (void) CloneString(&clone_info->metrics,draw_info->metrics);
296 if (draw_info->family != (char *) NULL)
297 (void) CloneString(&clone_info->family,draw_info->family);
298 clone_info->style=draw_info->style;
299 clone_info->stretch=draw_info->stretch;
300 clone_info->weight=draw_info->weight;
301 if (draw_info->encoding != (char *) NULL)
302 (void) CloneString(&clone_info->encoding,draw_info->encoding);
303 clone_info->pointsize=draw_info->pointsize;
304 clone_info->kerning=draw_info->kerning;
305 clone_info->interline_spacing=draw_info->interline_spacing;
306 clone_info->interword_spacing=draw_info->interword_spacing;
307 clone_info->direction=draw_info->direction;
308 if (draw_info->density != (char *) NULL)
309 (void) CloneString(&clone_info->density,draw_info->density);
310 clone_info->align=draw_info->align;
311 clone_info->undercolor=draw_info->undercolor;
312 clone_info->border_color=draw_info->border_color;
313 if (draw_info->server_name != (char *) NULL)
314 (void) CloneString(&clone_info->server_name,draw_info->server_name);
315 if (draw_info->dash_pattern != (double *) NULL)
320 for (x=0; fabs(draw_info->dash_pattern[x]) >= DrawEpsilon; x++) ;
326 (void) CopyMagickMemory(clone_info->dash_pattern,draw_info->dash_pattern,
329 clone_info->gradient=draw_info->gradient;
330 if (draw_info->gradient.stops != (StopInfo *) NULL)
342 draw_info->gradient.stops,(size_t) number_stops*
345 if (draw_info->clip_mask != (char *) NULL)
346 (void) CloneString(&clone_info->clip_mask,draw_info->clip_mask);
347 clone_info->bounds=draw_info->bounds;
348 clone_info->clip_units=draw_info->clip_units;
349 clone_info->render=draw_info->render;
350 clone_info->fill_alpha=draw_info->fill_alpha;
351 clone_info->stroke_alpha=draw_info->stroke_alpha;
352 clone_info->element_reference=draw_info->element_reference;
375 % PolygonInfo *ConvertPathToPolygon(const DrawInfo *draw_info,
383 % o draw_info: Specifies a pointer to an DrawInfo structure.
688 % PathInfo *ConvertPrimitiveToPath(const DrawInfo *draw_info,
696 % o draw_info: a structure of type DrawInfo.
827 % DrawInfo *DestroyDrawInfo(DrawInfo *draw_info)
831 % o draw_info: the draw info.
834 MagickExport DrawInfo *DestroyDrawInfo(DrawInfo *draw_info)
836 if (draw_info->debug != MagickFalse)
838 assert(draw_info != (DrawInfo *) NULL);
839 assert(draw_info->signature == MagickCoreSignature);
840 if (draw_info->primitive != (char *) NULL)
841 draw_info->primitive=DestroyString(draw_info->primitive);
842 if (draw_info->text != (char *) NULL)
843 draw_info->text=DestroyString(draw_info->text);
844 if (draw_info->geometry != (char *) NULL)
845 draw_info->geometry=DestroyString(draw_info->geometry);
846 if (draw_info->fill_pattern != (Image *) NULL)
847 draw_info->fill_pattern=DestroyImage(draw_info->fill_pattern);
848 if (draw_info->stroke_pattern != (Image *) NULL)
849 draw_info->stroke_pattern=DestroyImage(draw_info->stroke_pattern);
850 if (draw_info->font != (char *) NULL)
851 draw_info->font=DestroyString(draw_info->font);
852 if (draw_info->metrics != (char *) NULL)
853 draw_info->metrics=DestroyString(draw_info->metrics);
854 if (draw_info->family != (char *) NULL)
855 draw_info->family=DestroyString(draw_info->family);
856 if (draw_info->encoding != (char *) NULL)
857 draw_info->encoding=DestroyString(draw_info->encoding);
858 if (draw_info->density != (char *) NULL)
859 draw_info->density=DestroyString(draw_info->density);
860 if (draw_info->server_name != (char *) NULL)
861 draw_info->server_name=(char *)
862 RelinquishMagickMemory(draw_info->server_name);
863 if (draw_info->dash_pattern != (double *) NULL)
864 draw_info->dash_pattern=(double *) RelinquishMagickMemory(
865 draw_info->dash_pattern);
866 if (draw_info->gradient.stops != (StopInfo *) NULL)
867 draw_info->gradient.stops=(StopInfo *) RelinquishMagickMemory(
868 draw_info->gradient.stops);
869 if (draw_info->clip_mask != (char *) NULL)
870 draw_info->clip_mask=DestroyString(draw_info->clip_mask);
871 draw_info->signature=(~MagickCoreSignature);
872 draw_info=(DrawInfo *) RelinquishMagickMemory(draw_info);
873 return(draw_info);
1252 % void DrawBoundingRectangles(Image *image,const DrawInfo *draw_info,
1259 % o draw_info: the draw info.
1266 static void DrawBoundingRectangles(Image *image,const DrawInfo *draw_info,
1292 clone_info=CloneDrawInfo((ImageInfo *) NULL,draw_info);
1394 % MagickBooleanType DrawClipPath(Image *image,const DrawInfo *draw_info,
1401 % o draw_info: the draw info.
1409 const DrawInfo *draw_info,const char *name,ExceptionInfo *exception)
1430 assert(draw_info != (const DrawInfo *) NULL);
1444 draw_info->clip_mask);
1445 clone_info=CloneDrawInfo((ImageInfo *) NULL,draw_info);
1477 % MagickBooleanType DrawDashPolygon(const DrawInfo *draw_info,
1483 % o draw_info: the draw info.
1492 static MagickBooleanType DrawDashPolygon(const DrawInfo *draw_info,
1525 assert(draw_info != (const DrawInfo *) NULL);
1534 clone_info=CloneDrawInfo((ImageInfo *) NULL,draw_info);
1537 scale=ExpandAffine(&draw_info->affine);
1538 length=scale*(draw_info->dash_pattern[0]-0.5);
1539 offset=fabs(draw_info->dash_offset) >= DrawEpsilon ?
1540 scale*draw_info->dash_offset : 0.0;
1544 if (draw_info->dash_pattern[n] <= 0.0)
1546 length=scale*(draw_info->dash_pattern[n]+(n == 0 ? -0.5 : 0.5));
1551 length=scale*(draw_info->dash_pattern[n]+0.5);
1574 if (fabs(draw_info->dash_pattern[n]) < DrawEpsilon)
1576 length=scale*(draw_info->dash_pattern[n]+(n == 0 ? -0.5 : 0.5));
1606 if (fabs(draw_info->dash_pattern[n]) < DrawEpsilon)
1608 length=scale*(draw_info->dash_pattern[n]+(n == 0 ? -0.5 : 0.5));
1655 % MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info,
1662 % o draw_info: the draw info.
1687 MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info,
1763 assert(draw_info != (DrawInfo *) NULL);
1764 assert(draw_info->signature == MagickCoreSignature);
1767 if ((draw_info->primitive == (char *) NULL) ||
1768 (*draw_info->primitive == '\0'))
1772 if (*draw_info->primitive != '@')
1773 primitive=AcquireString(draw_info->primitive);
1775 primitive=FileToString(draw_info->primitive+1,~0UL,exception);
1806 graphic_context[n]=CloneDrawInfo((ImageInfo *) NULL,draw_info);
1960 affine.sx=draw_info->bounds.x2;
1961 affine.sy=draw_info->bounds.y2;
1962 affine.tx=draw_info->bounds.x1;
1963 affine.ty=draw_info->bounds.y1;
2046 (void) DrawPatternPath(image,draw_info,token,
2609 (void) DrawPatternPath(image,draw_info,token,
2890 if (draw_info->gradient.type == RadialGradient)
3308 % const DrawInfo *draw_info,ExceptionInfo *exception)
3314 % o draw_info: the draw info.
3392 const DrawInfo *draw_info,ExceptionInfo *exception)
3428 assert(draw_info != (const DrawInfo *) NULL);
3429 gradient=(&draw_info->gradient);
3639 % MagickBooleanType DrawPatternPath(Image *image,const DrawInfo *draw_info,
3646 % o draw_info: the draw info.
3656 const DrawInfo *draw_info,const char *name,Image **pattern,
3680 assert(draw_info != (const DrawInfo *) NULL);
3702 clone_info=CloneDrawInfo((ImageInfo *) NULL,draw_info);
3735 % const DrawInfo *draw_info,const PrimitiveInfo *primitive_info,
3742 % o draw_info: the draw info.
3969 const DrawInfo *draw_info,const PrimitiveInfo *primitive_info,
4006 assert(draw_info != (DrawInfo *) NULL);
4007 assert(draw_info->signature == MagickCoreSignature);
4016 DrawBoundingRectangles(image,draw_info,polygon_info[0],exception);
4022 mid=ExpandAffine(&draw_info->affine)*draw_info->stroke_width/2.0;
4098 GetFillColor(draw_info,x-start_x,y-start_y,&pixel,exception);
4164 fill_alpha=GetFillAlpha(polygon_info[id],mid,fill,draw_info->fill_rule,
4166 if (draw_info->stroke_antialias == MagickFalse)
4171 GetFillColor(draw_info,x-start_x,y-start_y,&fill_color,exception);
4175 GetStrokeColor(draw_info,x-start_x,y-start_y,&stroke_color,exception);
4207 % MagickBooleanType DrawPrimitive(Image *image,const DrawInfo *draw_info,
4214 % o draw_info: the draw info.
4325 const DrawInfo *draw_info,const PrimitiveInfo *primitive_info,
4346 " affine: %g,%g,%g,%g,%g,%g",draw_info->affine.sx,
4347 draw_info->affine.rx,draw_info->affine.ry,draw_info->affine.sy,
4348 draw_info->affine.tx,draw_info->affine.ty);
4351 ((IsPixelInfoGray(&draw_info->fill) == MagickFalse) ||
4352 (IsPixelInfoGray(&draw_info->stroke) == MagickFalse)))
4378 GetFillColor(draw_info,x,y,&pixel,exception);
4412 GetFillColor(draw_info,x,y,&pixel,exception);
4435 target.red=(double) draw_info->border_color.red;
4436 target.green=(double) draw_info->border_color.green;
4437 target.blue=(double) draw_info->border_color.blue;
4440 status&=FloodfillPaintImage(image,draw_info,&target,x,y,
4465 GetFillColor(draw_info,x,y,&pixel,exception);
4495 GetFillColor(draw_info,x,y,&pixel,exception);
4528 GetFillColor(draw_info,x,y,&pixel,exception);
4548 target.red=(double) draw_info->border_color.red;
4549 target.green=(double) draw_info->border_color.green;
4550 target.blue=(double) draw_info->border_color.blue;
4552 status&=FloodfillPaintImage(image,draw_info,&target,x,y,
4577 GetFillColor(draw_info,x,y,&pixel,exception);
4645 if (draw_info->alpha != OpaqueAlpha)
4646 (void) SetImageAlpha(composite_image,draw_info->alpha,exception);
4648 image->gravity=draw_info->gravity;
4655 affine=draw_info->affine;
4659 if (draw_info->compose == OverCompositeOp)
4662 (void) CompositeImage(image,composite_image,draw_info->compose,
4682 GetFillColor(draw_info,x,y,&fill_color,exception);
4698 clone_info=CloneDrawInfo((ImageInfo *) NULL,draw_info);
4718 scale=ExpandAffine(&draw_info->affine);
4719 if ((draw_info->dash_pattern != (double *) NULL) &&
4720 (fabs(draw_info->dash_pattern[0]) >= DrawEpsilon) &&
4721 (fabs(scale*draw_info->stroke_width) >= DrawEpsilon) &&
4722 (draw_info->stroke.alpha != (Quantum) TransparentAlpha))
4727 clone_info=CloneDrawInfo((ImageInfo *) NULL,draw_info);
4733 (void) DrawDashPolygon(draw_info,primitive_info,image,exception);
4736 mid=ExpandAffine(&draw_info->affine)*draw_info->stroke_width/2.0;
4738 ((draw_info->stroke.alpha != (Quantum) TransparentAlpha) ||
4739 (draw_info->stroke_pattern != (Image *) NULL)))
4754 (draw_info->linejoin == RoundJoin)) ||
4757 (void) DrawPolygonPrimitive(image,draw_info,primitive_info,
4761 if (draw_info->linecap == RoundCap)
4763 (void) DrawPolygonPrimitive(image,draw_info,primitive_info,
4767 clone_info=CloneDrawInfo((ImageInfo *) NULL,draw_info);
4773 status&=DrawStrokePolygon(image,draw_info,primitive_info,exception);
4776 status&=DrawPolygonPrimitive(image,draw_info,primitive_info,exception);
4804 % const DrawInfo *draw_info,const PrimitiveInfo *primitive_info)
4810 % o draw_info: the draw info.
4817 static void DrawRoundLinecap(Image *image,const DrawInfo *draw_info,
4834 (void) DrawPolygonPrimitive(image,draw_info,linecap,exception);
4838 const DrawInfo *draw_info,const PrimitiveInfo *primitive_info,
4863 clone_info=CloneDrawInfo((ImageInfo *) NULL,draw_info);
4864 clone_info->fill=draw_info->stroke;
4876 stroke_polygon=TraceStrokePolygon(draw_info,p);
4884 if ((draw_info->linecap == RoundCap) && (closed_path == MagickFalse))
4886 DrawRoundLinecap(image,draw_info,p,exception);
4887 DrawRoundLinecap(image,draw_info,q,exception);
4942 % GetDrawInfo() initializes draw_info to default values from image_info.
4946 % void GetDrawInfo(const ImageInfo *image_info,DrawInfo *draw_info)
4952 % o draw_info: the draw info.
4955 MagickExport void GetDrawInfo(const ImageInfo *image_info,DrawInfo *draw_info)
4973 assert(draw_info != (DrawInfo *) NULL);
4974 (void) ResetMagickMemory(draw_info,0,sizeof(*draw_info));
4976 GetAffineMatrix(&draw_info->affine);
4978 (void) QueryColorCompliance("#000F",AllCompliance,&draw_info->fill,
4980 (void) QueryColorCompliance("#0000",AllCompliance,&draw_info->stroke,
4982 draw_info->stroke_width=1.0;
4983 draw_info->fill_rule=EvenOddRule;
4984 draw_info->fill_alpha=OpaqueAlpha;
4985 draw_info->stroke_alpha=OpaqueAlpha;
4986 draw_info->linecap=ButtCap;
4987 draw_info->linejoin=MiterJoin;
4988 draw_info->miterlimit=10;
4989 draw_info->decorate=NoDecoration;
4990 draw_info->pointsize=12.0;
4991 draw_info->undercolor.alpha=(MagickRealType) TransparentAlpha;
4992 draw_info->compose=OverCompositeOp;
4993 draw_info->render=MagickTrue;
4994 draw_info->debug=IsEventLogging();
4995 draw_info->stroke_antialias=clone_info->antialias;
4997 draw_info->font=AcquireString(clone_info->font);
4999 draw_info->density=AcquireString(clone_info->density);
5000 draw_info->text_antialias=clone_info->antialias;
5002 draw_info->pointsize=clone_info->pointsize;
5003 draw_info->border_color=clone_info->border_color;
5005 draw_info->server_name=AcquireString(clone_info->server_name);
5008 draw_info->direction=(DirectionType) ParseCommandOption(
5011 draw_info->direction=UndefinedDirection;
5014 (void) CloneString(&draw_info->encoding,option);
5017 (void) CloneString(&draw_info->family,option);
5020 (void) QueryColorCompliance(option,AllCompliance,&draw_info->fill,
5024 draw_info->gravity=(GravityType) ParseCommandOption(MagickGravityOptions,
5028 draw_info->interline_spacing=StringToDouble(option,&next_token);
5031 draw_info->interword_spacing=StringToDouble(option,&next_token);
5034 draw_info->kerning=StringToDouble(option,&next_token);
5037 (void) QueryColorCompliance(option,AllCompliance,&draw_info->stroke,
5041 draw_info->stroke_width=StringToDouble(option,&next_token);
5044 draw_info->style=(StyleType) ParseCommandOption(MagickStyleOptions,
5048 (void) QueryColorCompliance(option,AllCompliance,&draw_info->undercolor,
5059 draw_info->weight=(size_t) weight;
5062 draw_info->signature=MagickCoreSignature;
5971 static PrimitiveInfo *TraceStrokePolygon(const DrawInfo *draw_info,
6043 if ((draw_info->linejoin == RoundJoin) ||
6044 ((draw_info->linejoin == MiterJoin) && (closed_path != MagickFalse)))
6086 mid=ExpandAffine(&draw_info->affine)*draw_info->stroke_width/2.0;
6087 miterlimit=(double) (draw_info->miterlimit*draw_info->miterlimit*
6089 if ((draw_info->linecap == SquareCap) && (closed_path == MagickFalse))
6221 switch (draw_info->linejoin)
6293 switch (draw_info->linejoin)