]> 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 } PixelInterpolateMethod;
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 _PixelChannelMap
73 {
74   PixelChannel
75     channel;
76
77   PixelTrait
78     traits;
79 } PixelChannelMap;
80
81 typedef struct _PixelDoublePacket
82 {
83   double
84     red,
85     green,
86     blue,
87     alpha,
88     black;
89 } PixelDoublePacket;
90
91 typedef struct _PixelInfo
92 {
93   ClassType
94     storage_class;
95
96   ColorspaceType
97     colorspace;
98
99   MagickBooleanType
100     matte;
101
102   double
103     fuzz;
104
105   size_t
106     depth;
107
108   MagickRealType
109     red,
110     green,
111     blue,
112     alpha,
113     black,
114     index;
115 } PixelInfo;
116
117 typedef struct _PixelLongPacket
118 {
119   unsigned int
120     red,
121     green,
122     blue,
123     alpha,
124     black;
125 } PixelLongPacket;
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 PixelInterpolateMethod,const double,const double,
154     double *,ExceptionInfo *),
155   InterpolatePixelChannels(const Image *,const CacheView_ *,const Image *,
156     const PixelInterpolateMethod,const double,const double,Quantum *,
157     ExceptionInfo *),
158   InterpolatePixelInfo(const Image *,const CacheView_ *,
159     const PixelInterpolateMethod,const double,const double,PixelInfo *,
160     ExceptionInfo *),
161   IsFuzzyEquivalencePixel(const Image *,const Quantum *,
162     const Quantum *),
163   IsFuzzyEquivalencePixelInfo(const PixelInfo *,const PixelInfo *),
164   IsFuzzyEquivalencePixelPacket(const Image *,const PixelPacket *,
165     const PixelPacket *);
166
167 extern MagickExport PixelChannelMap
168   *AcquirePixelChannelMap(void),
169   *ClonePixelChannelMap(PixelChannelMap *),
170   *DestroyPixelChannelMap(PixelChannelMap *);
171
172 extern MagickExport PixelInfo
173   *ClonePixelInfo(const PixelInfo *);
174
175 extern MagickExport void
176   InitializePixelChannelMap(Image *),
177   GetPixelInfo(const Image *,PixelInfo *),
178   SetPixelChannelMap(Image *,const ChannelType);
179
180 #if defined(__cplusplus) || defined(c_plusplus)
181 }
182 #endif
183
184 #endif