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 MagickPHI 1.61803398874989484820458683436563811772030917980576
46#define MagickPI2 1.57079632679489661923132169163975144209858469968755
47#define MagickPI 3.14159265358979323846264338327950288419716939937510
48#define MagickSQ1_2 0.70710678118654752440084436210484903928483593768847
49#define MagickSQ2 1.41421356237309504880168872420969807856967187537695
50#define MagickSQ2PI 2.50662827463100024161235523934010416269302368164062
51#define MatteColor "#bdbdbd"
52#define MatteColorRGBA ScaleShortToQuantum(0xbdbd),\
53 ScaleShortToQuantum(0xbdbd),ScaleShortToQuantum(0xbdbd),OpaqueOpacity
54#define PSDensityGeometry "72.0x72.0"
55#define PSPageGeometry "612x792"
56#define SaveImagesTag "Save/Images"
57#define SaveImageTag "Save/Image"
58#define TransparentColor "#00000000"
59#define TransparentColorRGBA 0,0,0,TransparentOpacity
60#define UndefinedCompressionQuality 0UL
61#define UndefinedTicksPerSecond 100L
63static inline int CastDoubleToInt(
const double x)
73 value=(x < 0.0) ? ceil(x) : floor(x);
79 if (value >= ((
double) MAGICK_INT_MAX))
82 return(MAGICK_INT_MAX);
87static inline ssize_t CastDoubleToLong(
const double x)
97 value=(x < 0.0) ? ceil(x) : floor(x);
98 if (value < ((
double) MAGICK_SSIZE_MIN))
101 return(MAGICK_SSIZE_MIN);
103 if (value >= ((
double) MAGICK_SSIZE_MAX))
106 return(MAGICK_SSIZE_MAX);
108 return((ssize_t) value);
111static inline QuantumAny CastDoubleToQuantumAny(
const double x)
121 value=(x < 0.0) ? ceil(x) : floor(x);
127 if (value >= ((
double) ((QuantumAny) ~0)))
130 return((QuantumAny) ~0);
132 return((QuantumAny) value);
135static inline size_t CastDoubleToSizeT(
const double x)
145 value=(x < 0.0) ? ceil(x) : floor(x);
151 if (value >= ((
double) MAGICK_SIZE_MAX))
154 return(MAGICK_SIZE_MAX);
156 return((
size_t) value);
159static inline ssize_t CastDoubleToSsizeT(
const double x)
169 value=(x < 0.0) ? ceil(x) : floor(x);
170 if (value < ((
double) MAGICK_SSIZE_MIN))
173 return(MAGICK_SSIZE_MIN);
175 if (value >= ((
double) MAGICK_SSIZE_MAX))
178 return(MAGICK_SSIZE_MAX);
180 return((ssize_t) value);
183static inline unsigned char CastDoubleToUChar(
const double x)
193 value=(x < 0.0) ? ceil(x) : floor(x);
199 if (value >= ((
double) MAGICK_UCHAR_MAX))
202 return(MAGICK_UCHAR_MAX);
204 return((
unsigned char) value);
207static inline unsigned short CastDoubleToUShort(
const double x)
217 value=(x < 0.0) ? ceil(x) : floor(x);
223 if (value >= ((
double) MAGICK_USHORT_MAX))
226 return(MAGICK_USHORT_MAX);
228 return((
unsigned short) value);
231static inline size_t CastDoubleToUnsigned(
const double x)
241 value=(x < 0.0) ? ceil(x) : floor(x);
247 if (value >= ((
double) MAGICK_SIZE_MAX))
250 return(MAGICK_SIZE_MAX);
252 return((
size_t) value);
255static inline double DegreesToRadians(
const double degrees)
257 return((
double) (MagickPI*degrees/180.0));
260static inline MagickRealType RadiansToDegrees(
const MagickRealType radians)
262 return((MagickRealType) (180.0*radians/MagickPI));
265static inline unsigned char ScaleColor5to8(
const unsigned int color)
267 return((
unsigned char) (((color) << 3) | ((color) >> 2)));
270static inline unsigned char ScaleColor6to8(
const unsigned int color)
272 return((
unsigned char) (((color) << 2) | ((color) >> 4)));
275static inline unsigned int ScaleColor8to5(
const unsigned char color)
277 return((
unsigned int) (((color) & ~0x07) >> 3));
280static inline unsigned int ScaleColor8to6(
const unsigned char color)
282 return((
unsigned int) (((color) & ~0x03) >> 2));
285#if defined(__cplusplus) || defined(c_plusplus)