MagickCore  6.9.12-67
Convert, Edit, Or Compose Bitmap Images
 All Data Structures
image.h
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 {
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 
49 typedef 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 
65 typedef enum
66 {
67  UndefinedInterlace,
68  NoInterlace,
69  LineInterlace,
70  PlaneInterlace,
71  PartitionInterlace,
72  GIFInterlace,
73  JPEGInterlace,
74  PNGInterlace
75 } InterlaceType;
76 
77 typedef enum
78 {
79  UndefinedOrientation,
80  TopLeftOrientation,
81  TopRightOrientation,
82  BottomRightOrientation,
83  BottomLeftOrientation,
84  LeftTopOrientation,
85  RightTopOrientation,
86  RightBottomOrientation,
87  LeftBottomOrientation
88 } OrientationType;
89 
90 typedef enum
91 {
92  UndefinedResolution,
93  PixelsPerInchResolution,
94  PixelsPerCentimeterResolution
95 } ResolutionType;
96 
97 typedef struct _PrimaryInfo
98 {
99  double
100  x,
101  y,
102  z;
103 } PrimaryInfo;
104 
105 typedef struct _SegmentInfo
106 {
107  double
108  x1,
109  y1,
110  x2,
111  y2;
112 } SegmentInfo;
113 
114 typedef enum
115 {
116  UndefinedTransmitType,
117  FileTransmitType,
118  BlobTransmitType,
119  StreamTransmitType,
120  ImageTransmitType
121 } TransmitType;
122 
123 typedef 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 
152 struct _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 
257  ErrorInfo
258  error;
259 
260  TimerInfo
261  timer;
262 
263  MagickProgressMonitor
264  progress_monitor;
265 
266  void
267  *client_data,
268  *cache,
269  *attributes; /* deprecated */
270 
272  *ascii85;
273 
274  BlobInfo
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  volatile 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 
504 extern MagickExport ExceptionType
505  CatchImageException(Image *);
506 
507 extern MagickExport FILE
508  *GetImageInfoFile(const ImageInfo *);
509 
510 extern 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 
524 extern MagickExport ImageInfo
525  *AcquireImageInfo(void),
526  *CloneImageInfo(const ImageInfo *),
527  *DestroyImageInfo(ImageInfo *);
528 
529 extern 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 
556 extern MagickExport size_t
557  InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *);
558 
559 extern MagickExport ssize_t
560  GetImageReferenceCount(Image *);
561 
562 extern MagickExport size_t
563  GetImageChannels(Image *);
564 
565 extern MagickExport VirtualPixelMethod
566  GetImageVirtualPixelMethod(const Image *),
567  SetImageVirtualPixelMethod(const Image *,const VirtualPixelMethod);
568 
569 extern 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
Definition: image.h:152