oox/source/drawingml/color.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
New commits: commit dda9d7d0de386f355bfcf16a83746257de1e5990 Author: Caolán McNamara <[email protected]> Date: Mon May 27 17:08:42 2013 +0200 x86 register vs memory accuracy double pita with x86 gcc-4.1.2-54.el5 the sd import test fails while x86-64 passes. Tracked it down eventually to this double equality test failing on x86. Apparently excess precision in registers compared with memory. Change-Id: I61b43b2f0e9c9aded570448a1c5a7c9dbad8986e (cherry picked from commit 34c2e8845804921c027ed66884fdf7c31f75fd87) diff --git a/oox/source/drawingml/color.cxx b/oox/source/drawingml/color.cxx index 50a7e64..52d5465 100644 --- a/oox/source/drawingml/color.cxx +++ b/oox/source/drawingml/color.cxx @@ -624,12 +624,14 @@ void Color::toHsl() const double fMax = ::std::max( ::std::max( fR, fG ), fB ); double fD = fMax - fMin; + using ::rtl::math::approxEqual; + // hue: 0deg = red, 120deg = green, 240deg = blue if( fD == 0.0 ) // black/gray/white mnC1 = 0; - else if( fMax == fR ) // magenta...red...yellow + else if( approxEqual(fMax, fR, 64) ) // magenta...red...yellow mnC1 = static_cast< sal_Int32 >( ((fG - fB) / fD * 60.0 + 360.0) * PER_DEGREE + 0.5 ) % MAX_DEGREE; - else if( fMax == fG ) // yellow...green...cyan + else if( approxEqual(fMax, fG, 64) ) // yellow...green...cyan mnC1 = static_cast< sal_Int32 >( ((fB - fR) / fD * 60.0 + 120.0) * PER_DEGREE + 0.5 ); else // cyan...blue...magenta mnC1 = static_cast< sal_Int32 >( ((fR - fG) / fD * 60.0 + 240.0) * PER_DEGREE + 0.5 );
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
