const double gamma)
{
#define LevelImageTag "Level/Image"
-#define LevelQuantum(x) (KlampToQuantum((MagickRealType) QuantumRange* \
+#define LevelQuantum(x) (ClampToQuantum((MagickRealType) QuantumRange* \
pow(scale*((double) (x)-black_point),1.0/gamma)))
CacheView
#if defined(MAGICKCORE_FFTW_DELEGATE)
+static inline Quantum FourierClampToQuantum(const MagickRealType value)
+{
+#if defined(MAGICKCORE_HDRI_SUPPORT)
+ return((Quantum) value);
+#else
+ if (value <= 0.0)
+ return((Quantum) 0);
+ if (value >= (MagickRealType) QuantumRange)
+ return((Quantum) QuantumRange);
+ return((Quantum) (value+0.5));
+#endif
+}
+
static MagickBooleanType RollFourier(const unsigned long width,
const unsigned long height,const long x_offset,const long y_offset,
double *fourier)
case RedChannel:
default:
{
- q->red=ClampToQuantum(QuantumRange*magnitude_source[i]);
+ q->red=FourierClampToQuantum(QuantumRange*magnitude_source[i]);
break;
}
case GreenChannel:
{
- q->green=ClampToQuantum(QuantumRange*magnitude_source[i]);
+ q->green=FourierClampToQuantum(QuantumRange*magnitude_source[i]);
break;
}
case BlueChannel:
{
- q->blue=ClampToQuantum(QuantumRange*magnitude_source[i]);
+ q->blue=FourierClampToQuantum(QuantumRange*magnitude_source[i]);
break;
}
case OpacityChannel:
{
- q->opacity=ClampToQuantum(QuantumRange*magnitude_source[i]);
+ q->opacity=FourierClampToQuantum(QuantumRange*magnitude_source[i]);
break;
}
case IndexChannel:
{
- indexes[x]=ClampToQuantum(QuantumRange*magnitude_source[i]);
+ indexes[x]=FourierClampToQuantum(QuantumRange*magnitude_source[i]);
break;
}
case GrayChannels:
{
- q->red=ClampToQuantum(QuantumRange*magnitude_source[i]);
+ q->red=FourierClampToQuantum(QuantumRange*magnitude_source[i]);
q->green=q->red;
q->blue=q->red;
break;
case RedChannel:
default:
{
- q->red=ClampToQuantum(QuantumRange*phase_source[i]);
+ q->red=FourierClampToQuantum(QuantumRange*phase_source[i]);
break;
}
case GreenChannel:
{
- q->green=ClampToQuantum(QuantumRange*phase_source[i]);
+ q->green=FourierClampToQuantum(QuantumRange*phase_source[i]);
break;
}
case BlueChannel:
{
- q->blue=ClampToQuantum(QuantumRange*phase_source[i]);
+ q->blue=FourierClampToQuantum(QuantumRange*phase_source[i]);
break;
}
case OpacityChannel:
{
- q->opacity=ClampToQuantum(QuantumRange*phase_source[i]);
+ q->opacity=FourierClampToQuantum(QuantumRange*phase_source[i]);
break;
}
case IndexChannel:
{
- indexes[x]=ClampToQuantum(QuantumRange*phase_source[i]);
+ indexes[x]=FourierClampToQuantum(QuantumRange*phase_source[i]);
break;
}
case GrayChannels:
{
- q->red=ClampToQuantum(QuantumRange*phase_source[i]);
+ q->red=FourierClampToQuantum(QuantumRange*phase_source[i]);
q->green=q->red;
q->blue=q->red;
break;
case RedChannel:
default:
{
- q->red=ClampToQuantum(QuantumRange*source[i]);
+ q->red=FourierClampToQuantum(QuantumRange*source[i]);
break;
}
case GreenChannel:
{
- q->green=ClampToQuantum(QuantumRange*source[i]);
+ q->green=FourierClampToQuantum(QuantumRange*source[i]);
break;
}
case BlueChannel:
{
- q->blue=ClampToQuantum(QuantumRange*source[i]);
+ q->blue=FourierClampToQuantum(QuantumRange*source[i]);
break;
}
case OpacityChannel:
{
- q->opacity=ClampToQuantum(QuantumRange*source[i]);
+ q->opacity=FourierClampToQuantum(QuantumRange*source[i]);
break;
}
case IndexChannel:
{
- indexes[x]=ClampToQuantum(QuantumRange*source[i]);
+ indexes[x]=FourierClampToQuantum(QuantumRange*source[i]);
break;
}
case GrayChannels:
{
- q->red=ClampToQuantum(QuantumRange*source[i]);
+ q->red=FourierClampToQuantum(QuantumRange*source[i]);
q->green=q->red;
q->blue=q->red;
break;
assert(blue != (Quantum *) NULL);
if (saturation == 0.0)
{
- *red=KlampToQuantum((MagickRealType) QuantumRange*brightness);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*brightness);
*green=(*red);
*blue=(*red);
return;
case 0:
default:
{
- *red=KlampToQuantum((MagickRealType) QuantumRange*brightness);
- *green=KlampToQuantum((MagickRealType) QuantumRange*t);
- *blue=KlampToQuantum((MagickRealType) QuantumRange*p);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*brightness);
+ *green=ClampToQuantum((MagickRealType) QuantumRange*t);
+ *blue=ClampToQuantum((MagickRealType) QuantumRange*p);
break;
}
case 1:
{
- *red=KlampToQuantum((MagickRealType) QuantumRange*q);
- *green=KlampToQuantum((MagickRealType) QuantumRange*brightness);
- *blue=KlampToQuantum((MagickRealType) QuantumRange*p);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*q);
+ *green=ClampToQuantum((MagickRealType) QuantumRange*brightness);
+ *blue=ClampToQuantum((MagickRealType) QuantumRange*p);
break;
}
case 2:
{
- *red=KlampToQuantum((MagickRealType) QuantumRange*p);
- *green=KlampToQuantum((MagickRealType) QuantumRange*brightness);
- *blue=KlampToQuantum((MagickRealType) QuantumRange*t);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*p);
+ *green=ClampToQuantum((MagickRealType) QuantumRange*brightness);
+ *blue=ClampToQuantum((MagickRealType) QuantumRange*t);
break;
}
case 3:
{
- *red=KlampToQuantum((MagickRealType) QuantumRange*p);
- *green=KlampToQuantum((MagickRealType) QuantumRange*q);
- *blue=KlampToQuantum((MagickRealType) QuantumRange*brightness);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*p);
+ *green=ClampToQuantum((MagickRealType) QuantumRange*q);
+ *blue=ClampToQuantum((MagickRealType) QuantumRange*brightness);
break;
}
case 4:
{
- *red=KlampToQuantum((MagickRealType) QuantumRange*t);
- *green=KlampToQuantum((MagickRealType) QuantumRange*p);
- *blue=KlampToQuantum((MagickRealType) QuantumRange*brightness);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*t);
+ *green=ClampToQuantum((MagickRealType) QuantumRange*p);
+ *blue=ClampToQuantum((MagickRealType) QuantumRange*brightness);
break;
}
case 5:
{
- *red=KlampToQuantum((MagickRealType) QuantumRange*brightness);
- *green=KlampToQuantum((MagickRealType) QuantumRange*p);
- *blue=KlampToQuantum((MagickRealType) QuantumRange*q);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*brightness);
+ *green=ClampToQuantum((MagickRealType) QuantumRange*p);
+ *blue=ClampToQuantum((MagickRealType) QuantumRange*q);
break;
}
}
assert(blue != (Quantum *) NULL);
if (saturation == 0)
{
- *red=KlampToQuantum((MagickRealType) QuantumRange*lightness);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*lightness);
*green=(*red);
*blue=(*red);
return;
r=ConvertHueToRGB(m1,m2,hue+1.0/3.0);
g=ConvertHueToRGB(m1,m2,hue);
b=ConvertHueToRGB(m1,m2,hue-1.0/3.0);
- *red=KlampToQuantum((MagickRealType) QuantumRange*r);
- *green=KlampToQuantum((MagickRealType) QuantumRange*g);
- *blue=KlampToQuantum((MagickRealType) QuantumRange*b);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*r);
+ *green=ClampToQuantum((MagickRealType) QuantumRange*g);
+ *blue=ClampToQuantum((MagickRealType) QuantumRange*b);
}
\f
/*
v=1.0-blackness;
if (hue == 0.0)
{
- *red=KlampToQuantum((MagickRealType) QuantumRange*v);
- *green=KlampToQuantum((MagickRealType) QuantumRange*v);
- *blue=KlampToQuantum((MagickRealType) QuantumRange*v);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*v);
+ *green=ClampToQuantum((MagickRealType) QuantumRange*v);
+ *blue=ClampToQuantum((MagickRealType) QuantumRange*v);
return;
}
i=(long) floor(6.0*hue);
case 4: r=n; g=whiteness; b=v; break;
case 5: r=v; g=whiteness; b=n; break;
}
- *red=KlampToQuantum((MagickRealType) QuantumRange*r);
- *green=KlampToQuantum((MagickRealType) QuantumRange*g);
- *blue=KlampToQuantum((MagickRealType) QuantumRange*b);
+ *red=ClampToQuantum((MagickRealType) QuantumRange*r);
+ *green=ClampToQuantum((MagickRealType) QuantumRange*g);
+ *blue=ClampToQuantum((MagickRealType) QuantumRange*b);
}
\f
/*
quantum_state->mask=mask;
}
-static inline Quantum KlampToQuantum(const MagickRealType value)
-{
- if (value <= 0.0)
- return((Quantum) 0);
- if (value >= (MagickRealType) QuantumRange)
- return((Quantum) QuantumRange);
-#if defined(MAGICKCORE_HDRI_SUPPORT)
- return((Quantum) value);
-#else
- return((Quantum) (value+0.5));
-#endif
-}
-
static inline unsigned char *PopCharPixel(const unsigned char pixel,
unsigned char *pixels)
{
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((Quantum) (((MagickRealType) QuantumRange*quantum)/range+0.5));
#else
- return((Quantum) (((MagickRealType) QuantumRange*quantum)/range));
+ return((Quantum) (((MagickRealType) QuantumRange*quantum)/range+0.0));
#endif
}
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((QuantumAny) (((MagickRealType) range*quantum)/QuantumRange+0.5));
#else
- return((QuantumAny) (((MagickRealType) range*quantum)/QuantumRange));
+ return((QuantumAny) (((MagickRealType) range*quantum)/QuantumRange+0.5));
#endif
}
#else
if (quantum <= 0.0)
return(0);
- if ((257.0*quantum) >= 65535.0)
+ if ((256.0*quantum) >= 65535.0)
return(65535);
- return((unsigned short) (257.0*quantum+0.5));
+ return((unsigned short) (256.0*quantum+0.5));
#endif
}
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((Quantum) ((value+128U)/257U));
#else
- return((Quantum) (value/257.0));
+ return((Quantum) (value/256.0+0.5));
#endif
}
#elif (MAGICKCORE_QUANTUM_DEPTH == 16)
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((Quantum) (257U*value));
#else
- return((Quantum) (257.0*value));
+ return((Quantum) (256.0*value+0.5));
#endif
}
return((Quantum) ((value+MagickULLConstant(32768))/
MagickULLConstant(65537)));
#else
- return((Quantum) (value/65537.0));
+ return((Quantum) (value/65536.0+0.5));
#endif
}
#else
if (quantum <= 0.0)
return(0UL);
- if ((65537.0*quantum) >= 4294967295.0)
+ if ((65536.0*quantum) >= 4294967295.0)
return(4294967295UL);
- return((unsigned long) (65537.0*quantum+0.5));
+ return((unsigned long) (65536.0*quantum+0.5));
#endif
}
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((Quantum) (16843009UL*value));
#else
- return((Quantum) (16843009.0*value));
+ return((Quantum) (16843008.0*value+0.5));
#endif
}
return(QuantumRange);
return((Quantum) (65537.0*value));
#else
- if ((value+0.5) >= MaxMap)
+ if (value >= MaxMap)
return(QuantumRange);
- return((Quantum) (65537UL*value));
+ return((Quantum) (65536UL*value+0.5));
#endif
}
return((unsigned long) ((quantum+MagickULLConstant(32768))/
MagickULLConstant(65537)));
#else
- return((unsigned long) (quantum/65537.0)+0.5);
+ return((unsigned long) (quantum/65536.0+0.5));
#endif
}
#else
if (quantum <= 0.0)
return(0);
- if ((quantum/65537.0) >= 65535.0)
+ if ((quantum/65536.0) >= 65535.0)
return(65535);
- return((unsigned short) (quantum/65537.0+0.5));
+ return((unsigned short) (quantum/65536.0+0.5));
#endif
}
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((Quantum) (65537UL*value));
#else
- return((Quantum) (65537.0*value));
+ return((Quantum) (65536.0*value+0.5));
#endif
}
#elif (MAGICKCORE_QUANTUM_DEPTH == 64)
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((Quantum) (MagickULLConstant(71777214294589695)*value));
#else
- return((Quantum) (71777214294589695.0*value));
+ return((Quantum) (71777214294589694.0*value+0.5));
#endif
}
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((Quantum) (4294967295UL*value));
#else
- return((Quantum) (4294967295.0*value));
+ return((Quantum) (4294967294.0*value+0.5));
#endif
}
return(QuantumRange);
return((Quantum) (281479271612415.0*value));
#else
- if ((value+0.5) >= MaxMap)
+ if (value >= MaxMap)
return(QuantumRange);
- return((Quantum) (MagickULLConstant(281479271612415)*value));
+ return((Quantum) (MagickULLConstant(281479271612414)*value+0.5));
#endif
}
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((unsigned long) ((quantum+2147483648.0)/4294967297.0));
#else
- return((unsigned long) (quantum/4294967297.0+0.5));
+ return((unsigned long) (quantum/4294967296.0+0.5));
#endif
}
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((unsigned long) ((quantum+2147450879.0)/281479271612415.0));
#else
- return((unsigned long) (quantum/281479271612415.0)+0.5);
+ return((unsigned long) (quantum/281479271612414.0)+0.5);
#endif
}
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((unsigned short) ((quantum+2147450879.0)/281479271612415.0));
#else
- return((unsigned short) (quantum/281479271612415.0+0.5));
+ return((unsigned short) (quantum/281479271612414.0+0.5));
#endif
}
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((Quantum) (MagickULLConstant(281479271612415)*value));
#else
- return((Quantum) (281479271612415.0*value));
+ return((Quantum) (281479271612414.0*value));
#endif
}
#endif
static inline Quantum ClampToQuantum(const MagickRealType value)
{
-#if defined(MAGICKCORE_HDRI_SUPPORT)
- return((Quantum) value);
-#else
if (value <= 0.0)
return((Quantum) 0);
if (value >= (MagickRealType) QuantumRange)
return((Quantum) QuantumRange);
+#if defined(MAGICKCORE_HDRI_SUPPORT)
+ return((Quantum) value);
+#else
return((Quantum) (value+0.5));
#endif
}
#else
if (quantum <= 0.0)
return(0);
- if ((quantum/257.0) >= 255.0)
+ if ((quantum/256.0) >= 255.0)
return(255);
- return((unsigned char) (quantum/257.0+0.5));
+ return((unsigned char) (quantum/256.0+0.5));
#endif
}
#elif (MAGICKCORE_QUANTUM_DEPTH == 32)
#else
if (quantum <= 0.0)
return(0);
- if ((quantum/16843009.0) >= 255.0)
+ if ((quantum/16843008.0) >= 255.0)
return(255);
- return((unsigned char) (quantum/16843009.0+0.5));
+ return((unsigned char) (quantum/16843008.0+0.5));
#endif
}
#elif (MAGICKCORE_QUANTUM_DEPTH == 64)
#if !defined(MAGICKCORE_HDRI_SUPPORT)
return((unsigned char) ((quantum+2155839615.0)/71777214294589695.0));
#else
- return((unsigned char) (quantum/71777214294589695.0+0.5));
+ return((unsigned char) (quantum/71777214294589694.0+0.5));
#endif
}
#endif