MagickCore  7.0.10
Convert, Edit, Or Compose Bitmap Images
pixel.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2020 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. You may
6  obtain a copy of the License at
7 
8  https://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  LChannel = 0x0001,
40  GreenChannel = 0x0002,
41  MagentaChannel = 0x0002,
42  aChannel = 0x0002,
43  BlueChannel = 0x0004,
44  bChannel = 0x0002,
45  YellowChannel = 0x0004,
46  BlackChannel = 0x0008,
47  AlphaChannel = 0x0010,
48  OpacityChannel = 0x0010,
49  IndexChannel = 0x0020, /* Color Index Table? */
50  ReadMaskChannel = 0x0040, /* Pixel is Not Readable? */
51  WriteMaskChannel = 0x0080, /* Pixel is Write Protected? */
52  MetaChannel = 0x0100, /* not used */
53  CompositeMaskChannel = 0x0200, /* SVG mask */
55  AllChannels = 0x7ffffff,
56  /*
57  Special purpose channel types.
58  FUTURE: are these needed any more - they are more like hacks
59  SyncChannels for example is NOT a real channel but a 'flag'
60  It really says -- "User has not defined channels"
61  Though it does have extra meaning in the "-auto-level" operator
62  */
63  TrueAlphaChannel = 0x0100, /* extract actual alpha channel from opacity */
64  RGBChannels = 0x0200, /* set alpha from grayscale mask in RGB */
65  GrayChannels = 0x0400,
66  SyncChannels = 0x20000, /* channels modified as a single unit */
68 } ChannelType; /* must correspond to PixelChannel */
69 
70 typedef enum
71 {
96  SyncPixelChannel = MaxPixelChannels+1 /* not a real channel */
97 } PixelChannel; /* must correspond to ChannelType */
98 
99 typedef enum
100 {
112 
113 typedef enum
114 {
116  AverageInterpolatePixel, /* Average 4 nearest neighbours */
117  Average9InterpolatePixel, /* Average 9 nearest neighbours */
118  Average16InterpolatePixel, /* Average 16 nearest neighbours */
119  BackgroundInterpolatePixel, /* Just return background color */
120  BilinearInterpolatePixel, /* Triangular filter interpolation */
121  BlendInterpolatePixel, /* blend of nearest 1, 2 or 4 pixels */
122  CatromInterpolatePixel, /* Catmull-Rom interpolation */
123  IntegerInterpolatePixel, /* Integer (floor) interpolation */
124  MeshInterpolatePixel, /* Triangular Mesh interpolation */
125  NearestInterpolatePixel, /* Nearest Neighbour Only */
126  SplineInterpolatePixel /* Cubic Spline (blurred) interpolation */
128 
129 typedef enum
130 {
131  UndefinedPixelMask = 0x000000,
132  ReadPixelMask = 0x000001,
133  WritePixelMask = 0x000002,
135 } PixelMask;
136 
137 typedef enum
138 {
140  CopyPixelTrait = 0x000001,
141  UpdatePixelTrait = 0x000002,
142  BlendPixelTrait = 0x000004
143 } PixelTrait;
144 
145 typedef enum
146 {
155 } StorageType;
156 
157 /*
158  Pixel typedef declarations.
159 */
160 typedef struct _PixelChannelMap
161 {
164 
165  PixelTrait
167 
168  ssize_t
171 
172 typedef struct _PixelInfo
173 {
174  ClassType
176 
179 
180  PixelTrait
182 
183  double
185 
186  size_t
188 
191 
194  green,
195  blue,
196  black,
197  alpha,
198  index;
199 } PixelInfo;
200 
201 typedef struct _PixelPacket
202 {
203  unsigned int
205  green,
206  blue,
207  alpha,
208  black;
209 } PixelPacket;
210 
211 typedef struct _CacheView
212  CacheView_;
213 
214 /*
215  Pixel method declarations.
216 */
219 
221  ExportImagePixels(const Image *,const ssize_t,const ssize_t,const size_t,
222  const size_t,const char *,const StorageType,void *,ExceptionInfo *),
223  ImportImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
224  const size_t,const char *,const StorageType,const void *,ExceptionInfo *),
226  const PixelChannel,const PixelInterpolateMethod,const double,const double,
227  double *,ExceptionInfo *),
229  const Image * magick_restrict,const PixelInterpolateMethod,const double,
230  const double,Quantum *,ExceptionInfo *),
231  InterpolatePixelInfo(const Image *,const CacheView_ *,
232  const PixelInterpolateMethod,const double,const double,PixelInfo *,
233  ExceptionInfo *),
234  IsFuzzyEquivalencePixel(const Image *,const Quantum *,const Image *,
235  const Quantum *) magick_attribute((__pure__)),
236  IsFuzzyEquivalencePixelInfo(const PixelInfo *,const PixelInfo *)
237  magick_attribute((__pure__)),
238  SetPixelMetaChannels(Image *,const size_t,ExceptionInfo *);
239 
242  const PixelInfo *magick_restrict) magick_hot_spot,
243  GetPixelIntensity(const Image *magick_restrict,
244  const Quantum *magick_restrict) magick_hot_spot;
245 
247  *AcquirePixelChannelMap(void),
249  *DestroyPixelChannelMap(PixelChannelMap *);
250 
251 extern MagickExport PixelInfo
252  *ClonePixelInfo(const PixelInfo *);
253 
255  DecodePixelGamma(const MagickRealType) magick_hot_spot,
256  EncodePixelGamma(const MagickRealType) magick_hot_spot;
257 
258 extern MagickExport void
259  ConformPixelInfo(Image *,const PixelInfo *,PixelInfo *,ExceptionInfo *),
260  GetPixelInfo(const Image *,PixelInfo *),
261  InitializePixelChannelMap(Image *);
262 
263 #if defined(__cplusplus) || defined(c_plusplus)
264 }
265 #endif
266 
267 #endif
PixelChannel channel
Definition: pixel.h:163
#define magick_restrict
Definition: MagickCore.h:41
MagickExport MagickRealType EncodePixelGamma(const MagickRealType pixel)
Definition: pixel.c:446
MagickDoubleType MagickRealType
Definition: magick-type.h:124
Definition: pixel.h:80
Definition: pixel.h:118
Definition: pixel.h:41
Definition: pixel.h:117
MagickExport void InitializePixelChannelMap(Image *image)
Definition: pixel.c:4334
Definition: pixel.h:45
Definition: pixel.h:108
double fuzz
Definition: pixel.h:184
Definition: pixel.h:88
Definition: pixel.h:87
Definition: pixel.h:122
Definition: pixel.h:35
MagickExport PixelChannelMap * AcquirePixelChannelMap(void)
Definition: pixel.c:93
Definition: pixel.h:104
unsigned int green
Definition: pixel.h:204
PixelTrait alpha_trait
Definition: pixel.h:181
Definition: pixel.h:139
Definition: pixel.h:43
PixelInterpolateMethod
Definition: pixel.h:113
Definition: pixel.h:95
Definition: pixel.h:119
Definition: exception.h:101
Definition: pixel.h:93
StorageType
Definition: pixel.h:145
PixelIntensityMethod
Definition: pixel.h:99
MagickExport MagickBooleanType InterpolatePixelChannel(const Image *magick_restrict image, const CacheView_ *image_view, const PixelChannel channel, const PixelInterpolateMethod method, const double x, const double y, double *pixel, ExceptionInfo *exception)
Definition: pixel.c:4492
Definition: pixel.h:49
MagickExport MagickBooleanType InterpolatePixelChannels(const Image *magick_restrict source, const CacheView_ *source_view, const Image *magick_restrict destination, const PixelInterpolateMethod method, const double x, const double y, Quantum *pixel, ExceptionInfo *exception)
Definition: pixel.c:4917
Definition: pixel.h:46
MagickRealType red
Definition: pixel.h:193
Definition: pixel.h:65
Definition: pixel.h:79
ClassType storage_class
Definition: pixel.h:175
MagickExport MagickBooleanType InterpolatePixelInfo(const Image *image, const CacheView_ *image_view, const PixelInterpolateMethod method, const double x, const double y, PixelInfo *pixel, ExceptionInfo *exception)
Definition: pixel.c:5483
MagickSizeType count
Definition: pixel.h:190
Definition: cache-view.c:65
Definition: pixel.h:92
unsigned int blue
Definition: pixel.h:204
Definition: pixel.h:201
Definition: pixel.h:44
MagickRealType alpha
Definition: pixel.h:193
Definition: pixel.h:154
Definition: pixel.h:74
Definition: pixel.h:110
Definition: pixel.h:78
ssize_t offset
Definition: pixel.h:169
Definition: pixel.h:133
MagickExport void GetPixelInfo(const Image *image, PixelInfo *pixel)
Definition: pixel.c:2170
Definition: image.h:151
#define magick_attribute(x)
Definition: method-attribute.h:104
Definition: pixel.h:147
MagickExport MagickRealType DecodePixelGamma(const MagickRealType pixel)
Definition: pixel.c:319
Definition: pixel.h:140
Definition: pixel.h:72
MagickExport MagickBooleanType ImportImagePixels(Image *image, const ssize_t x, const ssize_t y, const size_t width, const size_t height, const char *map, const StorageType type, const void *pixels, ExceptionInfo *exception)
Definition: pixel.c:4138
Definition: pixel.h:37
Definition: pixel.h:53
Definition: pixel.h:132
MagickBooleanType
Definition: magick-type.h:169
MagickExport PixelChannelMap * ClonePixelChannelMap(PixelChannelMap *channel_map)
Definition: pixel.c:133
ClassType
Definition: magick-type.h:162
Definition: pixel.h:121
unsigned int black
Definition: pixel.h:204
Definition: pixel.h:51
Definition: pixel.h:91
Definition: pixel.h:64
Definition: pixel.h:160
struct _PixelInfo PixelInfo
Definition: pixel.h:103
Definition: pixel.h:102
Definition: pixel.h:77
Definition: pixel.h:125
Definition: pixel.h:47
struct _PixelChannelMap PixelChannelMap
size_t MagickSizeType
Definition: magick-type.h:134
Definition: pixel.h:131
MagickExport PixelChannelMap * DestroyPixelChannelMap(PixelChannelMap *channel_map)
Definition: pixel.c:350
Definition: pixel.h:85
MagickRealType blue
Definition: pixel.h:193
MagickExport ChannelType SetPixelChannelMask(Image *image, const ChannelType channel_mask)
Definition: pixel.c:6280
Definition: pixel.h:141
Definition: pixel.h:123
MagickExport MagickRealType GetPixelInfoIntensity(const Image *magick_restrict image, const PixelInfo *magick_restrict pixel)
Definition: pixel.c:2224
Definition: pixel.h:86
Definition: pixel.h:76
Definition: pixel.h:55
Definition: pixel.h:83
Definition: pixel.h:149
Definition: pixel.h:66
unsigned int alpha
Definition: pixel.h:204
Definition: pixel.h:38
ChannelType
Definition: pixel.h:33
Definition: pixel.h:54
Definition: pixel.h:50
Definition: pixel.h:81
PixelChannel
Definition: pixel.h:70
Definition: pixel.h:150
size_t depth
Definition: pixel.h:187
Definition: pixel.h:116
MagickExport PixelInfo * ClonePixelInfo(const PixelInfo *pixel)
Definition: pixel.c:170
MagickRealType index
Definition: pixel.h:193
Definition: pixel.h:90
Definition: pixel.h:101
MagickExport MagickBooleanType IsFuzzyEquivalencePixel(const Image *source, const Quantum *p, const Image *destination, const Quantum *q)
Definition: pixel.c:5956
MagickExport void ConformPixelInfo(Image *image, const PixelInfo *source, PixelInfo *destination, ExceptionInfo *exception)
Definition: pixel.c:212
Definition: pixel.h:148
MagickExport MagickBooleanType ExportImagePixels(const Image *image, const ssize_t x, const ssize_t y, const size_t width, const size_t height, const char *map, const StorageType type, void *pixels, ExceptionInfo *exception)
Definition: pixel.c:1964
struct _PixelPacket PixelPacket
Definition: pixel.h:126
Definition: pixel.h:134
Definition: pixel.h:40
unsigned short Quantum
Definition: magick-type.h:86
unsigned int red
Definition: pixel.h:204
MagickRealType black
Definition: pixel.h:193
Definition: pixel.h:82
Definition: pixel.h:94
Definition: pixel.h:42
MagickExport MagickBooleanType IsFuzzyEquivalencePixelInfo(const PixelInfo *p, const PixelInfo *q)
Definition: pixel.c:6065
Definition: pixel.h:96
Definition: pixel.h:39
Definition: pixel.h:63
Definition: pixel.h:153
ColorspaceType
Definition: colorspace.h:25
Definition: pixel.h:73
Definition: pixel.h:89
#define MaxPixelChannels
Definition: pixel.h:27
Definition: pixel.h:115
MagickRealType green
Definition: pixel.h:193
Definition: pixel.h:152
Definition: pixel.h:151
Definition: pixel.h:67
Definition: pixel.h:36
Definition: pixel.h:124
#define MagickExport
Definition: method-attribute.h:80
Definition: pixel.h:105
Definition: pixel.h:52
MagickExport MagickBooleanType SetPixelMetaChannels(Image *image, const size_t number_meta_channels, ExceptionInfo *exception)
Definition: pixel.c:6364
Definition: pixel.h:48
PixelTrait traits
Definition: pixel.h:166
ColorspaceType colorspace
Definition: pixel.h:178
MagickExport MagickBooleanType magick_hot_spot
Definition: cache-view.h:88
Definition: pixel.h:84
PixelMask
Definition: pixel.h:129
Definition: pixel.h:172
PixelTrait
Definition: pixel.h:137
Definition: pixel.h:120
MagickExport MagickRealType GetPixelIntensity(const Image *magick_restrict image, const Quantum *magick_restrict pixel)
Definition: pixel.c:2358
Definition: pixel.h:142
Definition: pixel.h:106
Definition: pixel.h:75