]> granicus.if.org Git - imagemagick/blob - MagickCore/draw.h
Removed unused argument.
[imagemagick] / MagickCore / draw.h
1 /*
2   Copyright 1999-2019 ImageMagick Studio LLC, a non-profit organization
3   dedicated to making software imaging solutions freely available.
4
5   You may not use this file except in compliance with the License.  You may
6   obtain a copy of the License at
7
8     https://imagemagick.org/script/license.php
9
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License.
15
16   MagickCore drawing methods.
17 */
18 #ifndef MAGICKCORE_DRAW_H
19 #define MAGICKCORE_DRAW_H
20
21 #include "MagickCore/geometry.h"
22 #include "MagickCore/image.h"
23 #include "MagickCore/pixel.h"
24 #include "MagickCore/type.h"
25 #include "MagickCore/color.h"
26
27 #if defined(__cplusplus) || defined(c_plusplus)
28 extern "C" {
29 #endif
30
31 typedef enum
32 {
33   UndefinedAlign,
34   LeftAlign,
35   CenterAlign,
36   RightAlign
37 } AlignType;
38
39 typedef enum
40 {
41   UndefinedPathUnits,
42   UserSpace,
43   UserSpaceOnUse,
44   ObjectBoundingBox
45 } ClipPathUnits;
46
47 typedef enum
48 {
49   UndefinedDecoration,
50   NoDecoration,
51   UnderlineDecoration,
52   OverlineDecoration,
53   LineThroughDecoration
54 } DecorationType;
55
56 typedef enum
57 {
58   UndefinedDirection,
59   RightToLeftDirection,
60   LeftToRightDirection
61 } DirectionType;
62
63 typedef enum
64 {
65   UndefinedRule,
66 #undef EvenOddRule
67   EvenOddRule,
68   NonZeroRule
69 } FillRule;
70
71 typedef enum
72 {
73   UndefinedGradient,
74   LinearGradient,
75   RadialGradient
76 } GradientType;
77
78 typedef enum
79 {
80   UndefinedCap,
81   ButtCap,
82   RoundCap,
83   SquareCap
84 } LineCap;
85
86 typedef enum
87 {
88   UndefinedJoin,
89   MiterJoin,
90   RoundJoin,
91   BevelJoin
92 } LineJoin;
93
94 typedef enum
95 {
96   UndefinedMethod,
97   PointMethod,
98   ReplaceMethod,
99   FloodfillMethod,
100   FillToBorderMethod,
101   ResetMethod
102 } PaintMethod;
103
104 typedef enum
105 {
106   UndefinedPrimitive,
107   AlphaPrimitive,
108   ArcPrimitive,
109   BezierPrimitive,
110   CirclePrimitive,
111   ColorPrimitive,
112   EllipsePrimitive,
113   ImagePrimitive,
114   LinePrimitive,
115   PathPrimitive,
116   PointPrimitive,
117   PolygonPrimitive,
118   PolylinePrimitive,
119   RectanglePrimitive,
120   RoundRectanglePrimitive,
121   TextPrimitive
122 } PrimitiveType;
123
124 typedef enum
125 {
126   UndefinedReference,
127   GradientReference
128 } ReferenceType;
129
130 typedef enum
131 {
132   UndefinedSpread,
133   PadSpread,
134   ReflectSpread,
135   RepeatSpread
136 } SpreadMethod;
137
138 typedef struct _StopInfo
139 {
140   PixelInfo
141     color;
142
143   double
144     offset;
145 } StopInfo;
146
147 typedef struct _GradientInfo
148 {
149   GradientType
150     type;
151
152   RectangleInfo
153     bounding_box;
154
155   SegmentInfo
156     gradient_vector;
157
158   StopInfo
159     *stops;
160
161   size_t
162     number_stops;
163
164   SpreadMethod
165     spread;
166
167   MagickBooleanType
168     debug;
169
170   PointInfo
171     center,
172     radii;
173
174   double
175     radius,
176     angle;
177
178   size_t
179     signature;
180 } GradientInfo;
181
182 typedef struct _ElementReference
183 {
184   char
185     *id;
186
187   ReferenceType
188     type;
189
190   GradientInfo
191     gradient;
192
193   struct _ElementReference
194     *previous,
195     *next;
196
197   size_t
198     signature;
199 } ElementReference;
200
201 typedef struct _DrawInfo
202 {
203   char
204     *primitive,
205     *geometry;
206
207   RectangleInfo
208     viewbox;
209
210   AffineMatrix
211     affine;
212
213   PixelInfo
214     fill,
215     stroke,
216     undercolor,
217     border_color;
218
219   Image
220     *fill_pattern,
221     *stroke_pattern;
222
223   double
224     stroke_width;
225
226   GradientInfo
227     gradient;
228
229   MagickBooleanType
230     stroke_antialias,
231     text_antialias;
232
233   FillRule
234     fill_rule;
235
236   LineCap
237     linecap;
238
239   LineJoin
240     linejoin;
241
242   size_t
243     miterlimit;
244
245   double
246     dash_offset;
247
248   DecorationType
249     decorate;
250
251   CompositeOperator
252     compose;
253
254   char
255     *text,
256     *font,
257     *metrics,
258     *family;
259
260   size_t
261     face;
262
263   StyleType
264     style;
265
266   StretchType
267     stretch;
268
269   size_t
270     weight;
271
272   char
273     *encoding;
274
275   double
276     pointsize;
277
278   char
279     *density;
280
281   AlignType
282     align;
283
284   GravityType
285     gravity;
286
287   char
288     *server_name;
289
290   double
291     *dash_pattern;
292
293   char
294     *clip_mask;
295
296   SegmentInfo
297     bounds;
298
299   ClipPathUnits
300     clip_units;
301
302   Quantum
303     alpha;
304
305   MagickBooleanType
306     render;
307
308   ElementReference
309     element_reference;
310
311   double
312     kerning,
313     interword_spacing,
314     interline_spacing;
315
316   DirectionType
317     direction;
318
319   MagickBooleanType
320     debug;
321
322   size_t
323     signature;
324
325   double
326     fill_alpha,
327     stroke_alpha;
328
329   MagickBooleanType
330     clip_path;
331
332   Image
333     *clipping_mask;
334
335   ComplianceType
336     compliance;
337
338   Image
339     *composite_mask;
340 } DrawInfo;
341
342 typedef struct _PrimitiveInfo
343 {
344   PointInfo
345     point;
346
347   size_t
348     coordinates;
349
350   PrimitiveType
351     primitive;
352
353   PaintMethod
354     method;
355
356   char
357     *text;
358
359   MagickBooleanType
360     closed_subpath;
361 } PrimitiveInfo;
362
363 typedef struct _TypeMetric
364 {
365   PointInfo
366     pixels_per_em;
367
368   double
369     ascent,
370     descent,
371     width,
372     height,
373     max_advance,
374     underline_position,
375     underline_thickness;
376
377   SegmentInfo
378     bounds;
379
380   PointInfo
381     origin;
382 } TypeMetric;
383
384 extern MagickExport DrawInfo
385   *AcquireDrawInfo(void),
386   *CloneDrawInfo(const ImageInfo *,const DrawInfo *),
387   *DestroyDrawInfo(DrawInfo *);
388
389 extern MagickExport MagickBooleanType
390   DrawAffineImage(Image *,const Image *,const AffineMatrix *,ExceptionInfo *),
391   DrawClipPath(Image *,const DrawInfo *,const char *,ExceptionInfo *),
392   DrawGradientImage(Image *,const DrawInfo *,ExceptionInfo *),
393   DrawImage(Image *,const DrawInfo *,ExceptionInfo *),
394   DrawPatternPath(Image *,const DrawInfo *,const char *,Image **,
395     ExceptionInfo *),
396   DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *,ExceptionInfo *);
397
398 extern MagickExport void
399   GetAffineMatrix(AffineMatrix *),
400   GetDrawInfo(const ImageInfo *,DrawInfo *);
401
402 #if defined(__cplusplus) || defined(c_plusplus)
403 }
404 #endif
405
406 #endif