| /* |
| Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization |
| dedicated to making software imaging solutions freely available. |
| |
| You may not use this file except in compliance with the License. |
| obtain a copy of the License at |
| |
| http://www.imagemagick.org/script/license.php |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| MagickCore image pixel methods. |
| */ |
| #ifndef _MAGICKCORE_PIXEL_H |
| #define _MAGICKCORE_PIXEL_H |
| |
| #include "MagickCore/colorspace.h" |
| |
| #if defined(__cplusplus) || defined(c_plusplus) |
| extern "C" { |
| #endif |
| |
| #define MaxPixelChannels 32 |
| #undef index |
| |
| /* |
| Pixel enum declarations. |
| */ |
| typedef enum |
| { |
| UndefinedChannel = 0x0000, |
| RedChannel = 0x0001, |
| GrayChannel = 0x0001, |
| CyanChannel = 0x0001, |
| GreenChannel = 0x0002, |
| MagentaChannel = 0x0002, |
| BlueChannel = 0x0004, |
| YellowChannel = 0x0004, |
| BlackChannel = 0x0008, |
| AlphaChannel = 0x0010, |
| OpacityChannel = 0x0010, |
| IndexChannel = 0x0020, /* Color Index Table? */ |
| ReadMaskChannel = 0x0040, /* Pixel is Not Readable? */ |
| WriteMaskChannel = 0x0080, /* Pixel is Write Protected? */ |
| MetaChannel = 0x0100, /* ???? */ |
| CompositeChannels = 0x002F, |
| AllChannels = 0x7ffffff, |
| /* |
| Special purpose channel types. |
| FUTURE: are these needed any more - they are more like hacks |
| SyncChannels for example is NOT a real channel but a 'flag' |
| It really says -- "User has not defined channels" |
| Though it does have extra meaning in the "-auto-level" operator |
| */ |
| TrueAlphaChannel = 0x0100, /* extract actual alpha channel from opacity */ |
| RGBChannels = 0x0200, /* set alpha from grayscale mask in RGB */ |
| GrayChannels = 0x0400, |
| SyncChannels = 0x20000, /* channels modified as a single unit */ |
| DefaultChannels = AllChannels |
| } ChannelType; /* must correspond to PixelChannel */ |
| |
| typedef enum |
| { |
| UndefinedPixelChannel = 0, |
| RedPixelChannel = 0, |
| CyanPixelChannel = 0, |
| GrayPixelChannel = 0, |
| LPixelChannel = 0, |
| LabelPixelChannel = 0, |
| YPixelChannel = 0, |
| aPixelChannel = 1, |
| GreenPixelChannel = 1, |
| MagentaPixelChannel = 1, |
| CbPixelChannel = 1, |
| bPixelChannel = 2, |
| BluePixelChannel = 2, |
| YellowPixelChannel = 2, |
| CrPixelChannel = 2, |
| BlackPixelChannel = 3, |
| AlphaPixelChannel = 4, |
| IndexPixelChannel = 5, |
| ReadMaskPixelChannel = 6, |
| WriteMaskPixelChannel = 7, |
| MetaPixelChannel = 8, |
| IntensityPixelChannel = MaxPixelChannels, /* ???? */ |
| CompositePixelChannel = MaxPixelChannels, /* ???? */ |
| SyncPixelChannel = MaxPixelChannels+1 /* not a real channel */ |
| } PixelChannel; /* must correspond to ChannelType */ |
| |
| typedef enum |
| { |
| UndefinedPixelIntensityMethod = 0, |
| AveragePixelIntensityMethod, |
| BrightnessPixelIntensityMethod, |
| LightnessPixelIntensityMethod, |
| MSPixelIntensityMethod, |
| Rec601LumaPixelIntensityMethod, |
| Rec601LuminancePixelIntensityMethod, |
| Rec709LumaPixelIntensityMethod, |
| Rec709LuminancePixelIntensityMethod, |
| RMSPixelIntensityMethod |
| } PixelIntensityMethod; |
| |
| typedef enum |
| { |
| UndefinedInterpolatePixel, |
| AverageInterpolatePixel, /* Average 4 nearest neighbours */ |
| Average9InterpolatePixel, /* Average 9 nearest neighbours */ |
| Average16InterpolatePixel, /* Average 16 nearest neighbours */ |
| BackgroundInterpolatePixel, /* Just return background color */ |
| BilinearInterpolatePixel, /* Triangular filter interpolation */ |
| BlendInterpolatePixel, /* blend of nearest 1, 2 or 4 pixels */ |
| CatromInterpolatePixel, /* Catmull-Rom interpolation */ |
| IntegerInterpolatePixel, /* Integer (floor) interpolation */ |
| MeshInterpolatePixel, /* Triangular Mesh interpolation */ |
| NearestInterpolatePixel, /* Nearest Neighbour Only */ |
| SplineInterpolatePixel /* Cubic Spline (blurred) interpolation */ |
| /* FilterInterpolatePixel, ** Use resize filter - (very slow) */ |
| } PixelInterpolateMethod; |
| |
| typedef enum |
| { |
| UndefinedPixelMask = 0x000000, |
| ReadPixelMask = 0x000001, |
| WritePixelMask = 0x000002 |
| } PixelMask; |
| |
| typedef enum |
| { |
| UndefinedPixelTrait = 0x000000, |
| CopyPixelTrait = 0x000001, |
| UpdatePixelTrait = 0x000002, |
| BlendPixelTrait = 0x000004 |
| } PixelTrait; |
| |
| typedef enum |
| { |
| UndefinedPixel, |
| CharPixel, |
| DoublePixel, |
| FloatPixel, |
| LongPixel, |
| LongLongPixel, |
| QuantumPixel, |
| ShortPixel |
| } StorageType; |
| |
| /* |
| Pixel typedef declarations. |
| */ |
| typedef struct _PixelChannelMap |
| { |
| PixelChannel |
| channel; |
| |
| PixelTrait |
| traits; |
| |
| ssize_t |
| offset; |
| } PixelChannelMap; |
| |
| typedef struct _PixelInfo |
| { |
| ClassType |
| storage_class; |
| |
| ColorspaceType |
| colorspace; |
| |
| PixelTrait |
| alpha_trait; |
| |
| double |
| fuzz; |
| |
| size_t |
| depth; |
| |
| MagickSizeType |
| count; |
| |
| MagickRealType |
| red, |
| green, |
| blue, |
| black, |
| alpha, |
| index; |
| } PixelInfo; |
| |
| typedef struct _PixelPacket |
| { |
| unsigned int |
| red, |
| green, |
| blue, |
| alpha, |
| black; |
| } PixelPacket; |
| |
| typedef struct _CacheView |
| CacheView_; |
| |
| /* |
| Pixel method declarations. |
| */ |
| extern MagickExport ChannelType |
| SetPixelChannelMask(Image *,const ChannelType); |
| |
| extern MagickExport MagickBooleanType |
| ExportImagePixels(const Image *,const ssize_t,const ssize_t,const size_t, |
| const size_t,const char *,const StorageType,void *,ExceptionInfo *), |
| ImportImagePixels(Image *,const ssize_t,const ssize_t,const size_t, |
| const size_t,const char *,const StorageType,const void *,ExceptionInfo *), |
| InterpolatePixelChannel(const Image *,const CacheView_ *, |
| const PixelChannel,const PixelInterpolateMethod,const double,const double, |
| double *,ExceptionInfo *), |
| InterpolatePixelChannels(const Image *,const CacheView_ *,const Image *, |
| const PixelInterpolateMethod,const double,const double,Quantum *, |
| ExceptionInfo *), |
| InterpolatePixelInfo(const Image *,const CacheView_ *, |
| const PixelInterpolateMethod,const double,const double,PixelInfo *, |
| ExceptionInfo *), |
| IsFuzzyEquivalencePixel(const Image *,const Quantum *,const Image *, |
| const Quantum *), |
| IsFuzzyEquivalencePixelInfo(const PixelInfo *,const PixelInfo *), |
| SetPixelMetaChannels(Image *,const size_t,ExceptionInfo *); |
| |
| extern MagickExport MagickRealType |
| GetPixelInfoIntensity(const Image *magick_restrict, |
| const PixelInfo *magick_restrict) magick_hot_spot, |
| GetPixelIntensity(const Image *magick_restrict, |
| const Quantum *magick_restrict) magick_hot_spot; |
| |
| extern MagickExport PixelChannelMap |
| *AcquirePixelChannelMap(void), |
| *ClonePixelChannelMap(PixelChannelMap *), |
| *DestroyPixelChannelMap(PixelChannelMap *); |
| |
| extern MagickExport PixelInfo |
| *ClonePixelInfo(const PixelInfo *); |
| |
| extern MagickExport MagickRealType |
| DecodePixelGamma(const MagickRealType) magick_hot_spot, |
| EncodePixelGamma(const MagickRealType) magick_hot_spot; |
| |
| extern MagickExport void |
| ConformPixelInfo(Image *,const PixelInfo *,PixelInfo *,ExceptionInfo *), |
| GetPixelInfo(const Image *,PixelInfo *), |
| InitializePixelChannelMap(Image *); |
| |
| #if defined(__cplusplus) || defined(c_plusplus) |
| } |
| #endif |
| |
| #endif |