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 {
37 } AlignType;
38 
39 typedef enum
40 {
46 
47 typedef enum
48 {
55 
56 typedef enum
57 {
62 
63 typedef enum
64 {
66 #undef EvenOddRule
69 } FillRule;
70 
71 typedef enum
72 {
76 } GradientType;
77 
78 typedef enum
79 {
84 } LineCap;
85 
86 typedef enum
87 {
92 } LineJoin;
93 
94 typedef enum
95 {
102 } PaintMethod;
103 
104 typedef enum
105 {
122 } PrimitiveType;
123 
124 typedef enum
125 {
128 } ReferenceType;
129 
130 typedef enum
131 {
136 } SpreadMethod;
137 
138 typedef struct _PointInfo
139 {
140  double
141  x,
142  y;
143 } PointInfo;
144 
145 typedef struct _StopInfo
146 {
149 
152 } StopInfo;
153 
154 typedef struct _GradientInfo
155 {
156  GradientType
158 
161 
164 
165  StopInfo
167 
168  size_t
170 
171  SpreadMethod
173 
176 
177  size_t
179 
180  PointInfo
182 
185  angle;
186 
187  PointInfo
189 } GradientInfo;
190 
191 typedef struct _ElementReference
192 {
193  char
194  *id;
195 
196  ReferenceType
198 
201 
202  size_t
204 
206  *previous,
207  *next;
209 
210 typedef struct _DrawInfo
211 {
212  char
214  *geometry;
215 
218 
221 
224 
226  fill,
227  stroke;
228 
229  double
231 
234 
235  Image
236  *fill_pattern,
237  *tile,
238  *stroke_pattern;
239 
241  stroke_antialias,
243 
244  FillRule
246 
247  LineCap
249 
250  LineJoin
252 
253  size_t
255 
256  double
258 
259  DecorationType
261 
264 
265  char
267 
268  size_t
270 
271  char
272  *font,
273  *metrics,
274  *family;
275 
276  StyleType
278 
281 
282  size_t
284 
285  char
287 
288  double
290 
291  char
293 
294  AlignType
296 
299  border_color;
300 
301  char
303 
304  double
306 
307  char
309 
312 
313  ClipPathUnits
315 
316  Quantum
318 
321 
324 
327 
328  size_t
330 
331  double
333  interword_spacing,
334  interline_spacing;
335 
336  DirectionType
338 
339  double
340  fill_opacity,
342 
345 
346  Image
348 
351 
352  Image
354 
355  char
356  *id;
357 
358  ImageInfo
360 } DrawInfo;
361 
362 typedef struct _PrimitiveInfo
363 {
364  PointInfo
366 
367  size_t
369 
370  PrimitiveType
372 
373  PaintMethod
375 
376  char
378 
381 } PrimitiveInfo;
382 
383 typedef struct _TypeMetric
384 {
385  PointInfo
387 
388  double
389  ascent,
390  descent,
391  width,
392  height,
393  max_advance,
394  underline_position,
395  underline_thickness;
396 
399 
400  PointInfo
402 } TypeMetric;
403 
404 extern MagickExport DrawInfo
405  *AcquireDrawInfo(void),
406  *CloneDrawInfo(const ImageInfo *,const DrawInfo *),
408 
410  DrawAffineImage(Image *,const Image *,const AffineMatrix *),
411  DrawClipPath(Image *,const DrawInfo *,const char *),
412  DrawGradientImage(Image *,const DrawInfo *),
413  DrawImage(Image *,const DrawInfo *),
414  DrawPatternPath(Image *,const DrawInfo *,const char *,Image **),
415  DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *);
416 
417 extern MagickExport void
419  GetDrawInfo(const ImageInfo *,DrawInfo *);
420 
421 #if defined(__cplusplus) || defined(c_plusplus)
422 }
423 #endif
424 
425 #endif
char * server_name
Definition: draw.h:302
MagickDoubleType MagickRealType
Definition: magick-type.h:129
MagickExport DrawInfo * AcquireDrawInfo(void)
Definition: draw.h:60
char * primitive
Definition: draw.h:213
Definition: draw.h:134
ImageInfo * image_info
Definition: draw.h:359
LineCap
Definition: draw.h:78
StyleType
Definition: type.h:40
Definition: draw.h:108
MagickExport void GetAffineMatrix(AffineMatrix *)
size_t signature
Definition: draw.h:203
GravityType gravity
Definition: draw.h:223
Definition: draw.h:81
SegmentInfo bounds
Definition: draw.h:311
GradientType type
Definition: draw.h:157
RectangleInfo bounding_box
Definition: draw.h:160
Definition: draw.h:120
Definition: draw.h:100
Definition: draw.h:106
Definition: image.h:105
LineCap linecap
Definition: draw.h:248
struct _PrimitiveInfo PrimitiveInfo
Definition: draw.h:383
double kerning
Definition: draw.h:332
MagickBooleanType debug
Definition: draw.h:175
Definition: draw.h:90
ElementReference element_reference
Definition: draw.h:323
Definition: draw.h:210
Definition: image.h:361
Definition: geometry.h:95
MagickBooleanType render
Definition: draw.h:320
size_t coordinates
Definition: draw.h:368
double pointsize
Definition: draw.h:289
Definition: draw.h:91
struct _DrawInfo DrawInfo
Definition: draw.h:41
StyleType style
Definition: draw.h:277
DecorationType decorate
Definition: draw.h:260
MagickBooleanType debug
Definition: draw.h:326
MagickBooleanType clip_path
Definition: draw.h:344
MagickExport DrawInfo * CloneDrawInfo(const ImageInfo *, const DrawInfo *)
Definition: draw.h:68
MagickExport MagickBooleanType DrawAffineImage(Image *, const Image *, const AffineMatrix *)
MagickExport MagickBooleanType DrawImage(Image *, const DrawInfo *)
Definition: draw.h:116
Definition: pixel.h:131
Definition: draw.h:44
Definition: draw.h:34
Definition: draw.h:119
PointInfo radii
Definition: draw.h:188
Definition: draw.h:107
SpreadMethod spread
Definition: draw.h:172
Definition: draw.h:113
Definition: draw.h:89
Definition: draw.h:73
AffineMatrix affine
Definition: draw.h:220
Definition: draw.h:99
Definition: image.h:152
MagickBooleanType closed_subpath
Definition: draw.h:380
Definition: draw.h:88
Definition: draw.h:121
double x
Definition: draw.h:141
SpreadMethod
Definition: draw.h:130
double stroke_width
Definition: draw.h:230
GradientType
Definition: draw.h:71
Definition: draw.h:51
MagickBooleanType
Definition: magick-type.h:202
char * id
Definition: draw.h:194
ClipPathUnits
Definition: draw.h:39
Definition: draw.h:145
LineJoin linejoin
Definition: draw.h:251
double width
Definition: draw.h:389
Definition: draw.h:362
PointInfo origin
Definition: draw.h:401
MagickExport DrawInfo * DestroyDrawInfo(DrawInfo *)
Definition: draw.c:975
Definition: pixel.h:104
Image * composite_mask
Definition: draw.h:353
struct _ElementReference * previous
Definition: draw.h:205
PrimitiveType primitive
Definition: draw.h:371
double stroke_opacity
Definition: draw.h:340
char * id
Definition: draw.h:356
PointInfo center
Definition: draw.h:181
Definition: draw.h:36
char * metrics
Definition: draw.h:272
DecorationType
Definition: draw.h:47
size_t face
Definition: draw.h:269
double y
Definition: draw.h:141
PixelPacket stroke
Definition: draw.h:226
StretchType
Definition: type.h:25
FillRule fill_rule
Definition: draw.h:245
StopInfo * stops
Definition: draw.h:166
Definition: draw.h:58
LineJoin
Definition: draw.h:86
GradientInfo gradient
Definition: draw.h:200
Definition: draw.h:98
Quantum opacity
Definition: draw.h:317
PointInfo pixels_per_em
Definition: draw.h:386
PointInfo point
Definition: draw.h:365
Definition: draw.h:96
Definition: draw.h:117
MagickRealType offset
Definition: draw.h:151
struct _ElementReference * next
Definition: draw.h:205
GravityType
Definition: geometry.h:79
Definition: draw.h:53
Definition: draw.h:191
Definition: draw.h:114
Definition: draw.h:74
Definition: draw.h:101
char * density
Definition: draw.h:292
Definition: draw.h:112
Definition: draw.h:59
Definition: draw.h:135
struct _GradientInfo GradientInfo
StretchType stretch
Definition: draw.h:280
Definition: draw.h:97
Definition: draw.h:65
Definition: geometry.h:123
Image * clipping_mask
Definition: draw.h:347
MagickPixelPacket color
Definition: draw.h:148
Definition: draw.h:109
PrimitiveType
Definition: draw.h:104
Image * tile
Definition: draw.h:236
char * encoding
Definition: draw.h:286
GradientInfo gradient
Definition: draw.h:233
Definition: draw.h:110
MagickExport MagickBooleanType DrawGradientImage(Image *, const DrawInfo *)
PixelPacket undercolor
Definition: draw.h:298
Definition: draw.h:154
Definition: draw.h:35
MagickExport MagickBooleanType DrawClipPath(Image *, const DrawInfo *, const char *)
char * clip_mask
Definition: draw.h:308
Definition: draw.h:132
SegmentInfo bounds
Definition: draw.h:398
ComplianceType compliance
Definition: draw.h:350
size_t signature
Definition: draw.h:329
struct _TypeMetric TypeMetric
Definition: draw.h:80
unsigned short Quantum
Definition: magick-type.h:89
MagickExport MagickBooleanType DrawPrimitive(Image *, const DrawInfo *, const PrimitiveInfo *)
Definition: draw.c:5175
Definition: draw.h:133
ReferenceType type
Definition: draw.h:197
AlignType align
Definition: draw.h:295
SegmentInfo gradient_vector
Definition: draw.h:163
Definition: draw.h:118
MagickBooleanType text_antialias
Definition: draw.h:241
char * text
Definition: draw.h:377
ClipPathUnits clip_units
Definition: draw.h:314
Definition: draw.h:50
FillRule
Definition: draw.h:63
Definition: draw.h:127
size_t miterlimit
Definition: draw.h:254
Definition: draw.h:33
Definition: draw.h:111
Definition: draw.h:49
size_t signature
Definition: draw.h:178
PaintMethod method
Definition: draw.h:374
double dash_offset
Definition: draw.h:257
DirectionType
Definition: draw.h:56
char * text
Definition: draw.h:266
MagickExport void GetDrawInfo(const ImageInfo *, DrawInfo *)
Definition: draw.c:5814
Definition: draw.h:75
struct _PointInfo PointInfo
Definition: draw.h:52
Definition: draw.h:115
Definition: draw.h:126
CompositeOperator
Definition: composite.h:25
MagickExport MagickBooleanType DrawPatternPath(Image *, const DrawInfo *, const char *, Image **)
size_t number_stops
Definition: draw.h:169
PaintMethod
Definition: draw.h:94
#define MagickExport
Definition: method-attribute.h:80
struct _ElementReference ElementReference
Definition: draw.h:82
Definition: draw.h:83
ComplianceType
Definition: color.h:28
Definition: draw.h:42
MagickRealType radius
Definition: draw.h:184
double * dash_pattern
Definition: draw.h:305
Definition: draw.h:67
CompositeOperator compose
Definition: draw.h:263
DirectionType direction
Definition: draw.h:337
Definition: draw.h:138
AlignType
Definition: draw.h:31
Definition: draw.h:43
struct _StopInfo StopInfo
RectangleInfo viewbox
Definition: draw.h:217
ReferenceType
Definition: draw.h:124
size_t weight
Definition: draw.h:283