magick
|
Colorlist.h,
PreRvIcccm.h,
X.h,
compress.h,
error.h,
formats.h,
gems.h,
image.h,
magick.h,
monitor.h,
plug-ins.h,
utility.h,
version.h,
widget.h,
|
|
|
/*
Image define declarations.
*/
#define ColorMatch(color,target,delta) \
((((int) ((color).red)-delta) <= (int) ((target).red)) && \
((int) ((target).red) <= ((int) ((color).red)+delta)) && \
(((int) ((color).green)-delta) <= (int) ((target).green)) && \
((int) ((target).green) <= ((int) ((color).green)+delta)) && \
(((int) ((color).blue)-delta) <= (int) ((target).blue)) && \
((int) ((target).blue) <= ((int) ((color).blue)+delta)))
#define DegreesToRadians(x) ((x)*M_PI/180.0)
#define Intensity(color) \
((unsigned int) ((color).red*77+(color).green*150+(color).blue*29) >> 8)
#define IsGray(color) \
(((color).red == (color).green) && ((color).green == (color).blue))
#define IsMonochromeImage(image) (IsGrayImage(image) && ((image)->colors <= 2))
#define MatteMatch(color,target,delta) \
(ColorMatch(color,target,delta) && ((color).index == (target).index))
#define MaxColormapSize 65535L
#define MaxStacksize (1 << 15)
#define MaxTextExtent 1664
#define PixelOffset(x,y) image->pixels+((y)*image->columns+(x))
#define Push(up,left,right,delta) \
if ((p < (segment_stack+MaxStacksize)) && (((up)+(delta)) >= 0) && \
(((up)+(delta)) < image->rows)) \
{ \
p->y1=(up); \
p->x1=(left); \
p->x2=(right); \
p->y2=(delta); \
p++; \
}
#define RadiansToDegrees(x) ((x)*180/M_PI)
#define ReadQuantum(quantum,p) \
{ \
if (image->depth == 8) \
quantum=UpScale(*p++); \
else \
{ \
value=(*p++) << 8; \
value|=(*p++); \
quantum=value >> (image->depth-QuantumDepth); \
} \
}
#define ReadQuantumFile(quantum) \
{ \
if (image->depth == 8) \
quantum=UpScale(fgetc(image->file)); \
else \
quantum=MSBFirstReadShort(image->file) >> (image->depth-QuantumDepth); \
}
#define SharpenFactor 60.0
#define Transparent 0
#define WriteQuantum(quantum,q) \
{ \
if (image->depth == 8) \
*q++=DownScale(quantum); \
else \
{ \
value=(quantum); \
if ((QuantumDepth-image->depth) > 0) \
value*=257; \
*q++=value >> 8; \
*q++=value; \
} \
}
#define WriteQuantumFile(quantum) \
{ \
if (image->depth == 8) \
(void) fputc(DownScale(quantum),image->file); \
else \
if ((QuantumDepth-image->depth) > 0) \
MSBFirstWriteShort((quantum)*257,image->file); \
else \
MSBFirstWriteShort(quantum,image->file); \
}
#ifdef QuantumLeap
/*
Color quantum is [0..65535].
*/
#define DownScale(quantum) (((unsigned int) (quantum)) >> 8)
#define Opaque 65535L
#define MaxRGB 65535L
#define MaxRunlength 65535L
#define QuantumDepth 16
#define UpScale(quantum) (((unsigned int) (quantum))*257)
#define XDownScale(color) ((unsigned int) (color))
#define XUpScale(color) ((unsigned int) (color))
typedef unsigned short Quantum;
#else
/*
Color quantum is [0..255].
*/
#define DownScale(quantum) ((unsigned int) (quantum))
#define Opaque 255
#define MaxRGB 255
#define MaxRunlength 255
#define QuantumDepth 8
#define UpScale(quantum) ((unsigned int) (quantum))
#define XDownScale(color) (((unsigned int) (color)) >> 8)
#define XUpScale(color) (((unsigned int) (color))*257)
typedef unsigned char Quantum;
#endif
/*
Enumeration declarations.
*/
typedef enum
{
UndefinedAlignment,
LeftAlignment,
CenterAlignment,
RightAlignment
} AlignmentType;
typedef enum
{
UndefinedClass,
DirectClass,
PseudoClass
} ClassType;
typedef enum
{
UndefinedColorspace,
RGBColorspace,
GRAYColorspace,
TransparentColorspace,
OHTAColorspace,
XYZColorspace,
YCbCrColorspace,
YCCColorspace,
YIQColorspace,
YPbPrColorspace,
YUVColorspace
} ColorspaceType;
typedef enum
{
UndefinedCompositeOp = 0,
OverCompositeOp,
InCompositeOp,
OutCompositeOp,
AtopCompositeOp,
XorCompositeOp,
PlusCompositeOp,
MinusCompositeOp,
AddCompositeOp,
SubtractCompositeOp,
DifferenceCompositeOp,
BumpmapCompositeOp,
ReplaceCompositeOp,
MatteReplaceCompositeOp,
AddMaskCompositeOp,
BlendCompositeOp,
DisplaceCompositeOp
} CompositeOperator;
typedef enum
{
UndefinedCompression,
NoCompression,
RunlengthEncodedCompression,
ZipCompression
} CompressionType;
typedef enum
{
BoxFilter,
MitchellFilter,
TriangleFilter
} FilterType;
typedef enum
{
UndefinedId,
ImageMagickId
} IdType;
typedef enum
{
UndefinedInterlace,
NoneInterlace,
LineInterlace,
PlaneInterlace,
PartitionInterlace
} InterlaceType;
typedef enum
{
UniformNoise,
GaussianNoise,
MultiplicativeGaussianNoise,
ImpulseNoise,
LaplacianNoise,
PoissonNoise
} NoiseType;
typedef enum
{
PointMethod = 0,
ReplaceMethod,
FloodfillMethod,
ResetMethod
} PaintMethod;
typedef enum
{
RotatePreview = 0,
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
} PreviewType;
typedef enum
{
UndefinedPrimitive = 0,
PointPrimitive,
LinePrimitive,
RectanglePrimitive,
FillRectanglePrimitive,
EllipsePrimitive,
FillEllipsePrimitive,
PolygonPrimitive,
FillPolygonPrimitive,
ColorPrimitive,
MattePrimitive,
TextPrimitive,
ImagePrimitive
} PrimitiveType;
typedef enum
{
UndefinedResolution,
PixelsPerInchResolution,
PixelsPerCentimeterResolution
} ResolutionType;
/*
Typedef declarations.
*/
typedef struct _AnnotateInfo
{
char
*server_name,
*font;
unsigned int
pointsize;
char
*box,
*pen,
*geometry,
*text,
*primitive;
unsigned int
linewidth;
AlignmentType
alignment;
} AnnotateInfo;
typedef struct _ColorPacket
{
Quantum
red,
green,
blue;
unsigned char
flags;
char
key[3];
unsigned short
index;
} ColorPacket;
typedef struct _ContributionInfo
{
int
pixel;
long
weight;
} ContributionInfo;
typedef struct _FrameInfo
{
int
x,
y;
unsigned int
width,
height;
int
inner_bevel,
outer_bevel;
} FrameInfo;
typedef struct _ImageInfo
{
char
*filename,
magick[MaxTextExtent];
unsigned int
affirm,
subimage,
subrange;
char
*server_name,
*font,
*size,
*tile,
*density,
*page,
*dispose,
*delay,
*iterations,
*texture;
unsigned int
adjoin;
CompressionType
compression;
unsigned int
dither;
InterlaceType
interlace;
unsigned int
monochrome,
pointsize,
quality,
verbose;
PreviewType
preview_type;
char
*undercolor;
} ImageInfo;
typedef struct _PrimitiveInfo
{
PrimitiveType
primitive;
unsigned int
coordinates;
int
x,
y;
PaintMethod
method;
char
*text;
} PrimitiveInfo;
typedef struct _QuantizeInfo
{
unsigned int
number_colors,
tree_depth,
dither;
ColorspaceType
colorspace;
} QuantizeInfo;
typedef struct _RectangleInfo
{
unsigned int
width,
height;
int
x,
y;
} RectangleInfo;
typedef struct _RunlengthPacket
{
Quantum
red,
green,
blue,
length;
unsigned short
index;
} RunlengthPacket;
typedef struct _SegmentInfo
{
int
x1,
y1,
x2,
y2;
} SegmentInfo;
typedef struct _Image
{
FILE
*file;
int
status,
temporary;
char
filename[MaxTextExtent];
long int
filesize;
int
pipe;
char
magick[MaxTextExtent],
*comments,
*label,
*text;
IdType
id;
ClassType
#if defined(__cplusplus) || defined(c_plusplus)
c_class;
#else
class;
#endif
unsigned int
matte;
CompressionType
compression;
unsigned int
columns,
rows,
depth;
InterlaceType
interlace;
unsigned int
scene,
number_scenes;
char
*montage,
*directory;
ColorPacket
*colormap;
ColorspaceType
colorspace;
unsigned int
colors;
double
gamma;
ResolutionType
units;
float
x_resolution,
y_resolution;
unsigned int
mean_error_per_pixel;
double
normalized_mean_error,
normalized_maximum_error;
unsigned long
total_colors;
char
*signature;
RunlengthPacket
*pixels,
*packet;
unsigned int
packets,
runlength,
packet_size;
unsigned char
*packed_pixels;
ColorPacket
background_color,
border_color,
matte_color;
long int
magick_time;
char
magick_filename[MaxTextExtent];
unsigned int
magick_columns,
magick_rows;
char
*geometry,
*page;
unsigned int
dispose,
delay,
iterations;
unsigned int
orphan;
struct _Image
*previous,
*list,
*next;
} Image;
/*
Image utilities routines.
*/
extern void
CommentImage(Image *,char *),
LabelImage(Image *,char *);
extern Image
*AddNoiseImage(Image *,NoiseType),
*AllocateImage(const ImageInfo *),
*AverageImages(Image *),
*BorderImage(Image *,RectangleInfo *),
*BlurImage(Image *,double),
*ChopImage(Image *,RectangleInfo *),
*CloneImage(Image *,const unsigned int,const unsigned int,const unsigned int),
*CropImage(Image *,RectangleInfo *),
*DespeckleImage(Image *),
*EdgeImage(Image *,double),
*EmbossImage(Image *),
*EnhanceImage(Image *),
*FlipImage(Image *),
*FlopImage(Image *),
*FrameImage(Image *,FrameInfo *),
*ImplodeImage(Image *,double),
**ListToGroupImage(Image *,unsigned int *),
*MagnifyImage(Image *),
*MinifyImage(Image *),
*OilPaintImage(Image *,const unsigned int),
*ReadImage(ImageInfo *),
*ReduceNoiseImage(Image *),
*RollImage(Image *,int,int),
*RotateImage(Image *,double,const unsigned int,const unsigned int),
*SampleImage(Image *,unsigned int,unsigned int),
*ScaleImage(Image *,const unsigned int,const unsigned int),
*ShadeImage(Image *,unsigned int,double,double),
*SharpenImage(Image *,double),
*ShearImage(Image *,double,double,const unsigned int),
*SpreadImage(Image *,unsigned int),
*StereoImage(Image *,Image *),
*SwirlImage(Image *,double),
*WaveImage(Image *,double,double),
*ZoomImage(Image *,const unsigned int,const unsigned int,const FilterType);
extern int
ParseImageGeometry(char *,int *,int *,unsigned int *,unsigned int *);
extern unsigned int
IsGeometry(char *),
IsGrayImage(Image *),
IsPseudoClass(Image *),
IsSubimage(char *,unsigned int),
PlasmaImage(Image *,SegmentInfo *,int,int),
UncompressImage(Image *),
WriteImage(ImageInfo *,Image *);
extern void
AllocateNextImage(const ImageInfo *,Image *),
AnnotateImage(Image *,AnnotateInfo *),
CloseImage(Image *),
ColorFloodfillImage(Image *,int,int,const ColorPacket *,const int),
ColorizeImage(Image *,char *,char *),
CompositeImage(Image *,const CompositeOperator,Image *,const int,const int),
CompressColormap(Image *),
CompressImage(Image *),
ContrastImage(Image *,const unsigned int),
CycleColormapImage(Image *,int),
DescribeImage(Image *,FILE *,const unsigned int),
DestroyImage(Image *),
DestroyImages(Image *),
DrawImage(Image *,AnnotateInfo *),
EqualizeImage(Image *),
GammaImage(Image *,char *),
GetAnnotateInfo(AnnotateInfo *),
GetImageInfo(ImageInfo *),
GetQuantizeInfo(QuantizeInfo *),
HSLTransform(double,const double,const double,Quantum *,Quantum *,Quantum *),
MapImage(Image *,Image *,const unsigned int),
MapImages(Image *,Image *,const unsigned int),
MatteFloodfillImage(Image *,int,int,const unsigned int,const int),
ModulateImage(Image *,char *),
MogrifyImage(ImageInfo *,int,char **,Image **),
MogrifyImages(ImageInfo *,int,char **,Image **),
NegateImage(Image *,unsigned int),
NormalizeImage(Image *),
NumberColors(Image *,FILE *),
OpaqueImage(Image *,char *,char *),
OpenImage(const ImageInfo *,Image *,const char *),
QuantizationError(Image *),
QuantizeImage(QuantizeInfo *,Image *),
QuantizeImages(QuantizeInfo *,Image *),
RaiseImage(Image *,RectangleInfo *,const int),
RGBTransformImage(Image *,const unsigned int),
SegmentImage(Image *,const unsigned int,const unsigned int,const double,
const double),
SetImageInfo(ImageInfo *,unsigned int),
SetNumberScenes(Image *),
SignatureImage(Image *),
SolarizeImage(Image *,const double),
SortColormapByIntensity(Image *),
SyncImage(Image *),
TextureImage(Image *,char *),
ThresholdImage(Image *,double),
TransformHSL(const Quantum,const Quantum,const Quantum,double *,double *,
double *),
TransformImage(Image **,char *,char *),
TransformRGBImage(Image *,const unsigned int),
TransparentImage(Image *,char *);
|