]> granicus.if.org Git - imagemagick/blob - magick/image.h
(no commit message)
[imagemagick] / magick / image.h
1 /*
2   Copyright 1999-2010 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 <magick/color.h>
26
27 #define OpaqueOpacity  ((Quantum) 0UL)
28 #define TransparentOpacity  ((Quantum) 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 } AlphaChannelType;
44
45 typedef enum
46 {
47   UndefinedType,
48   BilevelType,
49   GrayscaleType,
50   GrayscaleMatteType,
51   PaletteType,
52   PaletteMatteType,
53   TrueColorType,
54   TrueColorMatteType,
55   ColorSeparationType,
56   ColorSeparationMatteType,
57   OptimizeType,
58   PaletteBilevelMatteType
59 } ImageType;
60
61 typedef enum
62 {
63   UndefinedInterlace,
64   NoInterlace,
65   LineInterlace,
66   PlaneInterlace,
67   PartitionInterlace,
68   GIFInterlace,
69   JPEGInterlace,
70   PNGInterlace
71 } InterlaceType;
72
73 typedef enum
74 {
75   UndefinedOrientation,
76   TopLeftOrientation,
77   TopRightOrientation,
78   BottomRightOrientation,
79   BottomLeftOrientation,
80   LeftTopOrientation,
81   RightTopOrientation,
82   RightBottomOrientation,
83   LeftBottomOrientation
84 } OrientationType;
85
86 typedef enum
87 {
88   UndefinedResolution,
89   PixelsPerInchResolution,
90   PixelsPerCentimeterResolution
91 } ResolutionType;
92
93 typedef struct _PrimaryInfo
94 {
95   double
96     x,
97     y,
98     z;
99 } PrimaryInfo;
100
101 typedef struct _SegmentInfo
102 {
103   double
104     x1,
105     y1,
106     x2,
107     y2;
108 } SegmentInfo;
109
110 typedef enum
111 {
112   UndefinedTransmitType,
113   FileTransmitType,
114   BlobTransmitType,
115   StreamTransmitType,
116   ImageTransmitType
117 } TransmitType;
118
119 typedef struct _ChromaticityInfo
120 {
121   PrimaryInfo
122     red_primary,
123     green_primary,
124     blue_primary,
125     white_point;
126 } ChromaticityInfo;
127
128 #include "magick/blob.h"
129 #include "magick/colorspace.h"
130 #include "magick/cache-view.h"
131 #include "magick/color.h"
132 #include "magick/composite.h"
133 #include "magick/compress.h"
134 #include "magick/effect.h"
135 #include "magick/geometry.h"
136 #include "magick/layer.h"
137 #include "magick/monitor.h"
138 #include "magick/pixel.h"
139 #include "magick/profile.h"
140 #include "magick/quantum.h"
141 #include "magick/resample.h"
142 #include "magick/resize.h"
143 #include "magick/semaphore.h"
144 #include "magick/stream.h"
145 #include "magick/timer.h"
146
147 struct _Image
148 {
149   ClassType
150     storage_class;
151
152   ColorspaceType
153     colorspace;
154
155   CompressionType
156     compression;
157
158   unsigned long
159     quality;
160
161   OrientationType
162     orientation;
163
164   MagickBooleanType
165     taint,
166     matte;
167
168   unsigned long
169     columns,
170     rows,
171     depth,
172     colors;
173
174   PixelPacket
175     *colormap,
176     background_color,
177     border_color,
178     matte_color;
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;
194
195   char
196     *montage,
197     *directory,
198     *geometry;
199
200   long
201     offset;
202
203   double
204     x_resolution,
205     y_resolution;
206
207   RectangleInfo
208     page,
209     extract_info,
210     tile_info;  /* deprecated */
211
212   double
213     bias,
214     blur,  /* deprecated */
215     fuzz;
216
217   FilterTypes
218     filter;
219
220   InterlaceType
221     interlace;
222
223   EndianType
224     endian;
225
226   GravityType
227     gravity;
228
229   CompositeOperator
230     compose;
231
232   DisposeType
233     dispose;
234
235   struct _Image
236     *clip_mask;
237
238   unsigned long
239     scene,
240     delay;
241
242   long
243     ticks_per_second;
244
245   unsigned long
246     iterations,
247     total_colors;
248
249   long
250     start_loop;
251
252   ErrorInfo
253     error;
254
255   TimerInfo
256     timer;
257
258   MagickProgressMonitor
259     progress_monitor;
260
261   void
262     *client_data,
263     *cache,
264     *attributes;  /* deprecated */
265
266   Ascii85Info
267     *ascii85;
268
269   BlobInfo
270     *blob;
271
272   char
273     filename[MaxTextExtent],
274     magick_filename[MaxTextExtent],
275     magick[MaxTextExtent];
276
277   unsigned long
278     magick_columns,
279     magick_rows;
280
281   ExceptionInfo
282     exception;
283
284   MagickBooleanType
285     debug;
286
287   volatile long
288     reference_count;
289
290   SemaphoreInfo
291     *semaphore;
292
293   ProfileInfo
294     color_profile,
295     iptc_profile,
296     *generic_profile;
297
298   unsigned long
299     generic_profiles;  /* this & ProfileInfo is deprecated */
300
301   unsigned long
302     signature;
303
304   struct _Image
305     *previous,
306     *list,
307     *next;
308
309   InterpolatePixelMethod
310     interpolate;
311
312   MagickBooleanType
313     black_point_compensation;
314
315   PixelPacket
316     transparent_color;
317
318   struct _Image
319     *mask;
320
321   RectangleInfo
322     tile_offset;
323
324   void
325     *properties,
326     *artifacts;
327
328   ImageType
329     type;
330
331   MagickBooleanType
332     dither;
333
334   MagickSizeType
335     extent;
336 };
337
338 struct _ImageInfo
339 {
340   CompressionType
341     compression;
342
343   OrientationType
344     orientation;
345
346   MagickBooleanType
347     temporary,
348     adjoin,
349     affirm,
350     antialias;
351
352   char
353     *size,
354     *extract,
355     *page,
356     *scenes;
357
358   unsigned long
359     scene,
360     number_scenes,
361     depth;
362
363   InterlaceType
364     interlace;
365
366   EndianType
367     endian;
368
369   ResolutionType
370     units;
371
372   unsigned long
373     quality;
374
375   char
376     *sampling_factor,
377     *server_name,
378     *font,
379     *texture,
380     *density;
381
382   double
383     pointsize,
384     fuzz;
385
386   PixelPacket
387     background_color,
388     border_color,
389     matte_color;
390
391   MagickBooleanType
392     dither,
393     monochrome;
394
395   unsigned long
396     colors;
397
398   ColorspaceType
399     colorspace;
400
401   ImageType
402     type;
403
404   PreviewType
405     preview_type;
406
407   long
408     group;
409
410   MagickBooleanType
411     ping,
412     verbose;
413
414   char
415     *view,
416     *authenticate;
417
418   ChannelType
419     channel;
420
421   Image
422     *attributes;  /* deprecated */
423
424   void
425     *options;
426
427   MagickProgressMonitor
428     progress_monitor;
429
430   void
431     *client_data,
432     *cache;
433
434   StreamHandler
435     stream;
436
437   FILE
438     *file;
439
440   void
441     *blob;
442
443   size_t
444     length;
445
446   char
447     magick[MaxTextExtent],
448     unique[MaxTextExtent],
449     zero[MaxTextExtent],
450     filename[MaxTextExtent];
451
452   MagickBooleanType
453     debug;
454
455   char
456     *tile;  /* deprecated */
457
458   unsigned long
459     subimage,  /* deprecated */
460     subrange;  /* deprecated */
461
462   PixelPacket
463     pen;  /* deprecated */
464
465   unsigned long
466     signature;
467
468   VirtualPixelMethod
469     virtual_pixel_method;
470
471   PixelPacket
472     transparent_color;
473
474   void
475     *profile;
476
477   MagickBooleanType
478     synchronize;
479 };
480
481 extern MagickExport ExceptionType
482   CatchImageException(Image *);
483
484 extern MagickExport FILE
485   *GetImageInfoFile(const ImageInfo *);
486
487 extern MagickExport Image
488   *AcquireImage(const ImageInfo *),
489   *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
490   *CloneImage(const Image *,const unsigned long,const unsigned long,
491     const MagickBooleanType,ExceptionInfo *),
492   *CombineImages(const Image *,const ChannelType,ExceptionInfo *),
493   *DestroyImage(Image *),
494   *GetImageClipMask(const Image *,ExceptionInfo *),
495   *GetImageMask(const Image *,ExceptionInfo *),
496   *NewMagickImage(const ImageInfo *,const unsigned long,const unsigned long,
497     const MagickPixelPacket *),
498   *ReferenceImage(Image *),
499   *SeparateImages(const Image *,const ChannelType,ExceptionInfo *);
500
501 extern MagickExport ImageInfo
502   *AcquireImageInfo(void),
503   *CloneImageInfo(const ImageInfo *),
504   *DestroyImageInfo(ImageInfo *);
505
506 extern MagickExport long
507   GetImageReferenceCount(Image *);
508
509 extern MagickExport MagickBooleanType
510   AcquireImageColormap(Image *,const unsigned long),
511   ClipImage(Image *),
512   ClipImagePath(Image *,const char *,const MagickBooleanType),
513   GetImageAlphaChannel(const Image *),
514   IsTaintImage(const Image *),
515   IsMagickConflict(const char *),
516   IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
517   IsImageObject(const Image *),
518   ListMagickInfo(FILE *,ExceptionInfo *),
519   ModifyImage(Image **,ExceptionInfo *),
520   ResetImagePage(Image *,const char *),
521   SeparateImageChannel(Image *,const ChannelType),
522   SetImageAlphaChannel(Image *,const AlphaChannelType),
523   SetImageBackgroundColor(Image *),
524   SetImageClipMask(Image *,const Image *),
525   SetImageExtent(Image *,const unsigned long,const unsigned long),
526   SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
527   SetImageMask(Image *,const Image *),
528   SetImageOpacity(Image *,const Quantum),
529   SetImageStorageClass(Image *,const ClassType),
530   SetImageType(Image *,const ImageType),
531   StripImage(Image *),
532   SyncImage(Image *),
533   SyncImageSettings(const ImageInfo *,Image *),
534   SyncImagesSettings(ImageInfo *,Image *);
535
536 extern MagickExport size_t
537   InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *);
538
539 extern MagickExport VirtualPixelMethod
540   GetImageVirtualPixelMethod(const Image *),
541   SetImageVirtualPixelMethod(const Image *,const VirtualPixelMethod);
542
543 extern MagickExport void
544   AcquireNextImage(const ImageInfo *,Image *),
545   DestroyImagePixels(Image *),
546   DisassociateImageStream(Image *),
547   GetImageException(Image *,ExceptionInfo *),
548   GetImageInfo(ImageInfo *),
549   SetImageInfoBlob(ImageInfo *,const void *,const size_t),
550   SetImageInfoFile(ImageInfo *,FILE *);
551
552 #if defined(__cplusplus) || defined(c_plusplus)
553 }
554 #endif
555
556 #endif