]> 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 typedef enum
29 {
30   UndefinedInterpolatePixel,
31   AverageInterpolatePixel,
32   BicubicInterpolatePixel,
33   BilinearInterpolatePixel,
34   FilterInterpolatePixel,
35   IntegerInterpolatePixel,
36   MeshInterpolatePixel,
37   NearestNeighborInterpolatePixel,
38   SplineInterpolatePixel
39 } InterpolatePixelMethod;
40
41 typedef enum
42 {
43   RedPixelComponent = 0,
44   CyanPixelComponent = 0,
45   GrayPixelComponent = 0,
46   YPixelComponent = 0,
47   GreenPixelComponent = 1,
48   MagentaPixelComponent = 1,
49   CbPixelComponent = 1,
50   BluePixelComponent = 2,
51   YellowPixelComponent = 2,
52   CrPixelComponent = 2,
53   AlphaPixelComponent = 3,
54   BlackPixelComponent = 4,
55   IndexPixelComponent = 4,
56   MaskPixelComponent = 5
57 } PixelComponent;
58
59 typedef enum
60 {
61   UndefinedPixelTrait
62 } PixelTrait;
63
64 typedef struct _PixelComponentMap
65 {
66   PixelComponent
67     component;
68
69   PixelTrait
70     trait;
71 } PixelComponentMap;
72
73 typedef struct _DoublePixelPacket
74 {
75   double
76     red,
77     green,
78     blue,
79     alpha,
80     black;
81 } DoublePixelPacket;
82
83 typedef struct _LongPixelPacket
84 {
85   unsigned int
86     red,
87     green,
88     blue,
89     alpha,
90     black;
91 } LongPixelPacket;
92
93 typedef struct _PixelInfo
94 {
95   ClassType
96     storage_class;
97
98   ColorspaceType
99     colorspace;
100
101   MagickBooleanType
102     matte;
103
104   double
105     fuzz;
106
107   size_t
108     depth;
109
110   MagickRealType
111     red,
112     green,
113     blue,
114     alpha,
115     black,
116     index;
117 } PixelInfo;
118
119 typedef struct _PixelPacket
120 {
121   Quantum
122     red,
123     green,
124     blue,
125     alpha,
126     black,
127     index;
128
129  MagickSizeType
130     count;
131 } PixelPacket;
132
133 typedef struct _CacheView
134   CacheView_;
135
136 extern MagickExport MagickBooleanType
137   ExportImagePixels(const Image *,const ssize_t,const ssize_t,const size_t,
138     const size_t,const char *,const StorageType,void *,ExceptionInfo *),
139   ImportImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
140     const size_t,const char *,const StorageType,const void *),
141   InterpolatePixelInfo(const Image *,const CacheView_ *,
142     const InterpolatePixelMethod,const double,const double,PixelInfo *,
143     ExceptionInfo *),
144   IsFuzzyEquivalencePixel(const Image *,const Quantum *,
145     const Quantum *),
146   IsFuzzyEquivalencePixelInfo(const PixelInfo *,const PixelInfo *),
147   IsFuzzyEquivalencePixelPacket(const Image *,const PixelPacket *,
148     const PixelPacket *);
149
150 extern MagickExport PixelComponentMap
151   *AcquirePixelComponentMap(void),
152   *ClonePixelComponentMap(const PixelComponentMap *),
153   *DestroyPixelComponentMap(PixelComponentMap *);
154
155 extern MagickExport PixelInfo
156   *ClonePixelInfo(const PixelInfo *);
157
158 extern MagickExport void
159   DefinePixelComponentMap(Image *),
160   GetPixelInfo(const Image *,PixelInfo *);
161
162 #if defined(__cplusplus) || defined(c_plusplus)
163 }
164 #endif
165
166 #endif