MagickCore  6.9.11-60
Convert, Edit, Or Compose Bitmap Images
image.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 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)
24 extern "C" {
25 #endif
26 
27 #define OpaqueOpacity ((Quantum) 0UL)
28 #define TransparentOpacity (QuantumRange)
29 
30 typedef enum
31 {
39  ResetAlphaChannel, /* deprecated */
48 
49 typedef enum
50 {
64 
65 typedef enum
66 {
76 
77 typedef enum
78 {
89 
90 typedef enum
91 {
96 
97 typedef struct _PrimaryInfo
98 {
99  double
100  x,
101  y,
102  z;
104 
105 typedef struct _SegmentInfo
106 {
107  double
108  x1,
109  y1,
110  x2,
111  y2;
113 
114 typedef enum
115 {
122 
123 typedef struct _ChromaticityInfo
124 {
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 
152 struct _Image
153 {
154  ClassType
156 
158  colorspace; /* colorspace of image data */
159 
161  compression; /* compression of image when read/write */
162 
163  size_t
164  quality; /* compression quality setting, meaning varies */
165 
167  orientation; /* photo orientation of image */
168 
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 */
176  depth, /* depth of image on read/write */
177  colors; /* size of color table on read */
178 
181  background_color, /* current background color attribute */
182  border_color, /* current bordercolor attribute */
183  matte_color; /* current mattecolor attribute */
184 
185  double
187 
190 
193 
194  void
196 
198  units; /* resolution/density ppi or ppc */
199 
200  char
204 
205  ssize_t
207 
208  double
209  x_resolution, /* image resolution/density */
211 
213  page, /* virtual canvas size and offset of image */
215  tile_info; /* deprecated */
216 
217  double
219  blur, /* deprecated */
220  fuzz; /* current color fuzz attribute */
221 
223  filter; /* resize/distort filter to apply */
224 
227 
228  EndianType
229  endian; /* raw data integer ordering on read/write */
230 
232  gravity; /* Gravity attribute for positioning in image */
233 
235  compose; /* alpha composition method for layered images */
236 
238  dispose; /* GIF animation disposal method */
239 
240  struct _Image
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
253 
254  ssize_t
256 
257  ErrorInfo
259 
260  TimerInfo
262 
265 
266  void
269  *attributes; /* deprecated */
270 
273 
274  BlobInfo
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
285 
287  exception; /* Error handling report */
288 
290  debug; /* debug output attribute */
291 
292  volatile ssize_t
294 
297 
302 
303  size_t
304  generic_profiles; /* this & ProfileInfo is deprecated */
305 
306  size_t
308 
309  struct _Image
310  *previous, /* Image list links */
311  *list, /* Undo/Redo image processing list (for display) */
312  *next; /* Image list links */
313 
315  interpolate; /* Interpolation of color for between pixel lookups */
316 
319 
321  transparent_color; /* color for 'transparent' color index in GIF */
322 
323  struct _Image
325 
328 
329  void
330  *properties, /* per image properities */
331  *artifacts; /* per image sequence image artifacts */
332 
333  ImageType
335 
337  dither; /* dithering method during color reduction */
338 
341 
344 
345  size_t
347 
348  time_t
350 
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
359 };
360 
362 {
365 
368 
374 
375  char
380 
381  size_t
385 
388 
389  EndianType
391 
394 
395  size_t
397 
398  char
404 
405  double
408 
413 
417 
418  size_t
420 
423 
424  ImageType
426 
429 
430  ssize_t
432 
436 
437  char
440 
443 
444  Image
445  *attributes; /* deprecated */
446 
447  void
449 
452 
453  void
456 
459 
460  FILE
462 
463  void
465 
466  size_t
468 
469  char
474 
477 
478  char
479  *tile; /* deprecated */
480 
481  size_t
482  subimage, /* deprecated */
483  subrange; /* deprecated */
484 
486  pen; /* deprecated */
487 
488  size_t
490 
493 
496 
497  void
499 
502 };
503 
506 
507 extern MagickExport FILE
508  *GetImageInfoFile(const ImageInfo *);
509 
510 extern MagickExport Image
513  *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
514  ExceptionInfo *),
518  *NewMagickImage(const ImageInfo *,const size_t,const size_t,
519  const MagickPixelPacket *),
521  *SmushImages(const Image *,const MagickBooleanType,const ssize_t,
522  ExceptionInfo *);
523 
524 extern MagickExport ImageInfo
528 
531  ClipImagePath(Image *,const char *,const MagickBooleanType),
533  const OffsetInfo *,ExceptionInfo *),
534  IsTaintImage(const Image *),
535  IsMagickConflict(const char *) magick_attribute((__pure__)),
540  ResetImagePage(Image *,const char *),
545  SetImageExtent(Image *,const size_t,const size_t),
546  SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
549  SetImageChannels(Image *,const size_t),
555 
556 extern MagickExport size_t
557  InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *);
558 
559 extern MagickExport ssize_t
561 
562 extern MagickExport size_t
564 
568 
569 extern MagickExport void
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
VirtualPixelMethod
Definition: cache-view.h:28
ColorspaceType
Definition: colorspace.h:26
CompositeOperator
Definition: composite.h:26
CompressionType
Definition: compress.h:26
MagickExport MagickBooleanType magick_attribute((deprecated))
PreviewType
Definition: effect.h:28
ExceptionType
Definition: exception.h:29
GravityType
Definition: geometry.h:80
OrientationType
Definition: image.h:78
@ LeftTopOrientation
Definition: image.h:84
@ LeftBottomOrientation
Definition: image.h:87
@ TopLeftOrientation
Definition: image.h:80
@ RightTopOrientation
Definition: image.h:85
@ TopRightOrientation
Definition: image.h:81
@ UndefinedOrientation
Definition: image.h:79
@ RightBottomOrientation
Definition: image.h:86
@ BottomLeftOrientation
Definition: image.h:83
@ BottomRightOrientation
Definition: image.h:82
MagickExport void GetImageException(Image *, ExceptionInfo *)
MagickExport MagickBooleanType IsImageObject(const Image *)
MagickExport MagickBooleanType SyncImagesSettings(ImageInfo *, Image *)
Definition: image.c:3782
MagickExport Image * CloneImage(const Image *, const size_t, const size_t, const MagickBooleanType, ExceptionInfo *)
MagickExport MagickBooleanType ResetImagePixels(Image *, ExceptionInfo *)
MagickExport Image * SmushImages(const Image *, const MagickBooleanType, const ssize_t, ExceptionInfo *)
Definition: image.c:3474
MagickExport MagickBooleanType SetImageMask(Image *, const Image *)
MagickExport MagickBooleanType SetImageClipMask(Image *, const Image *)
MagickExport size_t InterpretImageFilename(const ImageInfo *, Image *, const char *, int, char *)
Definition: image.c:1658
MagickExport MagickBooleanType ResetImagePage(Image *, const char *)
ImageType
Definition: image.h:50
@ GrayscaleMatteType
Definition: image.h:54
@ TrueColorType
Definition: image.h:57
@ ColorSeparationMatteType
Definition: image.h:60
@ TrueColorMatteType
Definition: image.h:58
@ PaletteMatteType
Definition: image.h:56
@ ColorSeparationType
Definition: image.h:59
@ BilevelType
Definition: image.h:52
@ PaletteBilevelMatteType
Definition: image.h:62
@ UndefinedType
Definition: image.h:51
@ GrayscaleType
Definition: image.h:53
@ OptimizeType
Definition: image.h:61
@ PaletteType
Definition: image.h:55
ResolutionType
Definition: image.h:91
@ PixelsPerInchResolution
Definition: image.h:93
@ PixelsPerCentimeterResolution
Definition: image.h:94
@ UndefinedResolution
Definition: image.h:92
MagickExport size_t GetImageChannels(Image *)
Definition: image.c:1546
MagickExport MagickBooleanType ListMagickInfo(FILE *, ExceptionInfo *)
MagickExport MagickBooleanType SyncImage(Image *)
MagickExport FILE * GetImageInfoFile(const ImageInfo *)
Definition: image.c:1485
MagickExport VirtualPixelMethod GetImageVirtualPixelMethod(const Image *)
MagickExport Image * NewMagickImage(const ImageInfo *, const size_t, const size_t, const MagickPixelPacket *)
MagickExport MagickBooleanType ModifyImage(Image **, ExceptionInfo *)
MagickExport void DisassociateImageStream(Image *)
MagickExport MagickBooleanType IsTaintImage(const Image *)
MagickExport Image * DestroyImage(Image *)
struct _PrimaryInfo PrimaryInfo
AlphaChannelType
Definition: image.h:31
@ TransparentAlphaChannel
Definition: image.h:42
@ OpaqueAlphaChannel
Definition: image.h:38
@ RemoveAlphaChannel
Definition: image.h:44
@ AssociateAlphaChannel
Definition: image.h:45
@ DisassociateAlphaChannel
Definition: image.h:46
@ ResetAlphaChannel
Definition: image.h:39
@ ActivateAlphaChannel
Definition: image.h:33
@ SetAlphaChannel
Definition: image.h:40
@ DeactivateAlphaChannel
Definition: image.h:36
@ CopyAlphaChannel
Definition: image.h:35
@ FlattenAlphaChannel
Definition: image.h:43
@ ShapeAlphaChannel
Definition: image.h:41
@ BackgroundAlphaChannel
Definition: image.h:34
@ ExtractAlphaChannel
Definition: image.h:37
@ UndefinedAlphaChannel
Definition: image.h:32
MagickExport MagickBooleanType SetImageBackgroundColor(Image *)
MagickExport Image * GetImageMask(const Image *, ExceptionInfo *) magick_attribute((__pure__))
MagickExport VirtualPixelMethod SetImageVirtualPixelMethod(const Image *, const VirtualPixelMethod)
Definition: image.c:3287
MagickExport void GetImageInfo(ImageInfo *)
MagickExport MagickBooleanType SetImageOpacity(Image *, const Quantum)
TransmitType
Definition: image.h:115
@ ImageTransmitType
Definition: image.h:120
@ UndefinedTransmitType
Definition: image.h:116
@ FileTransmitType
Definition: image.h:117
@ BlobTransmitType
Definition: image.h:118
@ StreamTransmitType
Definition: image.h:119
MagickExport ImageInfo * DestroyImageInfo(ImageInfo *)
Definition: image.c:1247
MagickExport void AcquireNextImage(const ImageInfo *, Image *)
MagickExport ExceptionType CatchImageException(Image *)
Definition: image.c:621
MagickExport MagickBooleanType SetImageStorageClass(Image *, const ClassType)
MagickExport MagickBooleanType SetImageExtent(Image *, const size_t, const size_t)
MagickExport MagickBooleanType ClipImage(Image *)
MagickExport MagickBooleanType IsMagickConflict(const char *) magick_attribute((__pure__))
MagickExport void SetImageInfoFile(ImageInfo *, FILE *)
Definition: image.c:3123
MagickExport void DestroyImagePixels(Image *)
MagickExport Image * AcquireImage(const ImageInfo *)
struct _SegmentInfo SegmentInfo
MagickExport Image * GetImageClipMask(const Image *, ExceptionInfo *) magick_attribute((__pure__))
struct _ChromaticityInfo ChromaticityInfo
MagickExport Image * ReferenceImage(Image *)
MagickExport void SetImageInfoBlob(ImageInfo *, const void *, const size_t)
MagickExport MagickBooleanType SyncImageSettings(const ImageInfo *, Image *)
MagickExport ImageInfo * AcquireImageInfo(void)
MagickExport Image * AppendImages(const Image *, const MagickBooleanType, ExceptionInfo *)
MagickExport MagickBooleanType SetImageColor(Image *, const MagickPixelPacket *)
MagickExport ImageInfo * CloneImageInfo(const ImageInfo *)
MagickExport MagickBooleanType SetImageInfo(ImageInfo *, const unsigned int, ExceptionInfo *)
MagickExport MagickBooleanType ClipImagePath(Image *, const char *, const MagickBooleanType)
MagickExport MagickBooleanType CopyImagePixels(Image *, const Image *, const RectangleInfo *, const OffsetInfo *, ExceptionInfo *)
MagickExport MagickBooleanType IsHighDynamicRangeImage(const Image *, ExceptionInfo *)
MagickExport MagickBooleanType SetImageChannels(Image *, const size_t)
InterlaceType
Definition: image.h:66
@ PartitionInterlace
Definition: image.h:71
@ PNGInterlace
Definition: image.h:74
@ GIFInterlace
Definition: image.h:72
@ JPEGInterlace
Definition: image.h:73
@ LineInterlace
Definition: image.h:69
@ NoInterlace
Definition: image.h:68
@ PlaneInterlace
Definition: image.h:70
@ UndefinedInterlace
Definition: image.h:67
MagickExport ssize_t GetImageReferenceCount(Image *)
Definition: image.c:1577
MagickExport MagickBooleanType StripImage(Image *)
DisposeType
Definition: layer.h:26
ChannelType
Definition: magick-type.h:169
unsigned short Quantum
Definition: magick-type.h:89
ClassType
Definition: magick-type.h:196
size_t MagickSizeType
Definition: magick-type.h:140
MagickBooleanType
Definition: magick-type.h:203
#define MagickExport
Definition: method-attribute.h:80
#define MaxTextExtent
Definition: method-attribute.h:89
MagickBooleanType(* MagickProgressMonitor)(const char *, const MagickOffsetType, const MagickSizeType, void *)
Definition: monitor.h:26
PixelIntensityMethod
Definition: pixel.h:68
InterpolatePixelMethod
Definition: pixel.h:32
RenderingIntent
Definition: profile.h:43
EndianType
Definition: quantum.h:32
FilterTypes
Definition: resample.h:33
size_t(* StreamHandler)(const Image *, const void *, const size_t)
Definition: stream.h:26
Definition: semaphore.c:61
Definition: compress.c:70
Definition: blob.c:116
Definition: image.h:124
PrimaryInfo green_primary
Definition: image.h:127
PrimaryInfo red_primary
Definition: image.h:126
PrimaryInfo white_point
Definition: image.h:129
PrimaryInfo blue_primary
Definition: image.h:128
Definition: color.h:65
Definition: exception.h:103
Definition: image.h:362
PixelPacket border_color
Definition: image.h:411
MagickBooleanType monochrome
Definition: image.h:416
MagickBooleanType debug
Definition: image.h:476
char * texture
Definition: image.h:402
PreviewType preview_type
Definition: image.h:428
char filename[MaxTextExtent]
Definition: image.h:473
MagickBooleanType verbose
Definition: image.h:435
size_t number_scenes
Definition: image.h:383
PixelPacket pen
Definition: image.h:486
Image * attributes
Definition: image.h:445
char * page
Definition: image.h:378
void * blob
Definition: image.h:464
size_t signature
Definition: image.h:489
char * server_name
Definition: image.h:400
char * scenes
Definition: image.h:379
PixelPacket transparent_color
Definition: image.h:495
StreamHandler stream
Definition: image.h:458
ImageType type
Definition: image.h:425
MagickBooleanType affirm
Definition: image.h:372
MagickBooleanType dither
Definition: image.h:415
void * options
Definition: image.h:448
MagickBooleanType adjoin
Definition: image.h:371
size_t depth
Definition: image.h:384
size_t subrange
Definition: image.h:483
CompressionType compression
Definition: image.h:364
ResolutionType units
Definition: image.h:393
size_t colors
Definition: image.h:419
VirtualPixelMethod virtual_pixel_method
Definition: image.h:492
double pointsize
Definition: image.h:406
char * density
Definition: image.h:403
MagickProgressMonitor progress_monitor
Definition: image.h:451
OrientationType orientation
Definition: image.h:367
double fuzz
Definition: image.h:407
FILE * file
Definition: image.h:461
char * tile
Definition: image.h:479
PixelPacket background_color
Definition: image.h:410
PixelPacket matte_color
Definition: image.h:412
ColorspaceType colorspace
Definition: image.h:422
char * extract
Definition: image.h:377
void * client_data
Definition: image.h:454
ssize_t group
Definition: image.h:431
char zero[MaxTextExtent]
Definition: image.h:472
char magick[MaxTextExtent]
Definition: image.h:470
size_t quality
Definition: image.h:396
InterlaceType interlace
Definition: image.h:387
char * size
Definition: image.h:376
MagickBooleanType synchronize
Definition: image.h:501
MagickBooleanType temporary
Definition: image.h:370
char unique[MaxTextExtent]
Definition: image.h:471
char * authenticate
Definition: image.h:439
MagickBooleanType antialias
Definition: image.h:373
void * profile
Definition: image.h:498
ChannelType channel
Definition: image.h:442
size_t length
Definition: image.h:467
char * font
Definition: image.h:401
char * view
Definition: image.h:438
char * sampling_factor
Definition: image.h:399
void * cache
Definition: image.h:455
size_t subimage
Definition: image.h:482
size_t scene
Definition: image.h:382
EndianType endian
Definition: image.h:390
MagickBooleanType ping
Definition: image.h:434
Definition: image.h:153
ColorspaceType colorspace
Definition: image.h:158
ExceptionInfo exception
Definition: image.h:287
EndianType endian
Definition: image.h:229
size_t iterations
Definition: image.h:251
size_t delay
Definition: image.h:245
TimerInfo timer
Definition: image.h:261
long tietz_offset
Definition: image.h:358
MagickBooleanType debug
Definition: image.h:290
RectangleInfo tile_info
Definition: image.h:215
size_t channels
Definition: image.h:346
RectangleInfo tile_offset
Definition: image.h:327
Ascii85Info * ascii85
Definition: image.h:272
ssize_t offset
Definition: image.h:206
size_t quality
Definition: image.h:164
PixelPacket border_color
Definition: image.h:182
char filename[MaxTextExtent]
Definition: image.h:278
OrientationType orientation
Definition: image.h:167
double blur
Definition: image.h:219
ClassType storage_class
Definition: image.h:155
PixelIntensityMethod intensity
Definition: image.h:352
DisposeType dispose
Definition: image.h:238
void * client_data
Definition: image.h:267
char * directory
Definition: image.h:202
double fuzz
Definition: image.h:220
MagickBooleanType taint
Definition: image.h:170
size_t columns
Definition: image.h:174
CompositeOperator compose
Definition: image.h:235
SemaphoreInfo * semaphore
Definition: image.h:296
size_t duration
Definition: image.h:355
struct _Image * mask
Definition: image.h:323
ProfileInfo color_profile
Definition: image.h:299
PixelPacket transparent_color
Definition: image.h:321
FilterTypes filter
Definition: image.h:223
char * geometry
Definition: image.h:203
char * montage
Definition: image.h:201
BlobInfo * blob
Definition: image.h:275
PixelPacket matte_color
Definition: image.h:183
size_t colors
Definition: image.h:177
MagickSizeType extent
Definition: image.h:340
ChromaticityInfo chromaticity
Definition: image.h:189
double y_resolution
Definition: image.h:210
InterpolatePixelMethod interpolate
Definition: image.h:315
PixelPacket background_color
Definition: image.h:181
char magick[MaxTextExtent]
Definition: image.h:280
RectangleInfo page
Definition: image.h:213
size_t signature
Definition: image.h:307
size_t depth
Definition: image.h:176
MagickBooleanType black_point_compensation
Definition: image.h:318
MagickBooleanType dither
Definition: image.h:337
ssize_t ticks_per_second
Definition: image.h:248
size_t total_colors
Definition: image.h:252
void * profiles
Definition: image.h:195
void * artifacts
Definition: image.h:331
ErrorInfo error
Definition: image.h:258
struct _Image * clip_mask
Definition: image.h:240
void * properties
Definition: image.h:330
void * attributes
Definition: image.h:269
void * cache
Definition: image.h:268
InterlaceType interlace
Definition: image.h:226
RenderingIntent rendering_intent
Definition: image.h:192
ProfileInfo iptc_profile
Definition: image.h:300
MagickBooleanType matte
Definition: image.h:171
size_t rows
Definition: image.h:175
size_t generic_profiles
Definition: image.h:304
ssize_t start_loop
Definition: image.h:255
struct _Image * previous
Definition: image.h:309
RectangleInfo extract_info
Definition: image.h:214
MagickProgressMonitor progress_monitor
Definition: image.h:264
GravityType gravity
Definition: image.h:232
ImageType type
Definition: image.h:334
PixelPacket * colormap
Definition: image.h:180
struct _Image * next
Definition: image.h:312
CompressionType compression
Definition: image.h:161
volatile ssize_t reference_count
Definition: image.h:293
size_t scene
Definition: image.h:244
ProfileInfo * generic_profile
Definition: image.h:301
double bias
Definition: image.h:218
struct _Image * list
Definition: image.h:311
double gamma
Definition: image.h:186
double x_resolution
Definition: image.h:209
char magick_filename[MaxTextExtent]
Definition: image.h:279
ResolutionType units
Definition: image.h:198
size_t magick_rows
Definition: image.h:284
size_t magick_columns
Definition: image.h:283
time_t timestamp
Definition: image.h:349
MagickBooleanType ping
Definition: image.h:343
Definition: pixel.h:105
Definition: geometry.h:117
Definition: pixel.h:132
Definition: image.h:98
double y
Definition: image.h:101
double z
Definition: image.h:102
double x
Definition: image.h:100
Definition: profile.h:28
Definition: geometry.h:124
Definition: image.h:106
double x2
Definition: image.h:110
double y2
Definition: image.h:111
double y1
Definition: image.h:109
double x1
Definition: image.h:108
Definition: timer.h:41