/*
- Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
+ Copyright 1999-2018 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
+ https://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,
MagickCore image pixel methods.
*/
-#ifndef _MAGICKCORE_PIXEL_H
-#define _MAGICKCORE_PIXEL_H
+#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,
- CompositeChannels = 0x002F,
+ IndexChannel = 0x0020, /* Color Index Table? */
+ ReadMaskChannel = 0x0040, /* Pixel is Not Readable? */
+ WriteMaskChannel = 0x0080, /* Pixel is Write Protected? */
+ MetaChannel = 0x0100, /* not used */
+ CompositeMaskChannel = 0x0200, /* SVG mask */
+ CompositeChannels = 0x001F,
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 | SyncChannels) &~ AlphaChannel)
+ DefaultChannels = AllChannels
} 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,
CyanPixelChannel = 0,
GrayPixelChannel = 0,
LPixelChannel = 0,
+ LabelPixelChannel = 0,
YPixelChannel = 0,
aPixelChannel = 1,
GreenPixelChannel = 1,
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,
+ CompositeMaskPixelChannel = 9,
+ 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,
+ CompositePixelMask = 0x000004
+} 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 ChannelType
+ SetPixelChannelMask(Image *,const ChannelType);
+
extern MagickExport MagickBooleanType
- ExportImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
+ 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 *),
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 *),
EncodePixelGamma(const MagickRealType) magick_hot_spot;
extern MagickExport void
- InitializePixelChannelMap(Image *),
+ ConformPixelInfo(Image *,const PixelInfo *,PixelInfo *,ExceptionInfo *),
GetPixelInfo(const Image *,PixelInfo *),
- SetPixelChannelMask(Image *,const ChannelType);
+ InitializePixelChannelMap(Image *);
#if defined(__cplusplus) || defined(c_plusplus)
}