MagickCore  6.9.10
Convert, Edit, Or Compose Bitmap Images
draw.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2018 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://www.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 } DrawInfo;
355 
356 typedef struct _PrimitiveInfo
357 {
358  PointInfo
360 
361  size_t
363 
364  PrimitiveType
366 
367  PaintMethod
369 
370  char
372 
375 } PrimitiveInfo;
376 
377 typedef struct _TypeMetric
378 {
379  PointInfo
381 
382  double
383  ascent,
384  descent,
385  width,
386  height,
387  max_advance,
388  underline_position,
389  underline_thickness;
390 
393 
394  PointInfo
396 } TypeMetric;
397 
398 extern MagickExport DrawInfo
399  *AcquireDrawInfo(void),
400  *CloneDrawInfo(const ImageInfo *,const DrawInfo *),
402 
404  DrawAffineImage(Image *,const Image *,const AffineMatrix *),
405  DrawClipPath(Image *,const DrawInfo *,const char *),
406  DrawGradientImage(Image *,const DrawInfo *),
407  DrawImage(Image *,const DrawInfo *),
408  DrawPatternPath(Image *,const DrawInfo *,const char *,Image **),
409  DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *);
410 
411 extern MagickExport void
413  GetDrawInfo(const ImageInfo *,DrawInfo *);
414 
415 #if defined(__cplusplus) || defined(c_plusplus)
416 }
417 #endif
418 
419 #endif
char * server_name
Definition: draw.h:302
MagickDoubleType MagickRealType
Definition: magick-type.h:123
MagickExport DrawInfo * AcquireDrawInfo(void)
Definition: draw.h:60
char * primitive
Definition: draw.h:213
Definition: draw.h:134
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:377
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:362
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:374
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:189
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:383
Definition: draw.h:356
PointInfo origin
Definition: draw.h:395
MagickExport DrawInfo * DestroyDrawInfo(DrawInfo *)
Definition: draw.c:877
Definition: pixel.h:104
Image * composite_mask
Definition: draw.h:353
struct _ElementReference * previous
Definition: draw.h:205
PrimitiveType primitive
Definition: draw.h:365
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:380
PointInfo point
Definition: draw.h:359
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:392
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:4913
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:371
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:368
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:5547
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:98
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