MagickCore 6.9.12-98
Convert, Edit, Or Compose Bitmap Images
Loading...
Searching...
No Matches
image.h
1/*
2 Copyright 1999 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 image methods.
17*/
18#ifndef MAGICKCORE_IMAGE_H
19#define MAGICKCORE_IMAGE_H
20
21#include "magick/color.h"
22
23#if defined(__cplusplus) || defined(c_plusplus)
24extern "C" {
25#endif
26
27#define OpaqueOpacity ((Quantum) 0UL)
28#define TransparentOpacity (QuantumRange)
29
30typedef enum
31{
32 UndefinedAlphaChannel,
33 ActivateAlphaChannel,
34 BackgroundAlphaChannel,
35 CopyAlphaChannel,
36 DeactivateAlphaChannel,
37 ExtractAlphaChannel,
38 OpaqueAlphaChannel,
39 ResetAlphaChannel, /* deprecated */
40 SetAlphaChannel,
41 ShapeAlphaChannel,
42 TransparentAlphaChannel,
43 FlattenAlphaChannel,
44 RemoveAlphaChannel,
45 AssociateAlphaChannel,
46 DisassociateAlphaChannel
47} AlphaChannelType;
48
49typedef enum
50{
51 UndefinedType,
52 BilevelType,
53 GrayscaleType,
54 GrayscaleMatteType,
55 PaletteType,
56 PaletteMatteType,
57 TrueColorType,
58 TrueColorMatteType,
59 ColorSeparationType,
60 ColorSeparationMatteType,
61 OptimizeType,
62 PaletteBilevelMatteType
63} ImageType;
64
65typedef enum
66{
67 UndefinedInterlace,
68 NoInterlace,
69 LineInterlace,
70 PlaneInterlace,
71 PartitionInterlace,
72 GIFInterlace,
73 JPEGInterlace,
74 PNGInterlace
75} InterlaceType;
76
77typedef enum
78{
79 UndefinedOrientation,
80 TopLeftOrientation,
81 TopRightOrientation,
82 BottomRightOrientation,
83 BottomLeftOrientation,
84 LeftTopOrientation,
85 RightTopOrientation,
86 RightBottomOrientation,
87 LeftBottomOrientation
88} OrientationType;
89
90typedef enum
91{
92 UndefinedResolution,
93 PixelsPerInchResolution,
94 PixelsPerCentimeterResolution
95} ResolutionType;
96
97typedef struct _PrimaryInfo
98{
99 double
100 x,
101 y,
102 z;
104
105typedef struct _SegmentInfo
106{
107 double
108 x1,
109 y1,
110 x2,
111 y2;
113
114typedef enum
115{
116 UndefinedTransmitType,
117 FileTransmitType,
118 BlobTransmitType,
119 StreamTransmitType,
120 ImageTransmitType
121} TransmitType;
122
123typedef struct _ChromaticityInfo
124{
126 red_primary,
127 green_primary,
128 blue_primary,
129 white_point;
131
132#include "magick/blob.h"
133#include "magick/colorspace.h"
134#include "magick/cache-view.h"
135#include "magick/color.h"
136#include "magick/composite.h"
137#include "magick/compress.h"
138#include "magick/effect.h"
139#include "magick/geometry.h"
140#include "magick/layer.h"
141#include "magick/locale_.h"
142#include "magick/monitor.h"
143#include "magick/pixel.h"
144#include "magick/profile.h"
145#include "magick/quantum.h"
146#include "magick/resample.h"
147#include "magick/resize.h"
148#include "magick/semaphore.h"
149#include "magick/stream.h"
150#include "magick/timer.h"
151
152struct _Image
153{
154 ClassType
155 storage_class;
156
157 ColorspaceType
158 colorspace; /* colorspace of image data */
159
160 CompressionType
161 compression; /* compression of image when read/write */
162
163 size_t
164 quality; /* compression quality setting, meaning varies */
165
166 OrientationType
167 orientation; /* photo orientation of image */
168
169 MagickBooleanType
170 taint, /* has image been modified since reading */
171 matte; /* is transparency channel defined and active */
172
173 size_t
174 columns, /* physical size of image */
175 rows,
176 depth, /* depth of image on read/write */
177 colors; /* size of color table on read */
178
180 *colormap,
181 background_color, /* current background color attribute */
182 border_color, /* current bordercolor attribute */
183 matte_color; /* current mattecolor attribute */
184
185 double
186 gamma;
187
189 chromaticity;
190
191 RenderingIntent
192 rendering_intent;
193
194 void
195 *profiles;
196
197 ResolutionType
198 units; /* resolution/density ppi or ppc */
199
200 char
201 *montage,
202 *directory,
203 *geometry;
204
205 ssize_t
206 offset;
207
208 double
209 x_resolution, /* image resolution/density */
210 y_resolution;
211
213 page, /* virtual canvas size and offset of image */
214 extract_info,
215 tile_info; /* deprecated */
216
217 double
218 bias,
219 blur, /* deprecated */
220 fuzz; /* current color fuzz attribute */
221
222 FilterTypes
223 filter; /* resize/distort filter to apply */
224
225 InterlaceType
226 interlace;
227
228 EndianType
229 endian; /* raw data integer ordering on read/write */
230
231 GravityType
232 gravity; /* Gravity attribute for positioning in image */
233
234 CompositeOperator
235 compose; /* alpha composition method for layered images */
236
237 DisposeType
238 dispose; /* GIF animation disposal method */
239
240 struct _Image
241 *clip_mask;
242
243 size_t
244 scene, /* index of image in multi-image file */
245 delay; /* Animation delay time */
246
247 ssize_t
248 ticks_per_second; /* units for delay time, default 100 for GIF */
249
250 size_t
251 iterations,
252 total_colors;
253
254 ssize_t
255 start_loop;
256
258 error;
259
261 timer;
262
263 MagickProgressMonitor
264 progress_monitor;
265
266 void
267 *client_data,
268 *cache,
269 *attributes; /* deprecated */
270
272 *ascii85;
273
275 *blob;
276
277 char
278 filename[MaxTextExtent], /* images input filename */
279 magick_filename[MaxTextExtent], /* ditto with coders, and read_mods */
280 magick[MaxTextExtent]; /* Coder used to decode image */
281
282 size_t
283 magick_columns,
284 magick_rows;
285
287 exception; /* Error handling report */
288
289 MagickBooleanType
290 debug; /* debug output attribute */
291
292 ssize_t
293 reference_count;
294
296 *semaphore;
297
299 color_profile,
300 iptc_profile,
301 *generic_profile;
302
303 size_t
304 generic_profiles; /* this & ProfileInfo is deprecated */
305
306 size_t
307 signature;
308
309 struct _Image
310 *previous, /* Image list links */
311 *list, /* Undo/Redo image processing list (for display) */
312 *next; /* Image list links */
313
314 InterpolatePixelMethod
315 interpolate; /* Interpolation of color for between pixel lookups */
316
317 MagickBooleanType
318 black_point_compensation;
319
321 transparent_color; /* color for 'transparent' color index in GIF */
322
323 struct _Image
324 *mask;
325
327 tile_offset;
328
329 void
330 *properties, /* per image properities */
331 *artifacts; /* per image sequence image artifacts */
332
333 ImageType
334 type;
335
336 MagickBooleanType
337 dither; /* dithering method during color reduction */
338
339 MagickSizeType
340 extent;
341
342 MagickBooleanType
343 ping;
344
345 size_t
346 channels;
347
348 time_t
349 timestamp;
350
351 PixelIntensityMethod
352 intensity; /* method to generate an intensity value from a pixel */
353
354 size_t
355 duration; /* Total animation duration sum(delay*iterations) */
356
357 long
358 tietz_offset;
359};
360
362{
363 CompressionType
364 compression;
365
366 OrientationType
367 orientation;
368
369 MagickBooleanType
370 temporary,
371 adjoin,
372 affirm,
373 antialias;
374
375 char
376 *size,
377 *extract,
378 *page,
379 *scenes;
380
381 size_t
382 scene,
383 number_scenes,
384 depth;
385
386 InterlaceType
387 interlace;
388
389 EndianType
390 endian;
391
392 ResolutionType
393 units;
394
395 size_t
396 quality;
397
398 char
399 *sampling_factor, /* Chroma subsampling ratio string */
400 *server_name,
401 *font,
402 *texture,
403 *density;
404
405 double
406 pointsize,
407 fuzz;
408
410 background_color,
411 border_color,
412 matte_color;
413
414 MagickBooleanType
415 dither,
416 monochrome;
417
418 size_t
419 colors;
420
421 ColorspaceType
422 colorspace;
423
424 ImageType
425 type;
426
427 PreviewType
428 preview_type;
429
430 ssize_t
431 group;
432
433 MagickBooleanType
434 ping,
435 verbose;
436
437 char
438 *view,
439 *authenticate;
440
441 ChannelType
442 channel;
443
444 Image
445 *attributes; /* deprecated */
446
447 void
448 *options;
449
450 MagickProgressMonitor
451 progress_monitor;
452
453 void
454 *client_data,
455 *cache;
456
457 StreamHandler
458 stream;
459
460 FILE
461 *file;
462
463 void
464 *blob;
465
466 size_t
467 length;
468
469 char
470 magick[MaxTextExtent],
471 unique[MaxTextExtent],
472 zero[MaxTextExtent],
473 filename[MaxTextExtent];
474
475 MagickBooleanType
476 debug;
477
478 char
479 *tile; /* deprecated */
480
481 size_t
482 subimage, /* deprecated */
483 subrange; /* deprecated */
484
486 pen; /* deprecated */
487
488 size_t
489 signature;
490
491 VirtualPixelMethod
492 virtual_pixel_method;
493
495 transparent_color;
496
497 void
498 *profile;
499
500 MagickBooleanType
501 synchronize;
502};
503
504extern MagickExport ExceptionType
505 CatchImageException(Image *);
506
507extern MagickExport FILE
508 *GetImageInfoFile(const ImageInfo *);
509
510extern MagickExport Image
511 *AcquireImage(const ImageInfo *),
512 *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
513 *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
514 ExceptionInfo *),
515 *DestroyImage(Image *),
516 *GetImageClipMask(const Image *,ExceptionInfo *) magick_attribute((__pure__)),
517 *GetImageMask(const Image *,ExceptionInfo *) magick_attribute((__pure__)),
518 *NewMagickImage(const ImageInfo *,const size_t,const size_t,
519 const MagickPixelPacket *),
520 *ReferenceImage(Image *),
521 *SmushImages(const Image *,const MagickBooleanType,const ssize_t,
522 ExceptionInfo *);
523
524extern MagickExport ImageInfo
525 *AcquireImageInfo(void),
526 *CloneImageInfo(const ImageInfo *),
527 *DestroyImageInfo(ImageInfo *);
528
529extern MagickExport MagickBooleanType
530 ClipImage(Image *),
531 ClipImagePath(Image *,const char *,const MagickBooleanType),
532 CopyImagePixels(Image *,const Image *,const RectangleInfo *,
533 const OffsetInfo *,ExceptionInfo *),
534 IsTaintImage(const Image *),
535 IsMagickConflict(const char *) magick_attribute((__pure__)),
536 IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
537 IsImageObject(const Image *),
538 ListMagickInfo(FILE *,ExceptionInfo *),
539 ModifyImage(Image **,ExceptionInfo *),
540 ResetImagePage(Image *,const char *),
541 ResetImagePixels(Image *,ExceptionInfo *),
542 SetImageBackgroundColor(Image *),
543 SetImageClipMask(Image *,const Image *),
544 SetImageColor(Image *,const MagickPixelPacket *),
545 SetImageExtent(Image *,const size_t,const size_t),
546 SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
547 SetImageMask(Image *,const Image *),
548 SetImageOpacity(Image *,const Quantum),
549 SetImageChannels(Image *,const size_t),
550 SetImageStorageClass(Image *,const ClassType),
551 StripImage(Image *),
552 SyncImage(Image *),
553 SyncImageSettings(const ImageInfo *,Image *),
554 SyncImagesSettings(ImageInfo *,Image *);
555
556extern MagickExport size_t
557 InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *);
558
559extern MagickExport ssize_t
560 GetImageReferenceCount(Image *);
561
562extern MagickExport size_t
563 GetImageChannels(Image *);
564
565extern MagickExport VirtualPixelMethod
566 GetImageVirtualPixelMethod(const Image *),
567 SetImageVirtualPixelMethod(const Image *,const VirtualPixelMethod);
568
569extern MagickExport void
570 AcquireNextImage(const ImageInfo *,Image *),
571 DestroyImagePixels(Image *),
572 DisassociateImageStream(Image *),
573 GetImageException(Image *,ExceptionInfo *),
574 GetImageInfo(ImageInfo *),
575 SetImageInfoBlob(ImageInfo *,const void *,const size_t),
576 SetImageInfoFile(ImageInfo *,FILE *);
577
578#if defined(__cplusplus) || defined(c_plusplus)
579}
580#endif
581
582#endif