typedef struct _QuantumState
{
- EndianType
- endian;
-
double
- minimum,
- scale,
inverse_scale;
unsigned int
size_t
extent;
+ EndianType
+ endian;
+
+ QuantumState
+ state;
+
SemaphoreInfo
*semaphore;
signature;
};
+extern MagickPrivate void
+ ResetQuantumState(QuantumInfo *);
+
static inline MagickSizeType GetQuantumRange(const size_t depth)
{
MagickSizeType
return(map.single_precision);
}
-static inline void InitializeQuantumState(const QuantumInfo *quantum_info,
- const EndianType endian,QuantumState *quantum_state)
-{
- static const unsigned int mask[32] =
- {
- 0x00000000U, 0x00000001U, 0x00000003U, 0x00000007U, 0x0000000fU,
- 0x0000001fU, 0x0000003fU, 0x0000007fU, 0x000000ffU, 0x000001ffU,
- 0x000003ffU, 0x000007ffU, 0x00000fffU, 0x00001fffU, 0x00003fffU,
- 0x00007fffU, 0x0000ffffU, 0x0001ffffU, 0x0003ffffU, 0x0007ffffU,
- 0x000fffffU, 0x001fffffU, 0x003fffffU, 0x007fffffU, 0x00ffffffU,
- 0x01ffffffU, 0x03ffffffU, 0x07ffffffU, 0x0fffffffU, 0x1fffffffU,
- 0x3fffffffU, 0x7fffffffU
- };
-
- quantum_state->endian=endian;
- quantum_state->minimum=quantum_info->minimum;
- quantum_state->scale=quantum_info->scale;
- quantum_state->inverse_scale=1.0;
- if (fabs(quantum_state->scale) >= MagickEpsilon)
- quantum_state->inverse_scale/=quantum_state->scale;
- quantum_state->pixel=0U;
- quantum_state->bits=0U;
- quantum_state->mask=mask;
-}
-
static inline unsigned char *PopCharPixel(const unsigned char pixel,
unsigned char *pixels)
{
const QuantumAny range)
{
#if !defined(MAGICKCORE_HDRI_SUPPORT)
- return((Quantum) (((MagickRealType) QuantumRange*quantum)/range+0.5));
+ return((Quantum) (((double) QuantumRange*quantum)/range+0.5));
#else
- return((Quantum) (((MagickRealType) QuantumRange*quantum)/range));
+ return((Quantum) (((double) QuantumRange*quantum)/range));
#endif
}
static inline QuantumAny ScaleQuantumToAny(const Quantum quantum,
const QuantumAny range)
{
- return((QuantumAny) (((MagickRealType) range*quantum)/QuantumRange+0.5));
+ return((QuantumAny) (((double) range*quantum)/QuantumRange+0.5));
}
#if (MAGICKCORE_QUANTUM_DEPTH == 8)
#endif
}
-static inline Quantum ScaleMapToQuantum(const MagickRealType value)
+static inline Quantum ScaleMapToQuantum(const double value)
{
if (value <= 0.0)
return((Quantum) 0);
if (value >= MaxMap)
- return((Quantum) QuantumRange);
+ return(QuantumRange);
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((Quantum) (value+0.5));
#else
#endif
}
-static inline Quantum ScaleMapToQuantum(const MagickRealType value)
+static inline Quantum ScaleMapToQuantum(const double value)
{
if (value <= 0.0)
return((Quantum) 0);
if (value >= MaxMap)
- return((Quantum) QuantumRange);
+ return(QuantumRange);
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((Quantum) (value+0.5));
#else
return((Quantum) value);
}
-static inline Quantum ScaleMapToQuantum(const MagickRealType value)
+static inline Quantum ScaleMapToQuantum(const double value)
{
if (value <= 0.0)
return((Quantum) 0);
return((Quantum) (18446744073709551615.0*value));
}
-static inline Quantum ScaleMapToQuantum(const MagickRealType value)
+static inline Quantum ScaleMapToQuantum(const double value)
{
if (value <= 0.0)
return((Quantum) 0);