Current File : //kunden/kunden/proc/self/root/usr/include/GraphicsMagick/magick/render.h |
/*
Copyright (C) 2003 - 2020 GraphicsMagick Group
Copyright (C) 2002 ImageMagick Studio
This program is covered by multiple licenses, which are described in
Copyright.txt. You should have received a copy of Copyright.txt with this
package; otherwise see http://www.graphicsmagick.org/www/Copyright.html.
Drawing methods.
*/
#ifndef _MAGICK_RENDER_H
#define _MAGICK_RENDER_H
#include "magick/type.h"
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
/*
Enum declarations.
*/
typedef enum
{
UndefinedAlign,
LeftAlign,
CenterAlign,
RightAlign
} AlignType;
typedef enum
{
UserSpace,
UserSpaceOnUse,
ObjectBoundingBox
} ClipPathUnits;
typedef enum
{
NoDecoration,
UnderlineDecoration,
OverlineDecoration,
LineThroughDecoration
} DecorationType;
typedef enum
{
UndefinedRule,
#undef EvenOddRule
EvenOddRule,
NonZeroRule
} FillRule;
typedef enum
{
UndefinedGradient,
LinearGradient,
RadialGradient
} GradientType;
typedef enum
{
UndefinedCap,
ButtCap,
RoundCap,
SquareCap
} LineCap;
typedef enum
{
UndefinedJoin,
MiterJoin,
RoundJoin,
BevelJoin
} LineJoin;
typedef enum
{
PointMethod = 0,
ReplaceMethod,
FloodfillMethod,
FillToBorderMethod,
ResetMethod
} PaintMethod;
typedef enum
{
UndefinedPrimitive = 0,
PointPrimitive,
LinePrimitive,
RectanglePrimitive,
RoundRectanglePrimitive,
ArcPrimitive,
EllipsePrimitive,
CirclePrimitive,
PolylinePrimitive,
PolygonPrimitive,
BezierPrimitive,
ColorPrimitive,
MattePrimitive,
TextPrimitive,
ImagePrimitive,
PathPrimitive
} PrimitiveType;
typedef enum
{
UndefinedReference,
GradientReference
} ReferenceType;
typedef enum
{
UndefinedSpread,
PadSpread,
ReflectSpead,
RepeatSpread
} SpreadMethod;
/*
Typedef declarations.
*/
typedef struct _GradientInfo
{
GradientType
type;
PixelPacket
color;
SegmentInfo
stop;
unsigned long
length;
SpreadMethod
spread;
unsigned long
signature;
struct _GradientInfo
*previous,
*next;
} GradientInfo;
typedef struct _ElementReference
{
char
*id;
ReferenceType
type;
GradientInfo
gradient;
unsigned long
signature;
struct _ElementReference
*previous,
*next;
} ElementReference;
struct _DrawInfoExtra; /* forward decl.; see member "extra" below */
typedef struct _DrawInfo
{
char
*primitive,
*geometry;
AffineMatrix
affine;
GravityType
gravity;
PixelPacket
fill,
stroke;
double
stroke_width;
GradientInfo
gradient;
Image
*fill_pattern,
*tile,
*stroke_pattern;
unsigned int
stroke_antialias,
text_antialias;
FillRule
fill_rule;
LineCap
linecap;
LineJoin
linejoin;
unsigned long
miterlimit;
double
dash_offset;
DecorationType
decorate;
CompositeOperator
compose;
char
*text,
*font,
*family;
StyleType
style;
StretchType
stretch;
unsigned long
weight;
char
*encoding;
double
pointsize;
char
*density;
AlignType
align;
PixelPacket
undercolor,
border_color;
char
*server_name;
double
*dash_pattern; /* Terminated by value 0.0 (i.e. < MagickEpsilon)*/
#if 0
char
*clip_path;
#endif
/*
Allow for expansion of DrawInfo without increasing its size. The
internals are defined only in render.c. Clients outside of render.c
can access the internals via the provided access functions (see below).
This location in DrawInfo used to be occupied by char *clip_path. The
clip_path member now lives in _DrawInfoExtra.
*/
struct _DrawInfoExtra
*extra;
SegmentInfo
bounds;
ClipPathUnits
clip_units;
Quantum
opacity;
unsigned int
render,
/*
Bit fields in flags:
Bit 0: should this DrawInfo should be drawn as:
0: normal (original behavior)
1: SVG compliant
Bit 1: is the DrawInfo a clipping path:
0: is not a clipping path
1: is a clipping path
Access to these bits should be through functions (defined in render.c):
IsDrawInfoClippingPath()
IsDrawInfoSVGCompliant()
IsDrawInfoSVGCompliantClippingPath()
SetDrawInfoClippingPath()
SetDrawInfoSVGCompliant()
At the present time the SVG compliance bit only affects how clipping paths are drawn.
*/
flags; /* previously "unused1" */
ElementReference
element_reference;
unsigned long
signature;
} DrawInfo;
typedef struct _PointInfo
{
double
x,
y;
} PointInfo;
#if defined(MAGICK_IMPLEMENTATION)
# include "magick/render-private.h"
#endif /* if defined(MAGICK_IMPLEMENTATION) */
typedef struct _TypeMetric
{
PointInfo
pixels_per_em;
double
ascent,
descent,
width,
height,
max_advance;
SegmentInfo
bounds;
double
underline_position,
underline_thickness;
} TypeMetric;
/*
Method declarations.
*/
extern MagickExport DrawInfo
*CloneDrawInfo(const ImageInfo *,const DrawInfo *);
extern MagickExport MagickPassFail
AnnotateImage(Image *,const DrawInfo *),
DrawAffineImage(Image *,const Image *,const AffineMatrix *),
DrawClipPath(Image *,const DrawInfo *,const char *),
DrawImage(Image *,const DrawInfo *),
DrawPatternPath(Image *,const DrawInfo *,const char *,Image **),
GetTypeMetrics(Image *,const DrawInfo *,TypeMetric *);
extern MagickExport void
DestroyDrawInfo(DrawInfo *),
GetDrawInfo(const ImageInfo *,DrawInfo *);
/* provide public access to the clip_path member of DrawInfo */
extern MagickExport char
**DrawInfoGetClipPath(const DrawInfo *) MAGICK_FUNC_PURE;
/* provide public access to the composite_path member of DrawInfo */
extern MagickExport char
**DrawInfoGetCompositePath(const DrawInfo *) MAGICK_FUNC_PURE;
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
#endif /* _MAGICK_RENDER_H */
/*
* Local Variables:
* mode: c
* c-basic-offset: 2
* fill-column: 78
* End:
*/