From 8b8290b8cfb91f38b79450b2e660331d50787385 Mon Sep 17 00:00:00 2001 From: cristy Date: Mon, 26 May 2014 12:55:32 +0000 Subject: [PATCH] --- MagickCore/quantum-private.h | 78 ++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 4 deletions(-) diff --git a/MagickCore/quantum-private.h b/MagickCore/quantum-private.h index bc0b7d5ca..f969e23fc 100644 --- a/MagickCore/quantum-private.h +++ b/MagickCore/quantum-private.h @@ -299,7 +299,17 @@ static inline Quantum ScaleLongToQuantum(const unsigned int value) #endif } -static inline Quantum ScaleMapToQuantum(const double value) +static inline Quantum ScaleLongLongToQuantum(const MagickSizeType value) +{ +#if !defined(MAGICKCORE_HDRI_SUPPORT) + return((Quantum) ((value+MagickULLConstant(551911719039))/ + MagickULLConstant(1103823438079))); +#else + return((Quantum) (value/1103823438079.0)); +#endif +} + +static inline Quantum ScaleMapToQuantum(const MagickRealType value) { if (value <= 0.0) return((Quantum) 0); @@ -325,6 +335,19 @@ static inline unsigned int ScaleQuantumToLong(const Quantum quantum) #endif } +static inline MagickSizeType ScaleQuantumToLongLong(const Quantum quantum) +{ +#if !defined(MAGICKCORE_HDRI_SUPPORT) + return((MagickSizeType) (MagickULLConstant(551911719039)*quantum)); +#else + if (quantum <= 0.0) + return(0UL); + if ((551911719039.0*quantum) >= 18446744073709551615.0) + return(MagickULLConstant(18446744073709551615)); + return((MagickSizeType) (1103823438079.0*quantum+0.5)); +#endif +} + static inline unsigned int ScaleQuantumToMap(const Quantum quantum) { if (quantum >= (Quantum) MaxMap) @@ -379,7 +402,17 @@ static inline Quantum ScaleLongToQuantum(const unsigned int value) #endif } -static inline Quantum ScaleMapToQuantum(const double value) +static inline Quantum ScaleLongLongToQuantum(const MagickSizeType value) +{ +#if !defined(MAGICKCORE_HDRI_SUPPORT) + return((Quantum) ((value+MagickULLConstant(8421376))/ + MagickULLConstant(16842752))); +#else + return((Quantum) (value/16842752.0)); +#endif +} + +static inline Quantum ScaleMapToQuantum(const MagickRealType value) { if (value <= 0.0) return((Quantum) 0); @@ -405,6 +438,19 @@ static inline unsigned int ScaleQuantumToLong(const Quantum quantum) #endif } +static inline MagickSizeType ScaleQuantumToLongLong(const Quantum quantum) +{ +#if !defined(MAGICKCORE_HDRI_SUPPORT) + return((MagickSizeType) (MagickULLConstant(16842752)*quantum)); +#else + if (quantum <= 0.0) + return(0UL); + if ((65537.0*quantum) >= 18446744073709551615.0) + return(MagickULLConstant(18446744073709551615)); + return((MagickSizeType) (16842752.0*quantum+0.5)); +#endif +} + static inline unsigned int ScaleQuantumToMap(const Quantum quantum) { if (quantum >= (Quantum) MaxMap) @@ -450,7 +496,12 @@ static inline Quantum ScaleLongToQuantum(const unsigned int value) return((Quantum) value); } -static inline Quantum ScaleMapToQuantum(const double value) +static inline Quantum ScaleLongLongToQuantum(const MagickSizeType value) +{ + return((Quantum) value); +} + +static inline Quantum ScaleMapToQuantum(const MagickRealType value) { if (value <= 0.0) return((Quantum) 0); @@ -476,6 +527,15 @@ static inline unsigned int ScaleQuantumToLong(const Quantum quantum) #endif } +static inline MagickSizeType ScaleQuantumToLongLong(const Quantum quantum) +{ +#if !defined(MAGICKCORE_HDRI_SUPPORT) + return((MagickSizeType) quantum); +#else + return((MagickSizeType) (quantum+0.5)); +#endif +} + static inline unsigned int ScaleQuantumToMap(const Quantum quantum) { if (quantum < 0.0) @@ -523,7 +583,12 @@ static inline Quantum ScaleLongToQuantum(const unsigned int value) return((Quantum) (4294967297.0*value)); } -static inline Quantum ScaleMapToQuantum(const double value) +static inline Quantum ScaleLongLongToQuantum(const MagickSizeType value) +{ + return((Quantum) (18446744073709551615.0*value)); +} + +static inline Quantum ScaleMapToQuantum(const MagickRealType value) { if (value <= 0.0) return((Quantum) 0); @@ -537,6 +602,11 @@ static inline unsigned int ScaleQuantumToLong(const Quantum quantum) return((unsigned int) (quantum/4294967297.0+0.5)); } +static inline MagickSizeType ScaleQuantumToLongLong(const Quantum quantum) +{ + return((MagickSizeType) (quantum/18446744073709551615.0+0.5)); +} + static inline unsigned int ScaleQuantumToMap(const Quantum quantum) { if (quantum <= 0.0) -- 2.40.0