]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/quantum-private.h
(no commit message)
[imagemagick] / MagickCore / quantum-private.h
index 6bc11d3818b663e03f970f13f6c0056bbca311a7..86a7fa5e3a7402def41a1a4f82062fdfaf5ae17c 100644 (file)
@@ -26,12 +26,7 @@ extern "C" {
 
 typedef struct _QuantumState
 {
-  EndianType
-    endian;
-
   double
-    minimum,
-    scale,
     inverse_scale;
 
   unsigned int
@@ -77,6 +72,12 @@ struct _QuantumInfo
   size_t
     extent;
 
+  EndianType
+    endian;
+
+  QuantumState
+    state;
+
   SemaphoreInfo
     *semaphore;
 
@@ -84,6 +85,9 @@ struct _QuantumInfo
     signature;
 };
 
+extern MagickPrivate void
+  ResetQuantumState(QuantumInfo *);
+
 static inline MagickSizeType GetQuantumRange(const size_t depth)
 {
   MagickSizeType
@@ -168,31 +172,6 @@ static inline float HalfToSinglePrecision(const unsigned short half)
   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)
 {
@@ -295,16 +274,16 @@ static inline Quantum ScaleAnyToQuantum(const QuantumAny quantum,
   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)
@@ -332,12 +311,12 @@ static inline Quantum ScaleLongLongToQuantum(const MagickSizeType value)
 #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
@@ -435,12 +414,12 @@ static inline Quantum ScaleLongLongToQuantum(const MagickSizeType value)
 #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
@@ -524,7 +503,7 @@ static inline Quantum ScaleLongLongToQuantum(const MagickSizeType value)
   return((Quantum) value);
 }
 
-static inline Quantum ScaleMapToQuantum(const MagickRealType value)
+static inline Quantum ScaleMapToQuantum(const double value)
 {
   if (value <= 0.0)
     return((Quantum) 0);
@@ -607,7 +586,7 @@ static inline Quantum ScaleLongLongToQuantum(const MagickSizeType value)
   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);