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)
93 if ((
IsNaN(quantum) != 0) || (quantum <= 0.0))
97 return((
Quantum) (quantum+0.5));
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);
107 if ((
IsNaN(quantum) != 0) || (quantum <= 0.0))
109 if (quantum >= 255.0)
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));
120 if ((
IsNaN(quantum) != 0) || (quantum <= 0.0))
122 if ((quantum/257.0) >= 255.0)
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)
134 if ((
IsNaN(quantum) != 0) || (quantum <= 0.0))
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));
147 if ((
IsNaN(quantum) != 0) || (quantum <= 0.0))
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
MagickDoubleType MagickRealType
Definition: magick-type.h:125
QuantumFormatType
Definition: quantum.h:45
MagickExport EndianType GetQuantumEndian(const QuantumInfo *quantum_info)
Definition: quantum.c:359
MagickExport MagickBooleanType SetQuantumFormat(const Image *image, QuantumInfo *quantum_info, const QuantumFormatType format)
Definition: quantum.c:768
#define MagickULLConstant(c)
Definition: magick-type.h:39
Definition: exception.h:102
Definition: cache-view.c:65
MagickExport MagickBooleanType SetQuantumEndian(const Image *image, QuantumInfo *quantum_info, const EndianType endian)
Definition: quantum.c:728
static Quantum ClampToQuantum(const MagickRealType quantum)
Definition: quantum.h:88
EndianType
Definition: quantum.h:31
size_t quantum
Definition: quantum-private.h:48
MagickExport size_t ExportQuantumPixels(const Image *image, const CacheView *image_view, const QuantumInfo *quantum_info, const QuantumType quantum_type, unsigned char *magick_restrict pixels, ExceptionInfo *exception)
Definition: quantum-export.c:3817
MagickBooleanType
Definition: magick-type.h:198
MagickExport MagickBooleanType SetQuantumDepth(const Image *image, QuantumInfo *quantum_info, const size_t depth)
Definition: quantum.c:661
MagickExport MagickBooleanType SetQuantumPad(const Image *image, QuantumInfo *quantum_info, const size_t pad)
Definition: quantum.c:908
MagickExport void SetQuantumAlphaType(QuantumInfo *quantum_info, const QuantumAlphaType type)
Definition: quantum.c:626
MagickExport void SetQuantumScale(QuantumInfo *quantum_info, const double scale)
Definition: quantum.c:1011
MagickExport unsigned char * GetQuantumPixels(const QuantumInfo *quantum_info)
Definition: quantum.c:490
MagickExport void SetQuantumMinIsWhite(QuantumInfo *quantum_info, const MagickBooleanType min_is_white)
Definition: quantum.c:946
MagickExport void SetQuantumImageType(Image *image, const QuantumType quantum_type)
Definition: quantum.c:807
Definition: quantum-private.h:45
#define IsNaN(a)
Definition: magick-type.h:221
MagickExport QuantumFormatType GetQuantumFormat(const QuantumInfo *quantum_info)
Definition: quantum.c:388
unsigned short Quantum
Definition: magick-type.h:85
MagickExport void SetQuantumQuantum(QuantumInfo *quantum_info, const size_t quantum)
Definition: quantum.c:979
QuantumType
Definition: quantum.h:53
MagickExport size_t ImportQuantumPixels(Image *image, CacheView *image_view, const QuantumInfo *quantum_info, const QuantumType quantum_type, const unsigned char *magick_restrict pixels, ExceptionInfo *exception)
Definition: quantum-import.c:4383
#define MagickExport
Definition: method-attribute.h:80
MagickExport void GetQuantumInfo(const ImageInfo *image_info, QuantumInfo *quantum_info)
Definition: quantum.c:419
MagickExport QuantumInfo * AcquireQuantumInfo(const ImageInfo *image_info, Image *image)
Definition: quantum.c:109
QuantumAlphaType
Definition: quantum.h:38
MagickExport void SetQuantumPack(QuantumInfo *quantum_info, const MagickBooleanType pack)
Definition: quantum.c:873
#define QuantumRange
Definition: magick-type.h:86
MagickExport QuantumInfo * DestroyQuantumInfo(QuantumInfo *quantum_info)
Definition: quantum.c:214
MagickExport size_t GetQuantumExtent(const Image *image, const QuantumInfo *quantum_info, const QuantumType quantum_type)
Definition: quantum.c:307
MagickExport QuantumType GetQuantumType(Image *image, ExceptionInfo *exception)
Definition: quantum.c:522