18 #ifndef MAGICKCORE_IMAGE_PRIVATE_H
19 #define MAGICKCORE_IMAGE_PRIVATE_H
21 #if defined(__cplusplus) || defined(c_plusplus)
25 #define MagickMax(x,y) (((x) > (y)) ? (x) : (y))
26 #define MagickMin(x,y) (((x) < (y)) ? (x) : (y))
28 #include "MagickCore/pixel-accessor.h"
29 #include "MagickCore/quantum-private.h"
31 #define BackgroundColor "#ffffff"
32 #define BackgroundColorRGBA QuantumRange,QuantumRange,QuantumRange,OpaqueAlpha
33 #define BorderColor "#dfdfdf"
34 #define BorderColorRGBA ScaleShortToQuantum(0xdfdf),\
35 ScaleShortToQuantum(0xdfdf),ScaleShortToQuantum(0xdfdf),OpaqueAlpha
36 #define DefaultResolution 72.0
37 #define DefaultTileFrame "15x15+3+3"
38 #define DefaultTileGeometry "120x120+4+3>"
39 #define DefaultTileLabel "%f\n%G\n%b"
40 #define ForegroundColor "#000"
41 #define ForegroundColorRGBA 0,0,0,OpaqueAlpha
42 #define LoadImagesTag "Load/Images"
43 #define LoadImageTag "Load/Image"
44 #define Magick2PI 6.28318530717958647692528676655900576839433879875020
45 #define MagickAbsoluteValue(x) ((x) < 0 ? -(x) : (x))
46 #define MagickPHI 1.61803398874989484820458683436563811772030917980576
47 #define MagickPI2 1.57079632679489661923132169163975144209858469968755
48 #define MagickPI 3.1415926535897932384626433832795028841971693993751058209749445923078164062
49 #define MagickSQ1_2 0.70710678118654752440084436210484903928483593768847
50 #define MagickSQ2 1.41421356237309504880168872420969807856967187537695
51 #define MagickSQ2PI 2.50662827463100024161235523934010416269302368164062
52 #define MAGICK_SIZE_MAX (SIZE_MAX)
53 #define MAGICK_SSIZE_MAX (SSIZE_MAX)
54 #define MAGICK_SSIZE_MIN (-SSIZE_MAX-1)
55 #define MatteColor "#bdbdbd"
56 #define MatteColorRGBA ScaleShortToQuantum(0xbdbd),\
57 ScaleShortToQuantum(0xbdbd),ScaleShortToQuantum(0xbdbd),OpaqueAlpha
58 #define PSDensityGeometry "72.0x72.0"
59 #define PSPageGeometry "612x792"
60 #define SaveImagesTag "Save/Images"
61 #define SaveImageTag "Save/Image"
62 #define TransparentColor "#00000000"
63 #define TransparentColorRGBA 0,0,0,TransparentAlpha
64 #define UndefinedCompressionQuality 0UL
65 #define UndefinedTicksPerSecond 100L
67 static inline ssize_t CastDoubleToLong(
const double x)
80 if (value < ((
double) MAGICK_SSIZE_MIN))
83 return((ssize_t) MAGICK_SSIZE_MIN);
89 if (value > ((
double) MAGICK_SSIZE_MAX))
92 return((ssize_t) MAGICK_SSIZE_MAX);
95 return((ssize_t) value);
98 static inline QuantumAny CastDoubleToQuantumAny(
const double x)
105 if (x > ((
double) ((QuantumAny) ~0)))
108 return((QuantumAny) ~0);
113 return((QuantumAny) 0);
115 return((QuantumAny) (x+0.5));
118 static inline size_t CastDoubleToUnsigned(
const double x)
129 if (value >= ((
double) MAGICK_SIZE_MAX))
132 return((
size_t) MAGICK_SIZE_MAX);
139 return((
size_t) value);
142 static inline double DegreesToRadians(
const double degrees)
144 return((
double) (MagickPI*degrees/180.0));
147 static inline size_t GetImageChannels(
const Image *image)
156 for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
158 PixelChannel channel = GetPixelChannelChannel(image,i);
159 PixelTrait traits = GetPixelChannelTraits(image,channel);
160 if ((traits & UpdatePixelTrait) != 0)
163 return(channels == 0 ? (
size_t) 1 : channels);
166 static inline double RadiansToDegrees(
const double radians)
168 return((
double) (180.0*radians/MagickPI));
171 static inline unsigned char ScaleColor5to8(
const unsigned int color)
173 return((
unsigned char) (((color) << 3) | ((color) >> 2)));
176 static inline unsigned char ScaleColor6to8(
const unsigned int color)
178 return((
unsigned char) (((color) << 2) | ((color) >> 4)));
181 static inline unsigned int ScaleColor8to5(
const unsigned char color)
183 return((
unsigned int) (((color) & ~0x07) >> 3));
186 static inline unsigned int ScaleColor8to6(
const unsigned char color)
188 return((
unsigned int) (((color) & ~0x03) >> 2));
191 #if defined(__cplusplus) || defined(c_plusplus)