]> granicus.if.org Git - imagemagick/blob - MagickCore/pixel.h
(no commit message)
[imagemagick] / MagickCore / pixel.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 constitute methods.
17 */
18 #ifndef _MAGICKCORE_PIXEL_H
19 #define _MAGICKCORE_PIXEL_H
20
21 #if defined(__cplusplus) || defined(c_plusplus)
22 extern "C" {
23 #endif
24
25 #include <MagickCore/colorspace.h>
26 #include <MagickCore/constitute.h>
27
28 #define MaxPixelChannels  32
29 #undef index
30
31 typedef enum
32 {
33   UndefinedInterpolatePixel,
34   AverageInterpolatePixel,
35   BicubicInterpolatePixel,
36   BilinearInterpolatePixel,
37   FilterInterpolatePixel,
38   IntegerInterpolatePixel,
39   MeshInterpolatePixel,
40   NearestNeighborInterpolatePixel,
41   SplineInterpolatePixel
42 } InterpolatePixelMethod;
43
44 typedef enum
45 {
46   RedPixelChannel = 0,
47   CyanPixelChannel = 0,
48   GrayPixelChannel = 0,
49   YPixelChannel = 0,
50   GreenPixelChannel = 1,
51   MagentaPixelChannel = 1,
52   CbPixelChannel = 1,
53   BluePixelChannel = 2,
54   YellowPixelChannel = 2,
55   CrPixelChannel = 2,
56   AlphaPixelChannel = 3,
57   BlackPixelChannel = 4,
58   IndexPixelChannel = 4,
59   MaskPixelChannel = 5,
60   IntensityPixelChannel = MaxPixelChannels,
61   SyncPixelChannel = MaxPixelChannels+1
62 } PixelChannel;
63
64 typedef enum
65 {
66   UndefinedPixelTrait = 0x000000,
67   CopyPixelTrait = 0x000001,
68   UpdatePixelTrait = 0x000002,
69   BlendPixelTrait = 0x000004
70 } PixelTrait;
71
72 typedef struct _DoublePixelPacket
73 {
74   double
75     red,
76     green,
77     blue,
78     alpha,
79     black;
80 } DoublePixelPacket;
81
82 typedef struct _LongPixelPacket
83 {
84   unsigned int
85     red,
86     green,
87     blue,
88     alpha,
89     black;
90 } LongPixelPacket;
91
92 typedef struct _PixelChannelMap
93 {
94   PixelChannel
95     channel;
96
97   PixelTrait
98     traits;
99 } PixelChannelMap;
100
101 typedef struct _PixelInfo
102 {
103   ClassType
104     storage_class;
105
106   ColorspaceType
107     colorspace;
108
109   MagickBooleanType
110     matte;
111
112   double
113     fuzz;
114
115   size_t
116     depth;
117
118   MagickRealType
119     red,
120     green,
121     blue,
122     alpha,
123     black,
124     index;
125 } PixelInfo;
126
127 typedef struct _PixelPacket
128 {
129   Quantum
130     red,
131     green,
132     blue,
133     alpha,
134     black,
135     index;
136
137  MagickSizeType
138     count;
139 } PixelPacket;
140
141 typedef struct _CacheView
142   CacheView_;
143
144 extern MagickExport ChannelType
145   SetPixelChannelMask(Image *,const ChannelType);
146
147 extern MagickExport MagickBooleanType
148   ExportImagePixels(const Image *,const ssize_t,const ssize_t,const size_t,
149     const size_t,const char *,const StorageType,void *,ExceptionInfo *),
150   ImportImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
151     const size_t,const char *,const StorageType,const void *,ExceptionInfo *),
152   InterpolatePixelChannel(const Image *,const CacheView_ *,
153     const PixelChannel,const InterpolatePixelMethod,const double,const double,
154     double *,ExceptionInfo *),
155   InterpolatePixelInfo(const Image *,const CacheView_ *,
156     const InterpolatePixelMethod,const double,const double,PixelInfo *,
157     ExceptionInfo *),
158   IsFuzzyEquivalencePixel(const Image *,const Quantum *,
159     const Quantum *),
160   IsFuzzyEquivalencePixelInfo(const PixelInfo *,const PixelInfo *),
161   IsFuzzyEquivalencePixelPacket(const Image *,const PixelPacket *,
162     const PixelPacket *);
163
164 extern MagickExport PixelChannelMap
165   *AcquirePixelChannelMap(void),
166   *ClonePixelChannelMap(PixelChannelMap *),
167   *DestroyPixelChannelMap(PixelChannelMap *);
168
169 extern MagickExport PixelInfo
170   *ClonePixelInfo(const PixelInfo *);
171
172 extern MagickExport void
173   InitializePixelChannelMap(Image *),
174   GetPixelInfo(const Image *,PixelInfo *),
175   SetPixelChannelMap(Image *,const ChannelType);
176
177 #if defined(__cplusplus) || defined(c_plusplus)
178 }
179 #endif
180
181 #endif