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