/*
- Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
+ Copyright 1999-2014 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.
#ifndef _MAGICKCORE_PIXEL_H
#define _MAGICKCORE_PIXEL_H
+#include "MagickCore/colorspace.h"
+
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
-#include <MagickCore/colorspace.h>
-
#define MaxPixelChannels 32
#undef index
+/*
+ Pixel enum declarations.
+*/
typedef enum
{
UndefinedChannel = 0x0000,
BlackChannel = 0x0008,
AlphaChannel = 0x0010,
OpacityChannel = 0x0010,
- IndexChannel = 0x0020,
- MaskChannel = 0x0040,
- MetaChannel = 0x0080,
+ IndexChannel = 0x0020, /* Color Index Table? */
+ ReadMaskChannel = 0x0040, /* Pixel is Not Readable? */
+ WriteMaskChannel = 0x0080, /* Pixel is Write Protected? */
+ MetaChannel = 0x0100, /* ???? */
CompositeChannels = 0x002F,
AllChannels = 0x7ffffff,
/*
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 */
DefaultChannels = ((AllChannels | SyncChannels) &~ AlphaChannel)
} ChannelType; /* must correspond to PixelChannel */
-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
{
UndefinedPixelChannel = 0,
BlackPixelChannel = 3,
AlphaPixelChannel = 4,
IndexPixelChannel = 5,
- MaskPixelChannel = 6, /* Image Write Mask */
- MetaPixelChannel = 7, /* ??? */
- IntensityPixelChannel = MaxPixelChannels, /* what are these ??? */
- CompositePixelChannel = MaxPixelChannels,
- SyncPixelChannel = MaxPixelChannels+1
+ 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,
BlendPixelTrait = 0x000004
} PixelTrait;
+typedef enum
+{
+ UndefinedPixel,
+ CharPixel,
+ DoublePixel,
+ FloatPixel,
+ LongPixel,
+ LongLongPixel,
+ QuantumPixel,
+ ShortPixel
+} StorageType;
+
+/*
+ Pixel typedef declarations.
+*/
typedef struct _PixelChannelMap
{
PixelChannel
black;
} PixelPacket;
-typedef enum
-{
- UndefinedPixel,
- CharPixel,
- DoublePixel,
- FloatPixel,
- LongPixel,
- LongLongPixel,
- QuantumPixel,
- ShortPixel
-} StorageType;
-
typedef struct _CacheView
CacheView_;
+/*
+ Pixel method declarations.
+*/
extern MagickExport MagickBooleanType
ExportImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
const size_t,const char *,const StorageType,void *,ExceptionInfo *),
IsFuzzyEquivalencePixelInfo(const PixelInfo *,const PixelInfo *),
SetPixelMetaChannels(Image *,const size_t,ExceptionInfo *);
+extern MagickExport MagickRealType
+ GetPixelIntensity(const Image *restrict,const Quantum *restrict)
+ magick_hot_spot;
+
extern MagickExport PixelChannelMap
*AcquirePixelChannelMap(void),
*ClonePixelChannelMap(PixelChannelMap *),