00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _MAGICKCORE_DRAW_H
00019 #define _MAGICKCORE_DRAW_H
00020
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024
00025 #include "magick/geometry.h"
00026 #include "magick/image.h"
00027 #include "magick/pixel.h"
00028 #include "magick/type.h"
00029
00030 typedef enum
00031 {
00032 UndefinedAlign,
00033 LeftAlign,
00034 CenterAlign,
00035 RightAlign
00036 } AlignType;
00037
00038 typedef enum
00039 {
00040 UndefinedPathUnits,
00041 UserSpace,
00042 UserSpaceOnUse,
00043 ObjectBoundingBox
00044 } ClipPathUnits;
00045
00046 typedef enum
00047 {
00048 UndefinedDecoration,
00049 NoDecoration,
00050 UnderlineDecoration,
00051 OverlineDecoration,
00052 LineThroughDecoration
00053 } DecorationType;
00054
00055 typedef enum
00056 {
00057 UndefinedRule,
00058 #undef EvenOddRule
00059 EvenOddRule,
00060 NonZeroRule
00061 } FillRule;
00062
00063 typedef enum
00064 {
00065 UndefinedGradient,
00066 LinearGradient,
00067 RadialGradient
00068 } GradientType;
00069
00070 typedef enum
00071 {
00072 UndefinedCap,
00073 ButtCap,
00074 RoundCap,
00075 SquareCap
00076 } LineCap;
00077
00078 typedef enum
00079 {
00080 UndefinedJoin,
00081 MiterJoin,
00082 RoundJoin,
00083 BevelJoin
00084 } LineJoin;
00085
00086 typedef enum
00087 {
00088 UndefinedMethod,
00089 PointMethod,
00090 ReplaceMethod,
00091 FloodfillMethod,
00092 FillToBorderMethod,
00093 ResetMethod
00094 } PaintMethod;
00095
00096 typedef enum
00097 {
00098 UndefinedPrimitive,
00099 PointPrimitive,
00100 LinePrimitive,
00101 RectanglePrimitive,
00102 RoundRectanglePrimitive,
00103 ArcPrimitive,
00104 EllipsePrimitive,
00105 CirclePrimitive,
00106 PolylinePrimitive,
00107 PolygonPrimitive,
00108 BezierPrimitive,
00109 ColorPrimitive,
00110 MattePrimitive,
00111 TextPrimitive,
00112 ImagePrimitive,
00113 PathPrimitive
00114 } PrimitiveType;
00115
00116 typedef enum
00117 {
00118 UndefinedReference,
00119 GradientReference
00120 } ReferenceType;
00121
00122 typedef enum
00123 {
00124 UndefinedSpread,
00125 PadSpread,
00126 ReflectSpread,
00127 RepeatSpread
00128 } SpreadMethod;
00129
00130 typedef struct _StopInfo
00131 {
00132 MagickPixelPacket
00133 color;
00134
00135 MagickRealType
00136 offset;
00137 } StopInfo;
00138
00139 typedef struct _GradientInfo
00140 {
00141 GradientType
00142 type;
00143
00144 RectangleInfo
00145 bounding_box;
00146
00147 SegmentInfo
00148 gradient_vector;
00149
00150 StopInfo
00151 *stops;
00152
00153 unsigned long
00154 number_stops;
00155
00156 SpreadMethod
00157 spread;
00158
00159 MagickBooleanType
00160 debug;
00161
00162 unsigned long
00163 signature;
00164 } GradientInfo;
00165
00166 typedef struct _ElementReference
00167 {
00168 char
00169 *id;
00170
00171 ReferenceType
00172 type;
00173
00174 GradientInfo
00175 gradient;
00176
00177 unsigned long
00178 signature;
00179
00180 struct _ElementReference
00181 *previous,
00182 *next;
00183 } ElementReference;
00184
00185 typedef struct _DrawInfo
00186 {
00187 char
00188 *primitive,
00189 *geometry;
00190
00191 RectangleInfo
00192 viewbox;
00193
00194 AffineMatrix
00195 affine;
00196
00197 GravityType
00198 gravity;
00199
00200 PixelPacket
00201 fill,
00202 stroke;
00203
00204 double
00205 stroke_width;
00206
00207 GradientInfo
00208 gradient;
00209
00210 Image
00211 *fill_pattern,
00212 *tile,
00213 *stroke_pattern;
00214
00215 MagickBooleanType
00216 stroke_antialias,
00217 text_antialias;
00218
00219 FillRule
00220 fill_rule;
00221
00222 LineCap
00223 linecap;
00224
00225 LineJoin
00226 linejoin;
00227
00228 unsigned long
00229 miterlimit;
00230
00231 double
00232 dash_offset;
00233
00234 DecorationType
00235 decorate;
00236
00237 CompositeOperator
00238 compose;
00239
00240 char
00241 *text;
00242
00243 unsigned long
00244 face;
00245
00246 char
00247 *font,
00248 *metrics,
00249 *family;
00250
00251 StyleType
00252 style;
00253
00254 StretchType
00255 stretch;
00256
00257 unsigned long
00258 weight;
00259
00260 char
00261 *encoding;
00262
00263 double
00264 pointsize;
00265
00266 char
00267 *density;
00268
00269 AlignType
00270 align;
00271
00272 PixelPacket
00273 undercolor,
00274 border_color;
00275
00276 char
00277 *server_name;
00278
00279 double
00280 *dash_pattern;
00281
00282 char
00283 *clip_mask;
00284
00285 SegmentInfo
00286 bounds;
00287
00288 ClipPathUnits
00289 clip_units;
00290
00291 Quantum
00292 opacity;
00293
00294 MagickBooleanType
00295 render;
00296
00297 ElementReference
00298 element_reference;
00299
00300 MagickBooleanType
00301 debug;
00302
00303 unsigned long
00304 signature;
00305 } DrawInfo;
00306
00307 typedef struct _PointInfo
00308 {
00309 double
00310 x,
00311 y;
00312 } PointInfo;
00313
00314 typedef struct _PrimitiveInfo
00315 {
00316 PointInfo
00317 point;
00318
00319 unsigned long
00320 coordinates;
00321
00322 PrimitiveType
00323 primitive;
00324
00325 PaintMethod
00326 method;
00327
00328 char
00329 *text;
00330 } PrimitiveInfo;
00331
00332 typedef struct _TypeMetric
00333 {
00334 PointInfo
00335 pixels_per_em;
00336
00337 double
00338 ascent,
00339 descent,
00340 width,
00341 height,
00342 max_advance,
00343 underline_position,
00344 underline_thickness;
00345
00346 SegmentInfo
00347 bounds;
00348
00349 PointInfo
00350 origin;
00351 } TypeMetric;
00352
00353 extern MagickExport DrawInfo
00354 *AcquireDrawInfo(void),
00355 *CloneDrawInfo(const ImageInfo *,const DrawInfo *),
00356 *DestroyDrawInfo(DrawInfo *);
00357
00358 extern MagickExport MagickBooleanType
00359 DrawAffineImage(Image *,const Image *,const AffineMatrix *),
00360 DrawClipPath(Image *,const DrawInfo *,const char *),
00361 DrawGradientImage(Image *,const DrawInfo *),
00362 DrawImage(Image *,const DrawInfo *),
00363 DrawPatternPath(Image *,const DrawInfo *,const char *,Image **),
00364 DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *);
00365
00366 extern MagickExport void
00367 GetAffineMatrix(AffineMatrix *),
00368 GetDrawInfo(const ImageInfo *,DrawInfo *);
00369
00370 #if defined(__cplusplus) || defined(c_plusplus)
00371 }
00372 #endif
00373
00374 #endif