MagickCore  6.9.11-60
Convert, Edit, Or Compose Bitmap Images
draw.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2021 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 "magick/geometry.h"
22 #include "magick/image.h"
23 #include "magick/pixel.h"
24 #include "magick/type.h"
25 #include "magick/color.h"
26 
27 #if defined(__cplusplus) || defined(c_plusplus)
28 extern "C" {
29 #endif
30 
31 typedef enum
32 {
38 
39 typedef enum
40 {
46 
47 typedef enum
48 {
55 
56 typedef enum
57 {
62 
63 typedef enum
64 {
66 #undef EvenOddRule
70 
71 typedef enum
72 {
77 
78 typedef enum
79 {
83  SquareCap
85 
86 typedef enum
87 {
91  BevelJoin
93 
94 typedef enum
95 {
103 
104 typedef enum
105 {
123 
124 typedef enum
125 {
129 
130 typedef enum
131 {
137 
138 typedef struct _PointInfo
139 {
140  double
141  x,
142  y;
144 
145 typedef struct _StopInfo
146 {
149 
153 
154 typedef struct _GradientInfo
155 {
158 
161 
164 
165  StopInfo
167 
168  size_t
170 
173 
176 
177  size_t
179 
180  PointInfo
182 
186 
187  PointInfo
190 
191 typedef struct _ElementReference
192 {
193  char
194  *id;
195 
198 
201 
202  size_t
204 
205  struct _ElementReference
209 
210 typedef struct _DrawInfo
211 {
212  char
215 
218 
221 
224 
228 
229  double
231 
234 
235  Image
239 
243 
244  FillRule
246 
247  LineCap
249 
250  LineJoin
252 
253  size_t
255 
256  double
258 
261 
264 
265  char
267 
268  size_t
270 
271  char
275 
276  StyleType
278 
281 
282  size_t
284 
285  char
287 
288  double
290 
291  char
293 
294  AlignType
296 
300 
301  char
303 
304  double
306 
307  char
309 
312 
315 
316  Quantum
318 
321 
324 
327 
328  size_t
330 
331  double
335 
338 
339  double
342 
345 
346  Image
348 
351 
352  Image
354 
355  char
356  *id;
358 
359 typedef struct _PrimitiveInfo
360 {
361  PointInfo
363 
364  size_t
366 
369 
372 
373  char
375 
379 
380 typedef struct _TypeMetric
381 {
382  PointInfo
384 
385  double
393 
396 
397  PointInfo
400 
401 extern MagickExport DrawInfo
403  *CloneDrawInfo(const ImageInfo *,const DrawInfo *),
405 
408  DrawClipPath(Image *,const DrawInfo *,const char *),
411  DrawPatternPath(Image *,const DrawInfo *,const char *,Image **),
412  DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *);
413 
414 extern MagickExport void
416  GetDrawInfo(const ImageInfo *,DrawInfo *);
417 
418 #if defined(__cplusplus) || defined(c_plusplus)
419 }
420 #endif
421 
422 #endif
ComplianceType
Definition: color.h:29
CompositeOperator
Definition: composite.h:26
MagickExport MagickBooleanType DrawGradientImage(Image *, const DrawInfo *)
GradientType
Definition: draw.h:72
@ UndefinedGradient
Definition: draw.h:73
@ LinearGradient
Definition: draw.h:74
@ RadialGradient
Definition: draw.h:75
MagickExport void GetAffineMatrix(AffineMatrix *)
MagickExport void GetDrawInfo(const ImageInfo *, DrawInfo *)
Definition: draw.c:5812
PrimitiveType
Definition: draw.h:105
@ RectanglePrimitive
Definition: draw.h:109
@ ColorPrimitive
Definition: draw.h:117
@ MattePrimitive
Definition: draw.h:118
@ PathPrimitive
Definition: draw.h:121
@ CirclePrimitive
Definition: draw.h:113
@ TextPrimitive
Definition: draw.h:119
@ PointPrimitive
Definition: draw.h:107
@ RoundRectanglePrimitive
Definition: draw.h:110
@ ArcPrimitive
Definition: draw.h:111
@ PolygonPrimitive
Definition: draw.h:115
@ LinePrimitive
Definition: draw.h:108
@ BezierPrimitive
Definition: draw.h:116
@ EllipsePrimitive
Definition: draw.h:112
@ ImagePrimitive
Definition: draw.h:120
@ UndefinedPrimitive
Definition: draw.h:106
@ PolylinePrimitive
Definition: draw.h:114
struct _PointInfo PointInfo
LineJoin
Definition: draw.h:87
@ RoundJoin
Definition: draw.h:90
@ MiterJoin
Definition: draw.h:89
@ UndefinedJoin
Definition: draw.h:88
@ BevelJoin
Definition: draw.h:91
struct _TypeMetric TypeMetric
MagickExport MagickBooleanType DrawPatternPath(Image *, const DrawInfo *, const char *, Image **)
struct _ElementReference ElementReference
DecorationType
Definition: draw.h:48
@ OverlineDecoration
Definition: draw.h:52
@ NoDecoration
Definition: draw.h:50
@ UndefinedDecoration
Definition: draw.h:49
@ UnderlineDecoration
Definition: draw.h:51
@ LineThroughDecoration
Definition: draw.h:53
MagickExport MagickBooleanType DrawAffineImage(Image *, const Image *, const AffineMatrix *)
struct _PrimitiveInfo PrimitiveInfo
MagickExport MagickBooleanType DrawClipPath(Image *, const DrawInfo *, const char *)
MagickExport MagickBooleanType DrawImage(Image *, const DrawInfo *)
LineCap
Definition: draw.h:79
@ ButtCap
Definition: draw.h:81
@ UndefinedCap
Definition: draw.h:80
@ SquareCap
Definition: draw.h:83
@ RoundCap
Definition: draw.h:82
struct _DrawInfo DrawInfo
DirectionType
Definition: draw.h:57
@ LeftToRightDirection
Definition: draw.h:60
@ UndefinedDirection
Definition: draw.h:58
@ RightToLeftDirection
Definition: draw.h:59
struct _GradientInfo GradientInfo
AlignType
Definition: draw.h:32
@ CenterAlign
Definition: draw.h:35
@ UndefinedAlign
Definition: draw.h:33
@ RightAlign
Definition: draw.h:36
@ LeftAlign
Definition: draw.h:34
FillRule
Definition: draw.h:64
@ EvenOddRule
Definition: draw.h:67
@ NonZeroRule
Definition: draw.h:68
@ UndefinedRule
Definition: draw.h:65
ReferenceType
Definition: draw.h:125
@ GradientReference
Definition: draw.h:127
@ UndefinedReference
Definition: draw.h:126
SpreadMethod
Definition: draw.h:131
@ RepeatSpread
Definition: draw.h:135
@ UndefinedSpread
Definition: draw.h:132
@ ReflectSpread
Definition: draw.h:134
@ PadSpread
Definition: draw.h:133
ClipPathUnits
Definition: draw.h:40
@ UserSpace
Definition: draw.h:42
@ UserSpaceOnUse
Definition: draw.h:43
@ ObjectBoundingBox
Definition: draw.h:44
@ UndefinedPathUnits
Definition: draw.h:41
MagickExport DrawInfo * CloneDrawInfo(const ImageInfo *, const DrawInfo *)
struct _StopInfo StopInfo
MagickExport MagickBooleanType DrawPrimitive(Image *, const DrawInfo *, const PrimitiveInfo *)
Definition: draw.c:5174
MagickExport DrawInfo * AcquireDrawInfo(void)
PaintMethod
Definition: draw.h:95
@ UndefinedMethod
Definition: draw.h:96
@ FillToBorderMethod
Definition: draw.h:100
@ PointMethod
Definition: draw.h:97
@ ResetMethod
Definition: draw.h:101
@ FloodfillMethod
Definition: draw.h:99
@ ReplaceMethod
Definition: draw.h:98
MagickExport DrawInfo * DestroyDrawInfo(DrawInfo *)
Definition: draw.c:974
GravityType
Definition: geometry.h:80
MagickDoubleType MagickRealType
Definition: magick-type.h:129
unsigned short Quantum
Definition: magick-type.h:89
MagickBooleanType
Definition: magick-type.h:203
#define MagickExport
Definition: method-attribute.h:80
Definition: geometry.h:96
Definition: draw.h:211
double stroke_width
Definition: draw.h:230
MagickBooleanType text_antialias
Definition: draw.h:242
DirectionType direction
Definition: draw.h:337
double pointsize
Definition: draw.h:289
double interword_spacing
Definition: draw.h:333
Image * clipping_mask
Definition: draw.h:347
char * encoding
Definition: draw.h:286
GradientInfo gradient
Definition: draw.h:233
SegmentInfo bounds
Definition: draw.h:311
Image * fill_pattern
Definition: draw.h:236
PixelPacket stroke
Definition: draw.h:227
MagickBooleanType clip_path
Definition: draw.h:344
double stroke_opacity
Definition: draw.h:341
double interline_spacing
Definition: draw.h:334
size_t signature
Definition: draw.h:329
AffineMatrix affine
Definition: draw.h:220
MagickBooleanType debug
Definition: draw.h:326
PixelPacket fill
Definition: draw.h:226
LineJoin linejoin
Definition: draw.h:251
DecorationType decorate
Definition: draw.h:260
size_t face
Definition: draw.h:269
char * id
Definition: draw.h:356
double kerning
Definition: draw.h:332
ElementReference element_reference
Definition: draw.h:323
LineCap linecap
Definition: draw.h:248
Image * stroke_pattern
Definition: draw.h:238
char * clip_mask
Definition: draw.h:308
ClipPathUnits clip_units
Definition: draw.h:314
size_t miterlimit
Definition: draw.h:254
FillRule fill_rule
Definition: draw.h:245
char * primitive
Definition: draw.h:213
char * text
Definition: draw.h:266
ComplianceType compliance
Definition: draw.h:350
char * geometry
Definition: draw.h:214
MagickBooleanType render
Definition: draw.h:320
char * font
Definition: draw.h:272
Image * composite_mask
Definition: draw.h:353
AlignType align
Definition: draw.h:295
char * metrics
Definition: draw.h:273
size_t weight
Definition: draw.h:283
Image * tile
Definition: draw.h:237
char * family
Definition: draw.h:274
char * server_name
Definition: draw.h:302
char * density
Definition: draw.h:292
MagickBooleanType stroke_antialias
Definition: draw.h:241
double * dash_pattern
Definition: draw.h:305
PixelPacket border_color
Definition: draw.h:299
StretchType stretch
Definition: draw.h:280
double fill_opacity
Definition: draw.h:340
PixelPacket undercolor
Definition: draw.h:298
CompositeOperator compose
Definition: draw.h:263
double dash_offset
Definition: draw.h:257
StyleType style
Definition: draw.h:277
GravityType gravity
Definition: draw.h:223
Quantum opacity
Definition: draw.h:317
RectangleInfo viewbox
Definition: draw.h:217
Definition: draw.h:192
ReferenceType type
Definition: draw.h:197
struct _ElementReference * previous
Definition: draw.h:205
char * id
Definition: draw.h:194
size_t signature
Definition: draw.h:203
GradientInfo gradient
Definition: draw.h:200
struct _ElementReference * next
Definition: draw.h:207
Definition: draw.h:155
MagickRealType angle
Definition: draw.h:185
size_t number_stops
Definition: draw.h:169
MagickBooleanType debug
Definition: draw.h:175
MagickRealType radius
Definition: draw.h:184
StopInfo * stops
Definition: draw.h:166
SegmentInfo gradient_vector
Definition: draw.h:163
SpreadMethod spread
Definition: draw.h:172
PointInfo radii
Definition: draw.h:188
PointInfo center
Definition: draw.h:181
size_t signature
Definition: draw.h:178
GradientType type
Definition: draw.h:157
RectangleInfo bounding_box
Definition: draw.h:160
Definition: image.h:362
Definition: image.h:153
Definition: pixel.h:105
Definition: pixel.h:132
Definition: draw.h:139
double x
Definition: draw.h:141
double y
Definition: draw.h:142
Definition: draw.h:360
size_t coordinates
Definition: draw.h:365
PrimitiveType primitive
Definition: draw.h:368
PointInfo point
Definition: draw.h:362
char * text
Definition: draw.h:374
MagickBooleanType closed_subpath
Definition: draw.h:377
PaintMethod method
Definition: draw.h:371
Definition: geometry.h:124
Definition: image.h:106
Definition: draw.h:146
MagickRealType offset
Definition: draw.h:151
MagickPixelPacket color
Definition: draw.h:148
Definition: draw.h:381
double max_advance
Definition: draw.h:390
double height
Definition: draw.h:389
double ascent
Definition: draw.h:386
double width
Definition: draw.h:388
SegmentInfo bounds
Definition: draw.h:395
PointInfo pixels_per_em
Definition: draw.h:383
double descent
Definition: draw.h:387
double underline_thickness
Definition: draw.h:392
double underline_position
Definition: draw.h:391
PointInfo origin
Definition: draw.h:398
StretchType
Definition: type.h:26
StyleType
Definition: type.h:41