18 #ifndef MAGICKCORE_IMAGE_PRIVATE_H 19 #define MAGICKCORE_IMAGE_PRIVATE_H 21 #define MagickMax(x,y) (((x) > (y)) ? (x) : (y)) 22 #define MagickMin(x,y) (((x) < (y)) ? (x) : (y)) 24 #include "magick/quantum-private.h" 26 #define BackgroundColor "#ffffff" 27 #if defined(__cplusplus) || defined(c_plusplus) 31 #define BackgroundColorRGBA QuantumRange,QuantumRange,QuantumRange,OpaqueOpacity 32 #define BorderColor "#dfdfdf" 33 #define BorderColorRGBA ScaleShortToQuantum(0xdfdf),\ 34 ScaleShortToQuantum(0xdfdf),ScaleShortToQuantum(0xdfdf),OpaqueOpacity 35 #define DefaultResolution 72.0 36 #define DefaultTileFrame "15x15+3+3" 37 #define DefaultTileGeometry "120x120+4+3>" 38 #define DefaultTileLabel "%f\n%G\n%b" 39 #define ForegroundColor "#000" 40 #define ForegroundColorRGBA 0,0,0,OpaqueOpacity 41 #define LoadImagesTag "Load/Images" 42 #define LoadImageTag "Load/Image" 43 #define Magick2PI 6.28318530717958647692528676655900576839433879875020 44 #define MagickAbsoluteValue(x) ((x) < 0 ? -(x) : (x)) 45 #define MAGICK_INT_MAX (INT_MAX) 46 #define MagickPHI 1.61803398874989484820458683436563811772030917980576 47 #define MagickPI2 1.57079632679489661923132169163975144209858469968755 48 #define MagickPI 3.14159265358979323846264338327950288419716939937510 49 #define MAGICK_PTRDIFF_MAX (PTRDIFF_MAX) 50 #define MAGICK_PTRDIFF_MIN (-PTRDIFF_MAX-1) 51 #define MagickSQ1_2 0.70710678118654752440084436210484903928483593768847 52 #define MagickSQ2 1.41421356237309504880168872420969807856967187537695 53 #define MagickSQ2PI 2.50662827463100024161235523934010416269302368164062 54 #define MAGICK_SIZE_MAX (SIZE_MAX) 55 #define MAGICK_SSIZE_MAX (SSIZE_MAX) 56 #define MAGICK_SSIZE_MIN (-SSIZE_MAX-1) 57 #define MAGICK_UCHAR_MAX (UCHAR_MAX) 58 #define MAGICK_UINT_MAX (UINT_MAX) 59 #define MAGICK_ULONG_MAX (ULONG_MAX) 60 #define MAGICK_USHORT_MAX (USHRT_MAX) 61 #define MatteColor "#bdbdbd" 62 #define MatteColorRGBA ScaleShortToQuantum(0xbdbd),\ 63 ScaleShortToQuantum(0xbdbd),ScaleShortToQuantum(0xbdbd),OpaqueOpacity 64 #define PSDensityGeometry "72.0x72.0" 65 #define PSPageGeometry "612x792" 66 #define SaveImagesTag "Save/Images" 67 #define SaveImageTag "Save/Image" 68 #define TransparentColor "#00000000" 69 #define TransparentColorRGBA 0,0,0,TransparentOpacity 70 #define UndefinedCompressionQuality 0UL 71 #define UndefinedTicksPerSecond 100L 73 static inline int CastDoubleToInt(
const double x)
83 value=(x < 0.0) ? ceil(x) : floor(x);
89 if (value >= ((
double) MAGICK_INT_MAX))
92 return(MAGICK_INT_MAX);
97 static inline ssize_t CastDoubleToLong(
const double x)
107 value=(x < 0.0) ? ceil(x) : floor(x);
108 if (value < ((
double) MAGICK_SSIZE_MIN))
111 return(MAGICK_SSIZE_MIN);
113 if (value >= ((
double) MAGICK_SSIZE_MAX))
116 return(MAGICK_SSIZE_MAX);
118 return((ssize_t) value);
121 static inline QuantumAny CastDoubleToQuantumAny(
const double x)
131 value=(x < 0.0) ? ceil(x) : floor(x);
137 if (value >= ((
double) ((QuantumAny) ~0)))
140 return((QuantumAny) ~0);
142 return((QuantumAny) value);
145 static inline size_t CastDoubleToSizeT(
const double x)
155 value=(x < 0.0) ? ceil(x) : floor(x);
161 if (value >= ((
double) MAGICK_SIZE_MAX))
164 return(MAGICK_SIZE_MAX);
166 return((
size_t) value);
169 static inline ssize_t CastDoubleToSsizeT(
const double x)
179 value=(x < 0.0) ? ceil(x) : floor(x);
180 if (value < ((
double) MAGICK_SSIZE_MIN))
183 return(MAGICK_SSIZE_MIN);
185 if (value >= ((
double) MAGICK_SSIZE_MAX))
188 return(MAGICK_SSIZE_MAX);
190 return((ssize_t) value);
193 static inline unsigned char CastDoubleToUChar(
const double x)
203 value=(x < 0.0) ? ceil(x) : floor(x);
209 if (value >= ((
double) MAGICK_UCHAR_MAX))
212 return(MAGICK_UCHAR_MAX);
214 return((
unsigned char) value);
217 static inline unsigned short CastDoubleToUShort(
const double x)
227 value=(x < 0.0) ? ceil(x) : floor(x);
233 if (value >= ((
double) MAGICK_USHORT_MAX))
236 return(MAGICK_USHORT_MAX);
238 return((
unsigned short) value);
241 static inline size_t CastDoubleToUnsigned(
const double x)
251 value=(x < 0.0) ? ceil(x) : floor(x);
257 if (value >= ((
double) MAGICK_SIZE_MAX))
260 return(MAGICK_SIZE_MAX);
262 return((
size_t) value);
265 static inline double DegreesToRadians(
const double degrees)
267 return((
double) (MagickPI*degrees/180.0));
270 static inline MagickRealType RadiansToDegrees(
const MagickRealType radians)
272 return((MagickRealType) (180.0*radians/MagickPI));
275 static inline unsigned char ScaleColor5to8(
const unsigned int color)
277 return((
unsigned char) (((color) << 3) | ((color) >> 2)));
280 static inline unsigned char ScaleColor6to8(
const unsigned int color)
282 return((
unsigned char) (((color) << 2) | ((color) >> 4)));
285 static inline unsigned int ScaleColor8to5(
const unsigned char color)
287 return((
unsigned int) (((color) & ~0x07) >> 3));
290 static inline unsigned int ScaleColor8to6(
const unsigned char color)
292 return((
unsigned int) (((color) & ~0x03) >> 2));
295 #if defined(__cplusplus) || defined(c_plusplus)