MagickCore  6.9.10
Convert, Edit, Or Compose Bitmap Images
draw.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2020 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 {
158 
161 
164 
165  StopInfo
167 
168  size_t
170 
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 
198 
201 
202  size_t
204 
206  *previous,
207  *next;
209 
210 typedef struct _DrawInfo
211 {
212  char
214  *geometry;
215 
218 
221 
224 
227  stroke;
228 
229  double
231 
234 
235  Image
237  *tile,
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
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 
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;
357 } DrawInfo;
358 
359 typedef struct _PrimitiveInfo
360 {
361  PointInfo
363 
364  size_t
366 
369 
372 
373  char
375 
378 } PrimitiveInfo;
379 
380 typedef struct _TypeMetric
381 {
382  PointInfo
384 
385  double
387  descent,
388  width,
389  height,
390  max_advance,
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
Definition: draw.h:60
char * primitive
Definition: draw.h:213
Definition: draw.h:134
LineCap
Definition: draw.h:78
double interword_spacing
Definition: draw.h:332
StyleType
Definition: type.h:40
Definition: draw.h:108
size_t signature
Definition: draw.h:203
PixelPacket border_color
Definition: draw.h:298
GravityType gravity
Definition: draw.h:223
Definition: draw.h:81
char * font
Definition: draw.h:272
SegmentInfo bounds
Definition: draw.h:311
GradientType type
Definition: draw.h:157
RectangleInfo bounding_box
Definition: draw.h:160
Definition: draw.h:120
MagickExport MagickBooleanType DrawPatternPath(Image *image, const DrawInfo *draw_info, const char *name, Image **pattern)
Definition: draw.c:4392
Definition: draw.h:100
Definition: draw.h:106
Definition: image.h:105
LineCap linecap
Definition: draw.h:248
double interline_spacing
Definition: draw.h:332
struct _PrimitiveInfo PrimitiveInfo
Definition: draw.h:380
MagickExport MagickBooleanType DrawAffineImage(Image *image, const Image *source, const AffineMatrix *affine)
Definition: draw.c:1143
double kerning
Definition: draw.h:332
MagickBooleanType debug
Definition: draw.h:175
Definition: draw.h:90
ElementReference element_reference
Definition: draw.h:323
Image * fill_pattern
Definition: draw.h:236
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
Definition: draw.h:68
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
MagickExport void GetAffineMatrix(AffineMatrix *affine_matrix)
Definition: draw.c:5677
Definition: draw.h:88
Definition: draw.h:121
double x
Definition: draw.h:141
SpreadMethod
Definition: draw.h:130
MagickRealType angle
Definition: draw.h:184
double stroke_width
Definition: draw.h:230
Image * stroke_pattern
Definition: draw.h:236
GradientType
Definition: draw.h:71
Definition: draw.h:51
MagickBooleanType
Definition: magick-type.h:198
char * id
Definition: draw.h:194
ClipPathUnits
Definition: draw.h:39
Definition: draw.h:145
LineJoin linejoin
Definition: draw.h:251
MagickExport MagickBooleanType DrawClipPath(Image *image, const DrawInfo *draw_info, const char *id)
Definition: draw.c:1495
double width
Definition: draw.h:386
Definition: draw.h:359
PointInfo origin
Definition: draw.h:398
double height
Definition: draw.h:386
double descent
Definition: draw.h:386
Definition: pixel.h:104
Image * composite_mask
Definition: draw.h:353
struct _ElementReference * previous
Definition: draw.h:205
PrimitiveType primitive
Definition: draw.h:368
MagickExport DrawInfo * AcquireDrawInfo(void)
Definition: draw.c:233
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
double fill_opacity
Definition: draw.h:340
Definition: draw.h:58
char * family
Definition: draw.h:272
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
MagickBooleanType stroke_antialias
Definition: draw.h:241
Definition: draw.h:96
Definition: draw.h:117
MagickRealType offset
Definition: draw.h:151
MagickExport MagickBooleanType DrawImage(Image *image, const DrawInfo *draw_info)
Definition: draw.c:4358
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
MagickExport void GetDrawInfo(const ImageInfo *image_info, DrawInfo *draw_info)
Definition: draw.c:5710
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
MagickExport DrawInfo * CloneDrawInfo(const ImageInfo *image_info, const DrawInfo *draw_info)
Definition: draw.c:270
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 *image, const DrawInfo *draw_info)
Definition: draw.c:1951
PixelPacket undercolor
Definition: draw.h:298
Definition: draw.h:154
Definition: draw.h:35
double max_advance
Definition: draw.h:386
double underline_thickness
Definition: draw.h:386
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
char * geometry
Definition: draw.h:213
struct _TypeMetric TypeMetric
Definition: draw.h:80
unsigned short Quantum
Definition: magick-type.h:85
MagickExport DrawInfo * DestroyDrawInfo(DrawInfo *draw_info)
Definition: draw.c:886
Definition: draw.h:133
ReferenceType type
Definition: draw.h:197
AlignType align
Definition: draw.h:295
SegmentInfo gradient_vector
Definition: draw.h:163
double underline_position
Definition: draw.h:386
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
PixelPacket fill
Definition: draw.h:226
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
Definition: draw.h:75
double ascent
Definition: draw.h:386
struct _PointInfo PointInfo
Definition: draw.h:52
Definition: draw.h:115
MagickExport MagickBooleanType DrawPrimitive(Image *image, const DrawInfo *draw_info, const PrimitiveInfo *primitive_info)
Definition: draw.c:5072
Definition: draw.h:126
CompositeOperator
Definition: composite.h:25
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