MagickCore  7.0.8
Convert, Edit, Or Compose Bitmap Images
pixel.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2018 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  https://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 pixel methods.
17 */
18 #ifndef MAGICKCORE_PIXEL_H
19 #define MAGICKCORE_PIXEL_H
20 
21 #include "MagickCore/colorspace.h"
22 
23 #if defined(__cplusplus) || defined(c_plusplus)
24 extern "C" {
25 #endif
26 
27 #define MaxPixelChannels 32
28 #undef index
29 
30 /*
31  Pixel enum declarations.
32 */
33 typedef enum
34 {
35  UndefinedChannel = 0x0000,
36  RedChannel = 0x0001,
37  GrayChannel = 0x0001,
38  CyanChannel = 0x0001,
39  GreenChannel = 0x0002,
40  MagentaChannel = 0x0002,
41  BlueChannel = 0x0004,
42  YellowChannel = 0x0004,
43  BlackChannel = 0x0008,
44  AlphaChannel = 0x0010,
45  OpacityChannel = 0x0010,
46  IndexChannel = 0x0020, /* Color Index Table? */
47  ReadMaskChannel = 0x0040, /* Pixel is Not Readable? */
48  WriteMaskChannel = 0x0080, /* Pixel is Write Protected? */
49  MetaChannel = 0x0100, /* not used */
50  CompositeMaskChannel = 0x0200, /* SVG mask */
52  AllChannels = 0x7ffffff,
53  /*
54  Special purpose channel types.
55  FUTURE: are these needed any more - they are more like hacks
56  SyncChannels for example is NOT a real channel but a 'flag'
57  It really says -- "User has not defined channels"
58  Though it does have extra meaning in the "-auto-level" operator
59  */
60  TrueAlphaChannel = 0x0100, /* extract actual alpha channel from opacity */
61  RGBChannels = 0x0200, /* set alpha from grayscale mask in RGB */
62  GrayChannels = 0x0400,
63  SyncChannels = 0x20000, /* channels modified as a single unit */
65 } ChannelType; /* must correspond to PixelChannel */
66 
67 typedef enum
68 {
93  SyncPixelChannel = MaxPixelChannels+1 /* not a real channel */
94 } PixelChannel; /* must correspond to ChannelType */
95 
96 typedef enum
97 {
109 
110 typedef enum
111 {
113  AverageInterpolatePixel, /* Average 4 nearest neighbours */
114  Average9InterpolatePixel, /* Average 9 nearest neighbours */
115  Average16InterpolatePixel, /* Average 16 nearest neighbours */
116  BackgroundInterpolatePixel, /* Just return background color */
117  BilinearInterpolatePixel, /* Triangular filter interpolation */
118  BlendInterpolatePixel, /* blend of nearest 1, 2 or 4 pixels */
119  CatromInterpolatePixel, /* Catmull-Rom interpolation */
120  IntegerInterpolatePixel, /* Integer (floor) interpolation */
121  MeshInterpolatePixel, /* Triangular Mesh interpolation */
122  NearestInterpolatePixel, /* Nearest Neighbour Only */
123  SplineInterpolatePixel /* Cubic Spline (blurred) interpolation */
124  /* FilterInterpolatePixel, ** Use resize filter - (very slow) */
126 
127 typedef enum
128 {
129  UndefinedPixelMask = 0x000000,
130  ReadPixelMask = 0x000001,
131  WritePixelMask = 0x000002,
133 } PixelMask;
134 
135 typedef enum
136 {
138  CopyPixelTrait = 0x000001,
139  UpdatePixelTrait = 0x000002,
140  BlendPixelTrait = 0x000004
141 } PixelTrait;
142 
143 typedef enum
144 {
153 } StorageType;
154 
155 /*
156  Pixel typedef declarations.
157 */
158 typedef struct _PixelChannelMap
159 {
162 
163  PixelTrait
165 
166  ssize_t
169 
170 typedef struct _PixelInfo
171 {
172  ClassType
174 
177 
178  PixelTrait
180 
181  double
183 
184  size_t
186 
189 
192  green,
193  blue,
194  black,
195  alpha,
196  index;
197 } PixelInfo;
198 
199 typedef struct _PixelPacket
200 {
201  unsigned int
203  green,
204  blue,
205  alpha,
206  black;
207 } PixelPacket;
208 
209 typedef struct _CacheView
210  CacheView_;
211 
212 /*
213  Pixel method declarations.
214 */
217 
219  ExportImagePixels(const Image *,const ssize_t,const ssize_t,const size_t,
220  const size_t,const char *,const StorageType,void *,ExceptionInfo *),
221  ImportImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
222  const size_t,const char *,const StorageType,const void *,ExceptionInfo *),
223  InterpolatePixelChannel(const Image *,const CacheView_ *,
224  const PixelChannel,const PixelInterpolateMethod,const double,const double,
225  double *,ExceptionInfo *),
226  InterpolatePixelChannels(const Image *,const CacheView_ *,const Image *,
227  const PixelInterpolateMethod,const double,const double,Quantum *,
228  ExceptionInfo *),
229  InterpolatePixelInfo(const Image *,const CacheView_ *,
230  const PixelInterpolateMethod,const double,const double,PixelInfo *,
231  ExceptionInfo *),
232  IsFuzzyEquivalencePixel(const Image *,const Quantum *,const Image *,
233  const Quantum *),
235  SetPixelMetaChannels(Image *,const size_t,ExceptionInfo *);
236 
242 
244  *AcquirePixelChannelMap(void),
247 
248 extern MagickExport PixelInfo
249  *ClonePixelInfo(const PixelInfo *);
250 
254 
255 extern MagickExport void
257  GetPixelInfo(const Image *,PixelInfo *),
259 
260 #if defined(__cplusplus) || defined(c_plusplus)
261 }
262 #endif
263 
264 #endif
PixelChannel channel
Definition: pixel.h:161
#define magick_restrict
Definition: MagickCore.h:41
MagickDoubleType MagickRealType
Definition: magick-type.h:118
double fuzz
Definition: pixel.h:182
unsigned int green
Definition: pixel.h:202
PixelTrait alpha_trait
Definition: pixel.h:179
PixelInterpolateMethod
Definition: pixel.h:110
MagickExport MagickBooleanType ImportImagePixels(Image *, const ssize_t, const ssize_t, const size_t, const size_t, const char *, const StorageType, const void *, ExceptionInfo *)
MagickExport MagickRealType GetPixelIntensity(const Image *magick_restrict, const Quantum *magick_restrict) magick_hot_spot
StorageType
Definition: pixel.h:143
PixelIntensityMethod
Definition: pixel.h:96
MagickRealType red
Definition: pixel.h:191
ClassType storage_class
Definition: pixel.h:173
MagickSizeType count
Definition: pixel.h:188
unsigned int blue
Definition: pixel.h:202
MagickRealType alpha
Definition: pixel.h:191
ssize_t offset
Definition: pixel.h:167
Definition: image.h:151
MagickExport MagickRealType DecodePixelGamma(const MagickRealType) magick_hot_spot
MagickBooleanType
Definition: magick-type.h:156
ClassType
Definition: magick-type.h:149
unsigned int black
Definition: pixel.h:202
struct _PixelInfo PixelInfo
#define magick_hot_spot
MagickExport PixelChannelMap * DestroyPixelChannelMap(PixelChannelMap *)
Definition: pixel.c:350
struct _PixelChannelMap PixelChannelMap
size_t MagickSizeType
Definition: magick-type.h:128
MagickRealType blue
Definition: pixel.h:191
unsigned int alpha
Definition: pixel.h:202
MagickExport MagickBooleanType IsFuzzyEquivalencePixelInfo(const PixelInfo *, const PixelInfo *)
ChannelType
Definition: pixel.h:33
MagickExport MagickBooleanType InterpolatePixelChannels(const Image *, const CacheView_ *, const Image *, const PixelInterpolateMethod, const double, const double, Quantum *, ExceptionInfo *)
MagickExport void ConformPixelInfo(Image *, const PixelInfo *, PixelInfo *, ExceptionInfo *)
PixelChannel
Definition: pixel.h:67
MagickExport MagickBooleanType InterpolatePixelChannel(const Image *, const CacheView_ *, const PixelChannel, const PixelInterpolateMethod, const double, const double, double *, ExceptionInfo *)
size_t depth
Definition: pixel.h:185
MagickRealType index
Definition: pixel.h:191
MagickExport MagickBooleanType InterpolatePixelInfo(const Image *, const CacheView_ *, const PixelInterpolateMethod, const double, const double, PixelInfo *, ExceptionInfo *)
struct _PixelPacket PixelPacket
unsigned short Quantum
Definition: magick-type.h:82
unsigned int red
Definition: pixel.h:202
MagickRealType black
Definition: pixel.h:191
ColorspaceType
Definition: colorspace.h:25
#define MaxPixelChannels
Definition: pixel.h:27
MagickExport PixelChannelMap * AcquirePixelChannelMap(void)
MagickExport void GetPixelInfo(const Image *, PixelInfo *)
MagickExport void InitializePixelChannelMap(Image *)
Definition: pixel.c:4328
MagickRealType green
Definition: pixel.h:191
MagickExport MagickRealType GetPixelInfoIntensity(const Image *magick_restrict, const PixelInfo *magick_restrict) magick_hot_spot
#define MagickExport
PixelTrait traits
Definition: pixel.h:164
ColorspaceType colorspace
Definition: pixel.h:176
PixelMask
Definition: pixel.h:127
PixelTrait
Definition: pixel.h:135
MagickExport ChannelType SetPixelChannelMask(Image *, const ChannelType)
Definition: pixel.c:6276
MagickExport MagickBooleanType SetPixelMetaChannels(Image *, const size_t, ExceptionInfo *)
Definition: pixel.c:6360
MagickExport MagickBooleanType ExportImagePixels(const Image *, const ssize_t, const ssize_t, const size_t, const size_t, const char *, const StorageType, void *, ExceptionInfo *)
MagickExport PixelChannelMap * ClonePixelChannelMap(PixelChannelMap *)
MagickExport MagickBooleanType IsFuzzyEquivalencePixel(const Image *, const Quantum *, const Image *, const Quantum *)
MagickExport PixelInfo * ClonePixelInfo(const PixelInfo *)
Definition: pixel.c:170
MagickExport MagickRealType EncodePixelGamma(const MagickRealType) magick_hot_spot
Definition: pixel.c:446