]> granicus.if.org Git - imagemagick/blob - magick/pixel.h
(no commit message)
[imagemagick] / magick / 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 <magick/colorspace.h>
26 #include <magick/constitute.h>
27
28 #define ClampRedPixelComponent(pixel) ClampToQuantum((pixel)->red)
29 #define ClampGreenPixelComponent(pixel) ClampToQuantum((pixel)->green)
30 #define ClampBluePixelComponent(pixel) ClampToQuantum((pixel)->blue)
31 #define ClampIndexPixelComponent(indexes) ClampToQuantum(*(indexes))
32 #define ClampOpacityPixelComponent(pixel) ClampToQuantum((pixel)->opacity)
33 #define GetAlphaPixelComponent(pixel) (QuantumRange-(pixel)->opacity)
34 #define GetBlackPixelComponent(index) (*(index))
35 #define GetBluePixelComponent(pixel) ((pixel)->blue)
36 #define GetCbPixelComponent(pixel) ((pixel)->green)
37 #define GetCrPixelComponent(pixel) ((pixel)->blue)
38 #define GetCyanPixelComponent(pixel) ((pixel)->red)
39 #define GetGrayPixelComponent(pixel) ((pixel)->red)
40 #define GetGreenPixelComponent(pixel) ((pixel)->green)
41 #define GetIndexPixelComponent(indexes) (*(indexes))
42 #define GetMagentaPixelComponent(pixel) ((pixel)->green)
43 #define GetNextPixel(pixel)  ((pixel)+1)
44 #define GetOpacityPixelComponent(pixel) ((pixel)->opacity)
45 #define GetRedPixelComponent(pixel) ((pixel)->red)
46 #define GetYPixelComponent(pixel) ((pixel)->red)
47 #define GetYellowPixelComponent(pixel) ((pixel)->blue)
48 #define SetAlphaPixelComponent(pixel,value) \
49   ((pixel)->opacity=(Quantum) (QuantumRange-(value)))
50 #define SetBlackPixelComponent(index,value) (*(index)=(Quantum) (value))
51 #define SetBluePixelComponent(pixel,value) ((pixel)->blue=(Quantum) (value))
52 #define SetCbPixelComponent(pixel,value) ((pixel)->green=(Quantum) (value))
53 #define SetCrPixelComponent(pixel,value) ((pixel)->blue=(Quantum) (value))
54 #define SetCyanPixelComponent(pixel,value) ((pixel)->red=(Quantum) (value))
55 #define SetGrayPixelComponent(pixel,value) \
56   ((pixel)->red=(pixel)->green=(pixel)->blue=(Quantum) (value))
57 #define SetGreenPixelComponent(pixel,value) ((pixel)->green=(Quantum) (value))
58 #define SetIndexPixelComponent(indexes,value) (*(indexes)=(IndexPacket) (value))
59 #define SetMagentaPixelComponent(pixel,value) ((pixel)->green=(Quantum) (value))
60 #define SetOpacityPixelComponent(pixel,value) \
61   ((pixel)->opacity=(Quantum) (value))
62 #define SetRedPixelComponent(pixel,value) ((pixel)->red=(Quantum) (value))
63 #define SetYellowPixelComponent(pixel,value) ((pixel)->blue=(Quantum) (value))
64 #define SetYPixelComponent(pixel,value) ((pixel)->red=(Quantum) (value))
65
66 typedef enum
67 {
68   UndefinedInterpolatePixel,
69   AverageInterpolatePixel,
70   BicubicInterpolatePixel,
71   BilinearInterpolatePixel,
72   FilterInterpolatePixel,
73   IntegerInterpolatePixel,
74   MeshInterpolatePixel,
75   NearestNeighborInterpolatePixel,
76   SplineInterpolatePixel
77 } InterpolatePixelMethod;
78
79 typedef enum
80 {
81   RedPixelComponent = 0,
82   CyanPixelComponent = 0,
83   GrayPixelComponent = 0,
84   YPixelComponent = 0,
85   GreenPixelComponent = 1,
86   MagentaPixelComponent = 1,
87   CbPixelComponent = 1,
88   BluePixelComponent = 2,
89   YellowPixelComponent = 2,
90   CrPixelComponent = 2,
91   AlphaPixelComponent = 3,
92   BlackPixelComponent = 4,
93   IndexPixelComponent = 4,
94   MaskPixelComponent = 5
95 } PixelComponent;
96
97 typedef struct _DoublePixelPacket
98 {
99   double
100     red,
101     green,
102     blue,
103     opacity,
104     index;
105 } DoublePixelPacket;
106
107 typedef struct _LongPixelPacket
108 {
109   unsigned int
110     red,
111     green,
112     blue,
113     opacity,
114     index;
115 } LongPixelPacket;
116
117 typedef struct _MagickPixelPacket
118 {
119   ClassType
120     storage_class;
121
122   ColorspaceType
123     colorspace;
124
125   MagickBooleanType
126     matte;
127
128   double
129     fuzz;
130
131   size_t
132     depth;
133
134   MagickRealType
135     red,
136     green,
137     blue,
138     opacity,
139     index;
140 } MagickPixelPacket;
141
142 typedef Quantum IndexPacket;
143
144 typedef struct _PixelPacket
145 {
146 #if defined(MAGICKCORE_WORDS_BIGENDIAN)
147 #define MAGICK_PIXEL_RGBA  1
148   Quantum
149     red,
150     green,
151     blue,
152     opacity;
153 #else
154 #define MAGICK_PIXEL_BGRA  1
155   Quantum
156     blue,
157     green,
158     red,
159     opacity;
160 #endif
161 } PixelPacket;
162
163 typedef struct _CacheView
164   CacheView_;
165
166 extern MagickExport MagickBooleanType
167   ExportImagePixels(const Image *,const ssize_t,const ssize_t,const size_t,
168     const size_t,const char *,const StorageType,void *,ExceptionInfo *),
169   ImportImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
170     const size_t,const char *,const StorageType,const void *),
171   InterpolateMagickPixelPacket(const Image *,const CacheView_ *,
172     const InterpolatePixelMethod,const double,const double,MagickPixelPacket *,
173     ExceptionInfo *);
174
175 extern MagickExport void
176   GetMagickPixelPacket(const Image *,MagickPixelPacket *);
177
178 #if defined(__cplusplus) || defined(c_plusplus)
179 }
180 #endif
181
182 #endif