18#ifndef MAGICKCORE_IMAGE_PRIVATE_H
19#define MAGICKCORE_IMAGE_PRIVATE_H
22#include "MagickCore/pixel-accessor.h"
23#include "MagickCore/quantum-private.h"
25#if defined(__cplusplus) || defined(c_plusplus)
29#define BackgroundColor "#ffffff"
30#define BackgroundColorRGBA QuantumRange,QuantumRange,QuantumRange,OpaqueAlpha
31#define BorderColor "#dfdfdf"
32#define BorderColorRGBA ScaleShortToQuantum(0xdfdf),\
33 ScaleShortToQuantum(0xdfdf),ScaleShortToQuantum(0xdfdf),OpaqueAlpha
34#define DefaultResolution 72.0
35#define DefaultTileFrame "15x15+3+3"
36#define DefaultTileGeometry "120x120+4+3>"
37#define DefaultTileLabel "%f\n%G\n%b"
38#define ForegroundColor "#000"
39#define ForegroundColorRGBA 0,0,0,OpaqueAlpha
40#define LoadImagesTag "Load/Images"
41#define LoadImageTag "Load/Image"
42#define Magick2PI 6.28318530717958647692528676655900576839433879875020
43#define MagickAbsoluteValue(x) ((x) < 0 ? -(x) : (x))
44#define MagickPHI 1.61803398874989484820458683436563811772030917980576
45#define MagickPI2 1.57079632679489661923132169163975144209858469968755
46#define MagickPI 3.1415926535897932384626433832795028841971693993751058209749445923078164062
47#define MagickSQ1_2 0.70710678118654752440084436210484903928483593768847
48#define MagickSQ2 1.41421356237309504880168872420969807856967187537695
49#define MagickSQ2PI 2.50662827463100024161235523934010416269302368164062
50#define MAGICK_UCHAR_MAX (UCHAR_MAX)
51#define MAGICK_UINT_MAX (UINT_MAX)
52#define MAGICK_ULONG_MAX (ULONG_MAX)
53#define MAGICK_USHORT_MAX (USHRT_MAX)
54#define MatteColor "#bdbdbd"
55#define MatteColorRGBA ScaleShortToQuantum(0xbdbd),\
56 ScaleShortToQuantum(0xbdbd),ScaleShortToQuantum(0xbdbd),OpaqueAlpha
57#define PSDensityGeometry "72.0x72.0"
58#define PSPageGeometry "612x792"
59#define SaveImagesTag "Save/Images"
60#define SaveImageTag "Save/Image"
61#define TransparentColor "#00000000"
62#define TransparentColorRGBA (Quantum) 0,(Quantum) 0,(Quantum) 0,TransparentAlpha
63#define UndefinedCompressionQuality 0UL
64#define UndefinedTicksPerSecond 100L
66static inline int CastDoubleToInt(
const double x)
76 value=(x < 0.0) ? ceil(x) : floor(x);
82 if (value >= ((
double) MAGICK_INT_MAX))
85 return(MAGICK_INT_MAX);
90static inline ptrdiff_t CastDoubleToPtrdiffT(
const double x)
100 value=(x < 0.0) ? ceil(x) : floor(x);
101 if (value < ((
double) MAGICK_PTRDIFF_MIN))
104 return(MAGICK_PTRDIFF_MIN);
106 if (value >= ((
double) MAGICK_PTRDIFF_MAX))
109 return(MAGICK_PTRDIFF_MAX);
111 return((ptrdiff_t) value);
114static inline size_t CastDoubleToSizeT(
const double x)
124 value=(x < 0.0) ? ceil(x) : floor(x);
130 if (value >= ((
double) MAGICK_SIZE_MAX))
133 return(MAGICK_SIZE_MAX);
135 return((
size_t) value);
138static inline ssize_t CastDoubleToSsizeT(
const double x)
148 value=(x < 0.0) ? ceil(x) : floor(x);
149 if (value < ((
double) MAGICK_SSIZE_MIN))
152 return((ssize_t) MAGICK_SSIZE_MIN);
154 if (value >= ((
double) MAGICK_SSIZE_MAX))
157 return((ssize_t) MAGICK_SSIZE_MAX);
159 return((ssize_t) value);
162static inline unsigned char CastDoubleToUChar(
const double x)
172 value=(x < 0.0) ? ceil(x) : floor(x);
178 if (value >= ((
double) MAGICK_UCHAR_MAX))
181 return(MAGICK_UCHAR_MAX);
183 return((
unsigned char) value);
186static inline unsigned int CastDoubleToUInt(
const double x)
196 value=(x < 0.0) ? ceil(x) : floor(x);
202 if (value >= ((
double) MAGICK_UINT_MAX))
205 return(MAGICK_UINT_MAX);
207 return((
unsigned int) value);
210static inline unsigned short CastDoubleToUShort(
const double x)
220 value=(x < 0.0) ? ceil(x) : floor(x);
226 if (value >= ((
double) MAGICK_USHORT_MAX))
229 return(MAGICK_USHORT_MAX);
231 return((
unsigned short) value);
234static inline double DegreesToRadians(
const double degrees)
236 return((
double) (MagickPI*degrees/180.0));
239static inline double RadiansToDegrees(
const double radians)
241 return((
double) (180.0*radians/MagickPI));
244static inline unsigned char ScaleColor5to8(
const unsigned int color)
246 return((
unsigned char) (((color) << 3) | ((color) >> 2)));
249static inline unsigned char ScaleColor6to8(
const unsigned int color)
251 return((
unsigned char) (((color) << 2) | ((color) >> 4)));
254static inline unsigned int ScaleColor8to5(
const unsigned char color)
256 return((
unsigned int) (((color) & ~0x07) >> 3));
259static inline unsigned int ScaleColor8to6(
const unsigned char color)
261 return((
unsigned int) (((color) & ~0x03) >> 2));
264#if defined(__cplusplus) || defined(c_plusplus)