/*
Copyright 1999-2006 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 types.
*/
#ifndef _MAGICKCORE_MAGICK_TYPE_H
#define _MAGICKCORE_MAGICK_TYPE_H
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
typedef enum
{
MagickFalse = 0,
MagickTrue = 1
} MagickBooleanType;
#include "magick/semaphore.h"
#if !defined(QuantumDepth)
#define QuantumDepth 16
#define QuantumLeap
#endif
#if defined(__WINDOWS__)
# define MagickLLConstant(c) (MagickOffsetType) (c ## i64)
# define MagickULLConstant(c) (MagickSizeType) (c ## ui64)
#else
# define MagickLLConstant(c) (MagickOffsetType) (c ## LL)
# define MagickULLConstant(c) (MagickSizeType) (c ## ULL)
#endif
#if (QuantumDepth == 8)
#define MagickEpsilon 1.0e-6
#define MaxColormapSize 256
#define MaxMap 255UL
#define QuantumFormat "%u"
#define QuantumRange ((Quantum) 255)
typedef float MagickRealType;
typedef unsigned char Quantum;
#elif (QuantumDepth == 16)
#define MagickEpsilon 1.0e-10
#define MaxColormapSize 65536
#define MaxMap 65535UL
#define QuantumFormat "%u"
#define QuantumRange ((Quantum) 65535)
typedef double MagickRealType;
typedef unsigned short Quantum;
#elif (QuantumDepth == 32)
#define MagickEpsilon 1.0e-10
#define MaxColormapSize 65536
#define MaxMap 65535UL
#define QuantumFormat "%u"
#define QuantumRange ((Quantum) 4294967295U)
#if defined(HAVE_LONG_DOUBLE)
typedef long double MagickRealType;
#else
typedef double MagickRealType;
#endif
typedef unsigned int Quantum;
#elif (QuantumDepth == 64) && defined(HAVE_LONG_DOUBLE)
#define MagickEpsilon 1.0e-10
#define MaxColormapSize 65536
#define MaxMap 65535UL
#define QuantumFormat "%llu"
#define QuantumRange \
((Quantum) MagickULLConstant(18446744073709551615))
typedef long double MagickRealType;
typedef unsigned long long Quantum;
#else
#if !defined(_CH_)
# error "Specified value of QuantumDepth is not supported"
#endif
#endif
#define MaxRGB QuantumRange /* deprecated */
/*
Typedef declarations.
*/
typedef unsigned int MagickStatusType;
#if !defined(__WINDOWS__)
#if (SIZEOF_LONG_LONG == 8)
typedef long long MagickOffsetType;
typedef unsigned long long MagickSizeType;
#define MagickSizeFormat "%10llu"
#else
typedef long MagickOffsetType;
typedef unsigned long MagickSizeType;
#define MagickSizeFormat "%10lu"
#endif
#else
typedef __int64 MagickOffsetType;
typedef unsigned __int64 MagickSizeType;
#define MagickSizeFormat "%10llu"
#endif
#if defined(macintosh)
#define ExceptionInfo MagickExceptionInfo
#endif
typedef enum
{
UndefinedChannel,
RedChannel = 0x0001,
GrayChannel = 0x0001,
CyanChannel = 0x0001,
GreenChannel = 0x0002,
MagentaChannel = 0x0002,
BlueChannel = 0x0004,
YellowChannel = 0x0004,
AlphaChannel = 0x0008,
OpacityChannel = 0x0008,
MatteChannel = 0x0008, /* deprecated */
BlackChannel = 0x0020,
IndexChannel = 0x0020,
AllChannels = 0xff,
DefaultChannels = (AllChannels &~ OpacityChannel)
} ChannelType;
typedef enum
{
UndefinedClass,
DirectClass,
PseudoClass
} ClassType;
typedef enum
{
UndefinedColorspace,
RGBColorspace,
GRAYColorspace,
TransparentColorspace,
OHTAColorspace,
LABColorspace,
XYZColorspace,
YCbCrColorspace,
YCCColorspace,
YIQColorspace,
YPbPrColorspace,
YUVColorspace,
CMYKColorspace,
sRGBColorspace,
HSBColorspace,
HSLColorspace,
HWBColorspace,
Rec601LumaColorspace,
Rec601YCbCrColorspace,
Rec709LumaColorspace,
Rec709YCbCrColorspace,
LogColorspace
} ColorspaceType;
typedef enum
{
UndefinedCompositeOp,
NoCompositeOp,
AddCompositeOp,
AtopCompositeOp,
BlendCompositeOp,
BumpmapCompositeOp,
ClearCompositeOp,
ColorBurnCompositeOp,
ColorDodgeCompositeOp,
ColorizeCompositeOp,
CopyBlackCompositeOp,
CopyBlueCompositeOp,
CopyCompositeOp,
CopyCyanCompositeOp,
CopyGreenCompositeOp,
CopyMagentaCompositeOp,
CopyOpacityCompositeOp,
CopyRedCompositeOp,
CopyYellowCompositeOp,
DarkenCompositeOp,
DstAtopCompositeOp,
DstCompositeOp,
DstInCompositeOp,
DstOutCompositeOp,
DstOverCompositeOp,
DifferenceCompositeOp,
DisplaceCompositeOp,
DissolveCompositeOp,
ExclusionCompositeOp,
HardLightCompositeOp,
HueCompositeOp,
InCompositeOp,
LightenCompositeOp,
LuminizeCompositeOp,
MinusCompositeOp,
ModulateCompositeOp,
MultiplyCompositeOp,
OutCompositeOp,
OverCompositeOp,
OverlayCompositeOp,
PlusCompositeOp,
ReplaceCompositeOp,
SaturateCompositeOp,
ScreenCompositeOp,
SoftLightCompositeOp,
SrcAtopCompositeOp,
SrcCompositeOp,
SrcInCompositeOp,
SrcOutCompositeOp,
SrcOverCompositeOp,
SubtractCompositeOp,
ThresholdCompositeOp,
XorCompositeOp
} CompositeOperator;
typedef enum
{
UndefinedCompression,
NoCompression,
BZipCompression,
FaxCompression,
Group4Compression,
JPEGCompression,
JPEG2000Compression,
LosslessJPEGCompression,
LZWCompression,
RLECompression,
ZipCompression
} CompressionType;
typedef enum
{
UnrecognizedDispose,
UndefinedDispose = 0,
NoneDispose = 1,
BackgroundDispose = 2,
PreviousDispose = 3
} DisposeType;
typedef enum
{
UndefinedEndian,
LSBEndian,
MSBEndian
} EndianType;
typedef enum
{
UndefinedException,
WarningException = 300,
ResourceLimitWarning = 300,
TypeWarning = 305,
OptionWarning = 310,
DelegateWarning = 315,
MissingDelegateWarning = 320,
CorruptImageWarning = 325,
FileOpenWarning = 330,
BlobWarning = 335,
StreamWarning = 340,
CacheWarning = 345,
CoderWarning = 350,
ModuleWarning = 355,
DrawWarning = 360,
ImageWarning = 365,
WandWarning = 370,
XServerWarning = 380,
MonitorWarning = 385,
RegistryWarning = 390,
ConfigureWarning = 395,
ErrorException = 400,
ResourceLimitError = 400,
TypeError = 405,
OptionError = 410,
DelegateError = 415,
MissingDelegateError = 420,
CorruptImageError = 425,
FileOpenError = 430,
BlobError = 435,
StreamError = 440,
CacheError = 445,
CoderError = 450,
ModuleError = 455,
DrawError = 460,
ImageError = 465,
WandError = 470,
XServerError = 480,
MonitorError = 485,
RegistryError = 490,
ConfigureError = 495,
FatalErrorException = 700,
ResourceLimitFatalError = 700,
TypeFatalError = 705,
OptionFatalError = 710,
DelegateFatalError = 715,
MissingDelegateFatalError = 720,
CorruptImageFatalError = 725,
FileOpenFatalError = 730,
BlobFatalError = 735,
StreamFatalError = 740,
CacheFatalError = 745,
CoderFatalError = 750,
ModuleFatalError = 755,
DrawFatalError = 760,
ImageFatalError = 765,
WandFatalError = 770,
XServerFatalError = 780,
MonitorFatalError = 785,
RegistryFatalError = 790,
ConfigureFatalError = 795
} ExceptionType;
typedef enum
{
UndefinedFilter,
PointFilter,
BoxFilter,
TriangleFilter,
HermiteFilter,
HanningFilter,
HammingFilter,
BlackmanFilter,
GaussianFilter,
QuadraticFilter,
CubicFilter,
CatromFilter,
MitchellFilter,
LanczosFilter,
BesselFilter,
SincFilter
} FilterTypes;
#ifdef ForgetGravity
#undef ForgetGravity
#undef NorthWestGravity
#undef NorthGravity
#undef NorthEastGravity
#undef WestGravity
#undef CenterGravity
#undef EastGravity
#undef SouthWestGravity
#undef SouthGravity
#undef SouthEastGravity
#undef StaticGravity
#endif
typedef enum
{
UndefinedGravity,
ForgetGravity = 0,
NorthWestGravity = 1,
NorthGravity = 2,
NorthEastGravity = 3,
WestGravity = 4,
CenterGravity = 5,
EastGravity = 6,
SouthWestGravity = 7,
SouthGravity = 8,
SouthEastGravity = 9,
StaticGravity = 10
} GravityType;
typedef enum
{
UndefinedType,
BilevelType,
GrayscaleType,
GrayscaleMatteType,
PaletteType,
PaletteMatteType,
TrueColorType,
TrueColorMatteType,
ColorSeparationType,
ColorSeparationMatteType,
OptimizeType,
PaletteBilevelMatteType
} ImageType;
typedef enum
{
UndefinedInterlace,
NoInterlace,
LineInterlace,
PlaneInterlace,
PartitionInterlace
} InterlaceType;
typedef enum
{
UndefinedOrientation,
TopLeftOrientation,
TopRightOrientation,
BottomRightOrientation,
BottomLeftOrientation,
LeftTopOrientation,
RightTopOrientation,
RightBottomOrientation,
LeftBottomOrientation
} OrientationType;
typedef enum
{
UndefinedPreview,
RotatePreview,
ShearPreview,
RollPreview,
HuePreview,
SaturationPreview,
BrightnessPreview,
GammaPreview,
SpiffPreview,
DullPreview,
GrayscalePreview,
QuantizePreview,
DespecklePreview,
ReduceNoisePreview,
AddNoisePreview,
SharpenPreview,
BlurPreview,
ThresholdPreview,
EdgeDetectPreview,
SpreadPreview,
SolarizePreview,
ShadePreview,
RaisePreview,
SegmentPreview,
SwirlPreview,
ImplodePreview,
WavePreview,
OilPaintPreview,
CharcoalDrawingPreview,
JPEGPreview
} PreviewType;
typedef enum
{
UndefinedIntent,
SaturationIntent,
PerceptualIntent,
AbsoluteIntent,
RelativeIntent
} RenderingIntent;
typedef enum
{
UndefinedResolution,
PixelsPerInchResolution,
PixelsPerCentimeterResolution
} ResolutionType;
typedef enum
{
UndefinedTimerState,
StoppedTimerState,
RunningTimerState
} TimerState;
typedef struct _AffineMatrix
{
double
sx,
rx,
ry,
sy,
tx,
ty;
} AffineMatrix;
typedef Quantum IndexPacket;
typedef struct _PixelPacket
{
#if defined(WORDS_BIGENDIAN)
Quantum
red,
green,
blue,
opacity;
#else
Quantum
blue,
green,
red,
opacity;
#endif
} PixelPacket;
typedef struct _ColorPacket
{
PixelPacket
pixel;
IndexPacket
index;
MagickSizeType
count;
} ColorPacket;
typedef struct _ErrorInfo
{
double
mean_error_per_pixel,
normalized_mean_error,
normalized_maximum_error;
} ErrorInfo;
typedef enum
{
UndefinedInterpolatePixel,
AverageInterpolatePixel,
BicubicInterpolatePixel,
BilinearInterpolatePixel,
FilterInterpolatePixel,
IntegerInterpolatePixel,
MeshInterpolatePixel,
NearestNeighborInterpolatePixel
} InterpolatePixelMethod;
typedef struct _PrimaryInfo
{
double
x,
y,
z;
} PrimaryInfo;
typedef struct _ProfileInfo
{
char
*name;
size_t
length;
unsigned char
*info;
unsigned long
signature;
} ProfileInfo;
typedef struct _RectangleInfo
{
unsigned long
width,
height;
long
x,
y;
} RectangleInfo;
typedef struct _SegmentInfo
{
double
x1,
y1,
x2,
y2;
} SegmentInfo;
typedef struct _Timer
{
double
start,
stop,
total;
} Timer;
typedef struct _TimerInfo
{
Timer
user,
elapsed;
TimerState
state;
unsigned long
signature;
} TimerInfo;
typedef enum
{
UndefinedVirtualPixelMethod,
BackgroundVirtualPixelMethod,
ConstantVirtualPixelMethod, /* deprecated */
DitherVirtualPixelMethod,
EdgeVirtualPixelMethod,
MirrorVirtualPixelMethod,
RandomVirtualPixelMethod,
TileVirtualPixelMethod,
TransparentVirtualPixelMethod
} VirtualPixelMethod;
typedef struct _ChromaticityInfo
{
PrimaryInfo
red_primary,
green_primary,
blue_primary,
white_point;
} ChromaticityInfo;
typedef struct _ExceptionInfo
{
ExceptionType
severity;
int
error_number;
char
*reason,
*description;
void
*exceptions;
MagickBooleanType
relinquish;
SemaphoreInfo
*semaphore;
unsigned long
signature;
} ExceptionInfo;
typedef MagickBooleanType
(*MagickProgressMonitor)(const char *,const MagickOffsetType,
const MagickSizeType,void *);
typedef struct _Ascii85Info _Ascii85Info_;
typedef struct _BlobInfo _BlobInfo_;
typedef struct _Image
{
ClassType
storage_class;
ColorspaceType
colorspace;
CompressionType
compression;
unsigned long
quality;
OrientationType
orientation;
MagickBooleanType
taint,
matte;
unsigned long
columns,
rows,
depth,
colors;
PixelPacket
*colormap,
background_color,
border_color,
matte_color;
double
gamma;
ChromaticityInfo
chromaticity;
RenderingIntent
rendering_intent;
void
*profiles;
ResolutionType
units;
char
*montage,
*directory,
*geometry;
long
offset;
double
x_resolution,
y_resolution;
RectangleInfo
page,
extract_info,
tile_info; /* deprecated */
double
bias,
blur,
fuzz;
FilterTypes
filter;
InterlaceType
interlace;
EndianType
endian;
GravityType
gravity;
CompositeOperator
compose;
DisposeType
dispose;
struct _Image
*clip_mask;
unsigned long
scene,
delay;
long
ticks_per_second;
unsigned long
iterations,
total_colors;
long
start_loop;
ErrorInfo
error;
TimerInfo
timer;
MagickProgressMonitor
progress_monitor;
void
*client_data,
*cache,
*attributes; /* deprecated */
_Ascii85Info_
*ascii85;
_BlobInfo_
*blob;
char
filename[MaxTextExtent],
magick_filename[MaxTextExtent],
magick[MaxTextExtent];
unsigned long
magick_columns,
magick_rows;
ExceptionInfo
exception;
MagickBooleanType
debug;
long
reference_count;
SemaphoreInfo
*semaphore;
ProfileInfo
color_profile,
iptc_profile,
*generic_profile;
unsigned long
generic_profiles; /* this & ProfileInfo is deprecated */
unsigned long
signature;
struct _Image
*previous,
*list,
*next;
InterpolatePixelMethod
interpolate;
MagickBooleanType
black_point_compensation;
PixelPacket
transparent_color;
struct _Image
*mask;
RectangleInfo
origin;
void
*properties;
} Image;
typedef size_t
(*StreamHandler)(const Image *,const void *,const size_t);
typedef struct _ImageInfo
{
CompressionType
compression;
OrientationType
orientation;
MagickBooleanType
temporary,
adjoin,
affirm,
antialias;
char
*size,
*extract,
*page,
*scenes;
unsigned long
scene,
number_scenes,
depth;
InterlaceType
interlace;
EndianType
endian;
ResolutionType
units;
unsigned long
quality;
char
*sampling_factor,
*server_name,
*font,
*texture,
*density;
double
pointsize,
fuzz;
PixelPacket
background_color,
border_color,
matte_color;
MagickBooleanType
dither,
monochrome;
unsigned long
colors;
ColorspaceType
colorspace;
ImageType
type;
PreviewType
preview_type;
long
group;
MagickBooleanType
ping,
verbose;
char
*view,
*authenticate;
ChannelType
channel;
Image
*attributes; /* deprecated */
void
*options;
MagickProgressMonitor
progress_monitor;
void
*client_data,
*cache;
StreamHandler
stream;
FILE
*file;
void
*blob;
size_t
length;
char
magick[MaxTextExtent],
unique[MaxTextExtent],
zero[MaxTextExtent],
filename[MaxTextExtent];
MagickBooleanType
debug;
char
*tile; /* deprecated */
unsigned long
subimage, /* deprecated */
subrange; /* deprecated */
PixelPacket
pen; /* deprecated */
unsigned long
signature;
VirtualPixelMethod
virtual_pixel_method;
PixelPacket
transparent_color;
void
*profile;
} ImageInfo;
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
#endif