MagickCore  7.0.8
Convert, Edit, Or Compose Bitmap Images
image.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://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 #if defined(__cplusplus) || defined(c_plusplus)
22 extern "C" {
23 #endif
24 
25 #define OpaqueAlpha ((Quantum) QuantumRange)
26 #define TransparentAlpha ((Quantum) 0)
27 
28 typedef enum
29 {
47 
48 typedef enum
49 {
62 } ImageType;
63 
64 typedef enum
65 {
75 
76 typedef enum
77 {
88 
89 typedef enum
90 {
95 
96 typedef struct _PrimaryInfo
97 {
98  double
99  x,
100  y,
101  z;
102 } PrimaryInfo;
103 
104 typedef struct _SegmentInfo
105 {
106  double
107  x1,
108  y1,
109  x2,
110  y2;
111 } SegmentInfo;
112 
113 typedef enum
114 {
120 } TransmitType;
121 
122 typedef struct _ChromaticityInfo
123 {
127  blue_primary,
128  white_point;
130 
131 #include "MagickCore/blob.h"
132 #include "MagickCore/colorspace.h"
133 #include "MagickCore/cache-view.h"
134 #include "MagickCore/color.h"
135 #include "MagickCore/composite.h"
136 #include "MagickCore/compress.h"
137 #include "MagickCore/effect.h"
138 #include "MagickCore/geometry.h"
139 #include "MagickCore/layer.h"
140 #include "MagickCore/locale_.h"
141 #include "MagickCore/monitor.h"
142 #include "MagickCore/pixel.h"
143 #include "MagickCore/profile.h"
144 #include "MagickCore/quantum.h"
145 #include "MagickCore/resample.h"
146 #include "MagickCore/resize.h"
147 #include "MagickCore/semaphore.h"
148 #include "MagickCore/stream.h"
149 #include "MagickCore/timer.h"
150 
151 struct _Image
152 {
153  ClassType
155 
157  colorspace; /* colorspace of image data */
158 
160  compression; /* compression of image when read/write */
161 
162  size_t
163  quality; /* compression quality setting, meaning varies */
164 
166  orientation; /* photo orientation of image */
167 
169  taint; /* has image been modified since reading */
170 
171  size_t
172  columns, /* physical size of image */
173  rows,
174  depth, /* depth of image on read/write */
175  colors; /* Size of color table, or actual color count */
176  /* Only valid if image is not DirectClass */
177 
178  PixelInfo
180  alpha_color, /* deprecated */
181  background_color, /* current background color attribute */
182  border_color, /* current bordercolor attribute */
183  transparent_color; /* color for 'transparent' color index in GIF */
184 
185  double
187 
190 
193 
194  void
196 
198  units; /* resolution/density ppi or ppc */
199 
200  char
202  *directory,
203  *geometry;
204 
205  ssize_t
206  offset; /* ??? */
207 
208  PointInfo
209  resolution; /* image resolution/density */
210 
212  page, /* virtual canvas size and offset of image */
213  extract_info;
214 
215  double
216  fuzz; /* current color fuzz attribute - move to image_info */
217 
218  FilterType
219  filter; /* resize/distort filter to apply */
220 
222  intensity; /* method to generate an intensity value from a pixel */
223 
226 
227  EndianType
228  endian; /* raw data integer ordering on read/write */
229 
231  gravity; /* Gravity attribute for positioning in image */
232 
234  compose; /* alpha composition method for layered images */
235 
237  dispose; /* GIF animation disposal method */
238 
239  size_t
240  scene, /* index of image in multi-image file */
241  delay, /* Animation delay time */
242  duration; /* Total animation duration sum(delay*iterations) */
243 
244  ssize_t
245  ticks_per_second; /* units for delay time, default 100 for GIF */
246 
247  size_t
248  iterations, /* number of interations for GIF animations */
249  total_colors;
250 
251  ssize_t
252  start_loop; /* ??? */
253 
255  interpolate; /* Interpolation of color for between pixel lookups */
256 
259 
262 
263  ImageType
265 
267  dither; /* dithering on/off */
268 
270  extent; /* Size of image read from disk */
271 
273  ping; /* no image data read, just attributes */
274 
277  write_mask;
278 
279  PixelTrait
280  alpha_trait; /* is transparency channel defined and active */
281 
282  size_t
286 
289 
292 
293  void
295 
296  ErrorInfo
298 
299  TimerInfo
301 
304 
305  void
307 
310 
313 
314  void
315  *properties, /* general settings, to save with image */
316  *artifacts; /* general operational/coder settings, not saved */
317 
318  char
319  filename[MagickPathExtent], /* images input filename */
320  magick_filename[MagickPathExtent], /* given image filename (with read mods) */
321  magick[MagickPathExtent]; /* images file format (file magic) */
322 
323  size_t
324  magick_columns, /* size of image when read/created */
325  magick_rows;
326 
327  BlobInfo
328  *blob; /* image file as in-memory string of 'extent' */
329 
330  time_t
332 
334  debug; /* debug output attribute */
335 
336  volatile ssize_t
337  reference_count; /* image data sharing memory management */
338 
341 
342  struct _ImageInfo
343  *image_info; /* (Optional) Image belongs to this ImageInfo 'list'
344  * For access to 'global options' when no per-image
345  * attribute, properity, or artifact has been set.
346  */
347 
348  struct _Image
349  *list, /* Undo/Redo image processing list (for display) */
350  *previous, /* Image list links */
351  *next;
352 
353  size_t
355 
356  PixelInfo
357  matte_color; /* current mattecolor attribute */
358 
361 
362  PixelTrait
363  mask_trait; /* apply the clip or composite mask */
364 
367 };
368 
369 /*
370  ImageInfo structure:
371  Stores an image list, as well as all global settings used by all images
372  held, -- unless overridden for that specific image. See SyncImagesettings()
373  which maps any global setting that always overrides specific image settings.
374 */
376 {
378  compression; /* compression method when reading/saving image */
379 
381  orientation; /* orientation setting */
382 
384  temporary, /* image file to be deleted after read "empemeral:" */
385  adjoin, /* save images to separate scene files */
386  affirm,
387  antialias;
388 
389  char
390  *size, /* image generation size */
391  *extract, /* crop/resize string on image read */
392  *page,
393  *scenes; /* scene numbers that is to be read in */
394 
395  size_t
396  scene, /* starting value for image save numbering */
397  number_scenes, /* total number of images in list - for escapes */
398  depth; /* current read/save depth of images */
399 
401  interlace; /* interlace for image write */
402 
403  EndianType
404  endian; /* integer endian order for raw image data */
405 
407  units; /* denisty pixels/inch or pixel/cm */
408 
409  size_t
410  quality; /* compression quality */
411 
412  char
413  *sampling_factor, /* JPEG write sampling factor */
414  *server_name, /* X windows server name - display/animate */
415  *font, /* DUP for draw_info */
416  *texture, /* montage/display background tile */
417  *density; /* DUP for image and draw_info */
418 
419  double
421  fuzz; /* current color fuzz attribute */
422 
423  PixelInfo
424  alpha_color, /* deprecated */
425  background_color, /* user set background color */
426  border_color, /* user set border color */
427  transparent_color; /* color for transparent index in color tables */
428  /* NB: fill color is only needed in draw_info! */
429  /* the same for undercolor (for font drawing) */
430 
432  dither, /* dither enable-disable */
433  monochrome; /* read/write pcl,pdf,ps,xps as monocrome image */
434 
437 
440 
441  ImageType
443 
445  ping, /* fast read image attributes, not image data */
446  verbose; /* verbose output enable/disable */
447 
450 
451  void
452  *options; /* splay tree of global options */
453 
454  void
456 
459 
462 
463  void
465  *cache;
466 
469 
470  FILE
472 
473  void
475 
476  size_t
478 
479  char
480  magick[MagickPathExtent], /* image file format (file magick) */
481  unique[MagickPathExtent], /* unique tempory filename - delegates */
482  filename[MagickPathExtent]; /* filename when reading/writing image */
483 
486 
487  size_t
489 
492 
493  PixelInfo
494  matte_color; /* matte (frame) color */
495 };
496 
499 
500 extern MagickExport const char
503  LoadImageTag[],
504  LoadImagesTag[],
506  PSPageGeometry[],
507  SaveImageTag[],
508  SaveImagesTag[];
509 
510 extern MagickExport const double
512 
515 
516 extern MagickExport FILE
517  *GetImageInfoFile(const ImageInfo *);
518 
519 extern MagickExport Image
522  *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
523  ExceptionInfo *),
524  *DestroyImage(Image *),
525  *GetImageMask(const Image *,const PixelMask,ExceptionInfo *),
526  *NewMagickImage(const ImageInfo *,const size_t,const size_t,const PixelInfo *,
527  ExceptionInfo *),
528  *ReferenceImage(Image *),
529  *SmushImages(const Image *,const MagickBooleanType,const ssize_t,
530  ExceptionInfo *);
531 
532 extern MagickExport ImageInfo
533  *AcquireImageInfo(void),
534  *CloneImageInfo(const ImageInfo *),
536 
539  ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *),
540  CopyImagePixels(Image *,const Image *,const RectangleInfo *,
541  const OffsetInfo *,ExceptionInfo *),
542  IsTaintImage(const Image *),
544  IsImageObject(const Image *),
545  ListMagickInfo(FILE *,ExceptionInfo *),
547  ResetImagePage(Image *,const char *),
552  SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
553  SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
554  SetImageMask(Image *,const PixelMask type,const Image *,ExceptionInfo *),
555  SetImageRegionMask(Image *,const PixelMask type,const RectangleInfo *,
556  ExceptionInfo *),
562 
563 extern MagickExport size_t
564  InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *,
565  ExceptionInfo *);
566 
567 extern MagickExport ssize_t
569 
573 
574 extern MagickExport void
579  SetImageInfoBlob(ImageInfo *,const void *,const size_t),
580  SetImageInfoFile(ImageInfo *,FILE *),
582 
583 #if defined(__cplusplus) || defined(c_plusplus)
584 }
585 #endif
586 
587 #endif
size_t rows
Definition: image.h:172
PixelInfo matte_color
Definition: image.h:357
MagickExport MagickBooleanType StripImage(Image *, ExceptionInfo *)
PixelIntensityMethod intensity
Definition: image.h:222
EndianType endian
Definition: image.h:404
size_t signature
Definition: image.h:488
double x2
Definition: image.h:107
MagickExport VirtualPixelMethod GetImageVirtualPixelMethod(const Image *)
struct _Image * list
Definition: image.h:348
MagickExport MagickBooleanType SetImageAlpha(Image *, const Quantum, ExceptionInfo *)
PixelInfo * colormap
Definition: image.h:179
InterlaceType interlace
Definition: image.h:225
DisposeType dispose
Definition: image.h:237
Ascii85Info * ascii85
Definition: image.h:309
char magick[MagickPathExtent]
Definition: image.h:480
MagickProgressMonitor progress_monitor
Definition: image.h:303
char * scenes
Definition: image.h:390
ImageType type
Definition: image.h:264
size_t iterations
Definition: image.h:248
ssize_t ticks_per_second
Definition: image.h:245
MagickExport FILE * GetImageInfoFile(const ImageInfo *)
Definition: image.c:1403
MagickExport const char PSPageGeometry[]
Definition: image.c:120
PixelTrait mask_trait
Definition: image.h:363
FilterType
Definition: resample.h:32
FilterType filter
Definition: image.h:219
MagickExport MagickBooleanType ResetImagePixels(Image *, ExceptionInfo *)
AlphaChannelOption
Definition: image.h:28
MagickExport const char LoadImagesTag[]
Definition: image.c:117
double pointsize
Definition: image.h:420
MagickExport MagickBooleanType ModifyImage(Image **, ExceptionInfo *)
ProfileInfo * generic_profile
Definition: image.h:312
OrientationType
Definition: image.h:76
MagickBooleanType ping
Definition: image.h:273
char * extract
Definition: image.h:390
PixelInfo border_color
Definition: image.h:179
PixelInterpolateMethod
Definition: pixel.h:110
PixelInterpolateMethod interpolate
Definition: image.h:255
MagickExport MagickBooleanType SetImageBackgroundColor(Image *, ExceptionInfo *)
double x
Definition: image.h:99
size_t number_scenes
Definition: image.h:396
char * sampling_factor
Definition: image.h:413
TransmitType
Definition: image.h:113
EndianType endian
Definition: image.h:228
MagickBooleanType taint
Definition: image.h:169
PixelIntensityMethod
Definition: pixel.h:96
MagickBooleanType debug
Definition: image.h:485
MagickExport MagickBooleanType CopyImagePixels(Image *, const Image *, const RectangleInfo *, const OffsetInfo *, ExceptionInfo *)
char * font
Definition: image.h:413
MagickExport MagickBooleanType SyncImagesSettings(ImageInfo *, Image *, ExceptionInfo *)
Definition: image.c:3932
InterlaceType
Definition: image.h:64
VirtualPixelMethod
Definition: cache-view.h:27
ColorspaceType colorspace
Definition: image.h:436
void * artifacts
Definition: image.h:315
MagickExport ssize_t GetImageReferenceCount(Image *)
Definition: image.c:1562
struct _ChromaticityInfo ChromaticityInfo
double z
Definition: image.h:99
MagickBooleanType antialias
Definition: image.h:384
MagickBooleanType read_mask
Definition: image.h:276
PixelInfo transparent_color
Definition: image.h:424
MagickExport const double DefaultResolution
Definition: image.c:126
MagickExport const char LoadImageTag[]
Definition: image.c:116
size_t duration
Definition: image.h:240
MagickExport MagickBooleanType ListMagickInfo(FILE *, ExceptionInfo *)
ResolutionType units
Definition: image.h:198
size_t delay
Definition: image.h:240
char magick[MagickPathExtent]
Definition: image.h:319
MagickExport ImageInfo * DestroyImageInfo(ImageInfo *)
Definition: image.c:1248
size_t magick_rows
Definition: image.h:324
MagickBooleanType verbose
Definition: image.h:445
PixelInfo alpha_color
Definition: image.h:179
MagickExport size_t InterpretImageFilename(const ImageInfo *, Image *, const char *, int, char *, ExceptionInfo *)
Definition: image.c:1645
MagickExport ImageInfo * AcquireImageInfo(void)
MagickExport Image * NewMagickImage(const ImageInfo *, const size_t, const size_t, const PixelInfo *, ExceptionInfo *)
MagickExport MagickBooleanType ClipImagePath(Image *, const char *, const MagickBooleanType, ExceptionInfo *)
char * montage
Definition: image.h:201
CompressionType compression
Definition: image.h:160
InterlaceType interlace
Definition: image.h:401
ClassType storage_class
Definition: image.h:154
RectangleInfo tile_offset
Definition: image.h:261
EndianType
Definition: quantum.h:28
char * size
Definition: image.h:390
Definition: image.h:151
void * cache
Definition: image.h:464
ExceptionType
Definition: exception.h:27
MagickExport Image * ReferenceImage(Image *)
ImageType type
Definition: image.h:442
StreamHandler stream
Definition: image.h:468
size_t number_meta_channels
Definition: image.h:283
MagickExport Image * GetImageMask(const Image *, const PixelMask, ExceptionInfo *)
void * profiles
Definition: image.h:195
MagickExport void DestroyImagePixels(Image *)
ChannelType channel
Definition: image.h:449
MagickBooleanType
Definition: magick-type.h:156
PixelInfo matte_color
Definition: image.h:494
PrimaryInfo red_primary
Definition: image.h:125
size_t scene
Definition: image.h:240
MagickExport void AcquireNextImage(const ImageInfo *, Image *, ExceptionInfo *)
ClassType
Definition: magick-type.h:149
MagickBooleanType black_point_compensation
Definition: image.h:258
size_t length
Definition: image.h:477
struct _ImageInfo * image_info
Definition: image.h:342
double x1
Definition: image.h:107
MagickExport ImageInfo * CloneImageInfo(const ImageInfo *)
char filename[MagickPathExtent]
Definition: image.h:480
CustomStreamInfo * custom_stream
Definition: image.h:491
MagickExport const char SaveImagesTag[]
Definition: image.c:122
void * blob
Definition: image.h:474
double fuzz
Definition: image.h:420
ChannelType channel_mask
Definition: image.h:288
MagickExport Image * DestroyImage(Image *)
GravityType gravity
Definition: image.h:231
struct _PrimaryInfo PrimaryInfo
volatile ssize_t reference_count
Definition: image.h:337
size_t scene
Definition: image.h:396
MagickExport const char DefaultTileGeometry[]
Definition: image.c:113
RectangleInfo page
Definition: image.h:212
size_t magick_columns
Definition: image.h:324
MagickExport MagickBooleanType IsTaintImage(const Image *)
size_t MagickSizeType
Definition: magick-type.h:128
#define MagickPathExtent
void * cache
Definition: image.h:294
ResolutionType units
Definition: image.h:407
CompressionType compression
Definition: image.h:378
PixelInfo alpha_color
Definition: image.h:424
PrimaryInfo blue_primary
Definition: image.h:125
OrientationType orientation
Definition: image.h:381
PixelTrait alpha_trait
Definition: image.h:280
MagickBooleanType monochrome
Definition: image.h:432
MagickExport void SetImageInfoFile(ImageInfo *, FILE *)
GravityType
Definition: geometry.h:77
char magick_filename[MagickPathExtent]
Definition: image.h:319
struct _Image * previous
Definition: image.h:348
double y2
Definition: image.h:107
MagickExport const char DefaultTileLabel[]
Definition: image.c:114
MagickBooleanType dither
Definition: image.h:267
size_t signature
Definition: image.h:354
size_t columns
Definition: image.h:172
MagickBooleanType(* MagickProgressMonitor)(const char *, const MagickOffsetType, const MagickSizeType, void *)
Definition: monitor.h:26
SemaphoreInfo * semaphore
Definition: image.h:340
struct _Image * next
Definition: image.h:348
ChannelType
Definition: pixel.h:33
ssize_t offset
Definition: image.h:206
RectangleInfo extract_info
Definition: image.h:212
MagickExport MagickBooleanType SetImageStorageClass(Image *, const ClassType, ExceptionInfo *)
char * texture
Definition: image.h:413
RenderingIntent
Definition: profile.h:30
double y
Definition: image.h:99
MagickExport MagickBooleanType SetImageInfo(ImageInfo *, const unsigned int, ExceptionInfo *)
size_t quality
Definition: image.h:163
size_t colors
Definition: image.h:172
TimerInfo timer
Definition: image.h:300
MagickExport const char PSDensityGeometry[]
Definition: image.c:119
MagickExport Image * AcquireImage(const ImageInfo *, ExceptionInfo *)
PixelInfo border_color
Definition: image.h:424
DisposeType
Definition: layer.h:27
char filename[MagickPathExtent]
Definition: image.h:319
PrimaryInfo green_primary
Definition: image.h:125
MagickExport Image * SmushImages(const Image *, const MagickBooleanType, const ssize_t, ExceptionInfo *)
Definition: image.c:3625
MagickExport VirtualPixelMethod SetImageVirtualPixelMethod(Image *, const VirtualPixelMethod, ExceptionInfo *)
Definition: image.c:3438
size_t quality
Definition: image.h:410
MagickBooleanType affirm
Definition: image.h:384
MagickBooleanType composite_mask
Definition: image.h:360
MagickExport MagickBooleanType SetImageColor(Image *, const PixelInfo *, ExceptionInfo *)
PrimaryInfo white_point
Definition: image.h:125
void * client_data
Definition: image.h:464
char * density
Definition: image.h:413
char unique[MagickPathExtent]
Definition: image.h:480
MagickExport MagickBooleanType SetImageMask(Image *, const PixelMask type, const Image *, ExceptionInfo *)
CompressionType
Definition: compress.h:25
ssize_t start_loop
Definition: image.h:252
RenderingIntent rendering_intent
Definition: image.h:192
ErrorInfo error
Definition: image.h:297
MagickExport void SetImageInfoBlob(ImageInfo *, const void *, const size_t)
MagickBooleanType synchronize
Definition: image.h:458
unsigned short Quantum
Definition: magick-type.h:82
MagickExport void GetImageInfo(ImageInfo *)
char * server_name
Definition: image.h:413
ChannelType channels
Definition: image.h:366
MagickExport Image * AppendImages(const Image *, const MagickBooleanType, ExceptionInfo *)
char * geometry
Definition: image.h:201
MagickExport MagickBooleanType SetImageRegionMask(Image *, const PixelMask type, const RectangleInfo *, ExceptionInfo *)
size_t number_channels
Definition: image.h:283
time_t timestamp
Definition: image.h:331
MagickBooleanType dither
Definition: image.h:432
char * directory
Definition: image.h:201
ChromaticityInfo chromaticity
Definition: image.h:189
BlobInfo * blob
Definition: image.h:328
FILE * file
Definition: image.h:471
MagickExport ChannelType SetImageChannelMask(Image *, const ChannelType)
Definition: image.c:2497
size_t metacontent_extent
Definition: image.h:283
ColorspaceType
Definition: colorspace.h:25
MagickExport const char SaveImageTag[]
Definition: image.c:121
CompositeOperator compose
Definition: image.h:439
MagickExport Image * CloneImage(const Image *, const size_t, const size_t, const MagickBooleanType, ExceptionInfo *)
MagickExport MagickBooleanType SyncImageSettings(const ImageInfo *, Image *, ExceptionInfo *)
size_t total_colors
Definition: image.h:248
PointInfo resolution
Definition: image.h:209
void * properties
Definition: image.h:315
void * options
Definition: image.h:452
MagickExport MagickBooleanType ClipImage(Image *, ExceptionInfo *)
MagickExport MagickBooleanType ResetImagePage(Image *, const char *)
ImageType
Definition: image.h:48
CompositeOperator compose
Definition: image.h:234
MagickExport void DisassociateImageStream(Image *)
CompositeOperator
Definition: composite.h:25
ResolutionType
Definition: image.h:89
#define MagickExport
MagickSizeType extent
Definition: image.h:270
OrientationType orientation
Definition: image.h:166
MagickProgressMonitor progress_monitor
Definition: image.h:461
double fuzz
Definition: image.h:216
MagickExport void SetImageInfoCustomStream(ImageInfo *, CustomStreamInfo *)
Definition: image.c:3103
MagickExport MagickBooleanType IsImageObject(const Image *)
MagickExport MagickBooleanType IsHighDynamicRangeImage(const Image *, ExceptionInfo *)
double y1
Definition: image.h:107
MagickBooleanType adjoin
Definition: image.h:384
PixelMask
Definition: pixel.h:127
char * page
Definition: image.h:390
MagickBooleanType ping
Definition: image.h:445
PixelTrait
Definition: pixel.h:135
PixelInfo transparent_color
Definition: image.h:179
struct _SegmentInfo SegmentInfo
MagickExport MagickBooleanType SetImageExtent(Image *, const size_t, const size_t, ExceptionInfo *)
MagickBooleanType write_mask
Definition: image.h:276
PixelInfo background_color
Definition: image.h:179
MagickExport ExceptionType CatchImageException(Image *)
Definition: image.c:641
void * client_data
Definition: image.h:306
double gamma
Definition: image.h:186
PixelInfo background_color
Definition: image.h:424
ColorspaceType colorspace
Definition: image.h:157
size_t(* StreamHandler)(const Image *, const void *, const size_t)
Definition: stream.h:31
MagickBooleanType temporary
Definition: image.h:384
PixelChannelMap * channel_map
Definition: image.h:291
MagickBooleanType debug
Definition: image.h:334
size_t depth
Definition: image.h:396
void * profile
Definition: image.h:455
size_t depth
Definition: image.h:172
MagickExport MagickBooleanType SyncImage(Image *, ExceptionInfo *)