From 8c48d69f06ddb3cb6c807a1e7db62dddb9778ded Mon Sep 17 00:00:00 2001 From: Mike Kaganski Date: Sat, 4 Aug 2018 10:37:17 +0300 Subject: Use more basegfx deg<->rad functions, instead of direct formulas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also make the functions constexpr. Due to slight changes in floating-point arithmetics (90.0 instead of 180.0, M_PI2 instead of M_PI resp.), results might differ in last digits (usually 17th decimal digit). This has lead to need to tweak char2dump's PieChartTest unit test. Change-Id: I20323dd7dab27e4deb408ea4181e390cc05e7cd3 Reviewed-on: https://gerrit.libreoffice.org/58583 Tested-by: Jenkins Reviewed-by: Tamás Zolnai Reviewed-by: Mike Kaganski --- drawinglayer/source/attribute/lineattribute.cxx | 2 +- drawinglayer/source/primitive2d/polygonprimitive2d.cxx | 2 +- drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx | 2 +- drawinglayer/source/tools/emfphelperdata.cxx | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) (limited to 'drawinglayer') diff --git a/drawinglayer/source/attribute/lineattribute.cxx b/drawinglayer/source/attribute/lineattribute.cxx index 583f1a1adfba..8aee1dab9427 100644 --- a/drawinglayer/source/attribute/lineattribute.cxx +++ b/drawinglayer/source/attribute/lineattribute.cxx @@ -55,7 +55,7 @@ namespace drawinglayer mfWidth(0.0), meLineJoin(basegfx::B2DLineJoin::Round), meLineCap(css::drawing::LineCap_BUTT), - mfMiterMinimumAngle(15.0 * F_PI180) + mfMiterMinimumAngle(basegfx::deg2rad(15.0)) { } diff --git a/drawinglayer/source/primitive2d/polygonprimitive2d.cxx b/drawinglayer/source/primitive2d/polygonprimitive2d.cxx index 28bd5f2fe714..e296f397e01b 100644 --- a/drawinglayer/source/primitive2d/polygonprimitive2d.cxx +++ b/drawinglayer/source/primitive2d/polygonprimitive2d.cxx @@ -253,7 +253,7 @@ namespace drawinglayer fHalfLineWidth, aLineJoin, aLineCap, - 12.5 * F_PI180 /* default fMaxAllowedAngle*/ , + basegfx::deg2rad(12.5) /* default fMaxAllowedAngle*/ , 0.4 /* default fMaxPartOfEdge*/ , fMiterMinimumAngle)); } diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx index 80db8e37c861..87c688d64082 100644 --- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx @@ -466,7 +466,7 @@ namespace drawinglayer { eJoin = SvtGraphicStroke::joinMiter; // ATM 15 degrees is assumed - fMiterLength /= rtl::math::sin(M_PI * (15.0 / 360.0)); + fMiterLength /= rtl::math::sin(basegfx::deg2rad(15.0)); break; } case basegfx::B2DLineJoin::Round : diff --git a/drawinglayer/source/tools/emfphelperdata.cxx b/drawinglayer/source/tools/emfphelperdata.cxx index 79b48c8bdf9b..ebbcc2f3f5a7 100644 --- a/drawinglayer/source/tools/emfphelperdata.cxx +++ b/drawinglayer/source/tools/emfphelperdata.cxx @@ -966,8 +966,8 @@ namespace emfplushelper float dx, dy, dw, dh; ReadRectangle(rMS, dx, dy, dw, dh, bool(flags & 0x4000)); SAL_INFO("drawinglayer", "EMF+\t RectData: " << dx << "," << dy << " " << dw << "x" << dh); - startAngle = 2 * M_PI*startAngle / 360; - sweepAngle = 2 * M_PI*sweepAngle / 360; + startAngle = basegfx::deg2rad(startAngle); + sweepAngle = basegfx::deg2rad(sweepAngle); ::basegfx::B2DPoint mappedCenter(Map(dx + dw / 2, dy + dh / 2)); ::basegfx::B2DSize mappedSize(MapSize(dw / 2, dh / 2)); float endAngle = startAngle + sweepAngle; @@ -991,7 +991,7 @@ namespace emfplushelper } SAL_INFO("drawinglayer", "EMF+\t adjusted angles: start " << - (360.0*startAngle / M_PI) << ", end: " << (360.0*endAngle / M_PI) << + basegfx::rad2deg(startAngle) << ", end: " << basegfx::rad2deg(endAngle) << " startAngle: " << startAngle << " sweepAngle: " << sweepAngle); ::basegfx::B2DPolygon polygon = basegfx::utils::createPolygonFromEllipseSegment( @@ -1619,7 +1619,7 @@ namespace emfplushelper ", post multiply: " << (flags & 0x2000)); // Skipping flags & 0x2000 // For rotation transformation there is no difference between post and pre multiply - maWorldTransform.rotate(eAngle * F_PI180); + maWorldTransform.rotate(basegfx::deg2rad(eAngle)); mappingChanged(); SAL_INFO("drawinglayer", -- cgit