MagickCore  6.9.10
Convert, Edit, Or Compose Bitmap Images
draw.h
Go to the documentation of this file.
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.
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  ImageInfo
357 } DrawInfo;
358 
359 typedef struct _PrimitiveInfo
360 {
361  PointInfo
363 
364  size_t
366 
367  PrimitiveType
369 
370  PaintMethod
372 
373  char
375 
378 } PrimitiveInfo;
379 
380 typedef struct _TypeMetric
381 {
382  PointInfo
384 
385  double
386  ascent,
387  descent,
388  width,
389  height,
390  max_advance,
391  underline_position,
392  underline_thickness;
393 
396 
397  PointInfo
399 } TypeMetric;
400 
401 extern MagickExport DrawInfo
402  *AcquireDrawInfo(void),
403  *CloneDrawInfo(const ImageInfo *,const DrawInfo *),
405 
407  DrawAffineImage(Image *,const Image *,const AffineMatrix *),
408  DrawClipPath(Image *,const DrawInfo *,const char *),
409  DrawGradientImage(Image *,const DrawInfo *),
410  DrawImage(Image *,const DrawInfo *),
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
char * server_name
Definition: draw.h:302
MagickDoubleType MagickRealType
Definition: magick-type.h:125
MagickExport DrawInfo * AcquireDrawInfo(void)
Definition: draw.h:60
char * primitive
Definition: draw.h:213
Definition: draw.h:134
ImageInfo * image_info
Definition: draw.h:356
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:380
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:94
MagickBooleanType render
Definition: draw.h:320
size_t coordinates
Definition: draw.h:365
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:377
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:191
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:386
Definition: draw.h:359
PointInfo origin
Definition: draw.h:398
MagickExport DrawInfo * DestroyDrawInfo(DrawInfo *)
Definition: draw.c:883
Definition: pixel.h:104
Image * composite_mask
Definition: draw.h:353
struct _ElementReference * previous
Definition: draw.h:205
PrimitiveType primitive
Definition: draw.h:368
double stroke_opacity
Definition: draw.h:340
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:383
PointInfo point
Definition: draw.h:362
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:78
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:122
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:395
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:85
MagickExport MagickBooleanType DrawPrimitive(Image *, const DrawInfo *, const PrimitiveInfo *)
Definition: draw.c:5011
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:374
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:371
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:5649
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