You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
261 lines
7.0 KiB
261 lines
7.0 KiB
/* |
|
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 = 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 |
|
} 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
|
|
|