18 #ifndef MAGICKCORE_QUANTUM_H
19 #define MAGICKCORE_QUANTUM_H
25 #if defined(__cplusplus) || defined(c_plusplus)
29 #define RoundToQuantum(quantum) ClampToQuantum(quantum)
90 #if defined(MAGICKCORE_HDRI_SUPPORT)
101 #if (MAGICKCORE_QUANTUM_DEPTH == 8)
102 static inline unsigned char ScaleQuantumToChar(
const Quantum quantum)
104 #if !defined(MAGICKCORE_HDRI_SUPPORT)
105 return((
unsigned char)
quantum);
111 return((
unsigned char) (
quantum+0.5));
114 #elif (MAGICKCORE_QUANTUM_DEPTH == 16)
115 static inline unsigned char ScaleQuantumToChar(
const Quantum quantum)
117 #if !defined(MAGICKCORE_HDRI_SUPPORT)
118 return((
unsigned char) (((
quantum+128UL)-((
quantum+128UL) >> 8)) >> 8));
124 return((
unsigned char) (
quantum/257.0+0.5));
127 #elif (MAGICKCORE_QUANTUM_DEPTH == 32)
128 static inline unsigned char ScaleQuantumToChar(
const Quantum quantum)
130 #if !defined(MAGICKCORE_HDRI_SUPPORT)
136 if ((
quantum/16843009.0) >= 255.0)
138 return((
unsigned char) (
quantum/16843009.0+0.5));
141 #elif (MAGICKCORE_QUANTUM_DEPTH == 64)
142 static inline unsigned char ScaleQuantumToChar(
const Quantum quantum)
144 #if !defined(MAGICKCORE_HDRI_SUPPORT)
145 return((
unsigned char) (
quantum/72340172838076673.0+0.5));
149 if ((
quantum/72340172838076673.0) >= 255.0)
151 return((
unsigned char) (
quantum/72340172838076673.0+0.5));
194 #if defined(__cplusplus) || defined(c_plusplus)
#define magick_restrict
Definition: MagickCore.h:41
#define MagickULLConstant(c)
Definition: magick-type.h:39
MagickDoubleType MagickRealType
Definition: magick-type.h:129
#define QuantumRange
Definition: magick-type.h:90
unsigned short Quantum
Definition: magick-type.h:89
MagickBooleanType
Definition: magick-type.h:203
#define IsNaN(a)
Definition: magick-type.h:225
#define MagickExport
Definition: method-attribute.h:80
MagickExport MagickBooleanType SetQuantumPad(const Image *, QuantumInfo *, const size_t)
Definition: quantum.c:908
static Quantum ClampToQuantum(const MagickRealType quantum)
Definition: quantum.h:88
QuantumFormatType
Definition: quantum.h:46
@ UnsignedQuantumFormat
Definition: quantum.h:50
@ UndefinedQuantumFormat
Definition: quantum.h:47
@ SignedQuantumFormat
Definition: quantum.h:49
@ FloatingPointQuantumFormat
Definition: quantum.h:48
MagickExport void SetQuantumPack(QuantumInfo *, const MagickBooleanType)
MagickExport EndianType GetQuantumEndian(const QuantumInfo *)
Definition: quantum.c:359
MagickExport QuantumType GetQuantumType(Image *, ExceptionInfo *)
Definition: quantum.c:522
QuantumType
Definition: quantum.h:54
@ OpacityQuantum
Definition: quantum.h:68
@ MagentaQuantum
Definition: quantum.h:67
@ GrayPadQuantum
Definition: quantum.h:75
@ AlphaQuantum
Definition: quantum.h:56
@ IndexQuantum
Definition: quantum.h:66
@ GrayAlphaQuantum
Definition: quantum.h:62
@ CyanQuantum
Definition: quantum.h:61
@ RGBPadQuantum
Definition: quantum.h:76
@ BGROQuantum
Definition: quantum.h:82
@ CMYKOQuantum
Definition: quantum.h:80
@ CMYKAQuantum
Definition: quantum.h:59
@ CbYCrAQuantum
Definition: quantum.h:79
@ RGBAQuantum
Definition: quantum.h:70
@ RGBQuantum
Definition: quantum.h:73
@ GrayQuantum
Definition: quantum.h:63
@ BGRAQuantum
Definition: quantum.h:71
@ BlackQuantum
Definition: quantum.h:57
@ RedQuantum
Definition: quantum.h:69
@ IndexAlphaQuantum
Definition: quantum.h:65
@ CbYCrYQuantum
Definition: quantum.h:77
@ UndefinedQuantum
Definition: quantum.h:55
@ BGRQuantum
Definition: quantum.h:81
@ GreenQuantum
Definition: quantum.h:64
@ CMYKQuantum
Definition: quantum.h:60
@ CbYCrQuantum
Definition: quantum.h:78
@ YellowQuantum
Definition: quantum.h:74
@ RGBOQuantum
Definition: quantum.h:72
@ BlueQuantum
Definition: quantum.h:58
MagickExport void SetQuantumAlphaType(QuantumInfo *, const QuantumAlphaType)
MagickExport void SetQuantumImageType(Image *, const QuantumType)
MagickExport MagickBooleanType SetQuantumDepth(const Image *, QuantumInfo *, const size_t)
MagickExport QuantumInfo * DestroyQuantumInfo(QuantumInfo *)
Definition: quantum.c:214
MagickExport size_t ExportQuantumPixels(const Image *, const CacheView *, const QuantumInfo *, const QuantumType, unsigned char *magick_restrict, ExceptionInfo *)
MagickExport size_t GetQuantumExtent(const Image *, const QuantumInfo *, const QuantumType)
MagickExport size_t ImportQuantumPixels(Image *, CacheView *, const QuantumInfo *, const QuantumType, const unsigned char *magick_restrict, ExceptionInfo *)
QuantumAlphaType
Definition: quantum.h:39
@ AssociatedQuantumAlpha
Definition: quantum.h:41
@ DisassociatedQuantumAlpha
Definition: quantum.h:42
@ UndefinedQuantumAlpha
Definition: quantum.h:40
MagickExport void SetQuantumMinIsWhite(QuantumInfo *, const MagickBooleanType)
MagickExport MagickBooleanType SetQuantumEndian(const Image *, QuantumInfo *, const EndianType)
MagickExport void SetQuantumQuantum(QuantumInfo *, const size_t)
MagickExport QuantumInfo * AcquireQuantumInfo(const ImageInfo *, Image *)
MagickExport QuantumFormatType GetQuantumFormat(const QuantumInfo *)
Definition: quantum.c:388
MagickExport void SetQuantumScale(QuantumInfo *, const double)
Definition: quantum.c:1011
EndianType
Definition: quantum.h:32
@ MSBEndian
Definition: quantum.h:35
@ LSBEndian
Definition: quantum.h:34
@ UndefinedEndian
Definition: quantum.h:33
MagickExport unsigned char * GetQuantumPixels(const QuantumInfo *)
Definition: quantum.c:490
MagickExport void GetQuantumInfo(const ImageInfo *, QuantumInfo *)
MagickExport MagickBooleanType SetQuantumFormat(const Image *, QuantumInfo *, const QuantumFormatType)
Definition: cache-view.c:66
Definition: exception.h:103
Definition: quantum-private.h:46
size_t quantum
Definition: quantum-private.h:49