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 --- oox/source/drawingml/chart/converterbase.cxx | 2 +- oox/source/drawingml/diagram/diagramlayoutatoms.cxx | 4 ++-- oox/source/drawingml/effectproperties.cxx | 2 +- oox/source/drawingml/shape.cxx | 4 ++-- oox/source/export/drawingml.cxx | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) (limited to 'oox') diff --git a/oox/source/drawingml/chart/converterbase.cxx b/oox/source/drawingml/chart/converterbase.cxx index a0535671dbc6..3d0b8c413bab 100644 --- a/oox/source/drawingml/chart/converterbase.cxx +++ b/oox/source/drawingml/chart/converterbase.cxx @@ -398,7 +398,7 @@ void LayoutConverter::convertFromModel( const Reference< XShape >& rxShape, doub // the call to XShape.getSize() may recalc the chart view awt::Size aShapeSize = rxShape->getSize(); // rotated shapes need special handling... - double fSin = fabs( sin( fRotationAngle * F_PI180 ) ); + double fSin = fabs( sin( basegfx::deg2rad(fRotationAngle) ) ); // add part of height to X direction, if title is rotated down if( fRotationAngle > 180.0 ) aShapePos.X += static_cast< sal_Int32 >( fSin * aShapeSize.Height + 0.5 ); diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx index d3c006dc447a..ed0678340e4b 100644 --- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx +++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx @@ -322,8 +322,8 @@ void AlgAtom::layoutShape( const ShapePtr& rShape, { const double fAngle = static_cast(idx)*nSpanAngle/nShapes + nStartAngle; const awt::Point aCurrPos( - aCenter.Width + nRadius*sin(fAngle*F_PI180) - aChildSize.Width/2, - aCenter.Height - nRadius*cos(fAngle*F_PI180) - aChildSize.Height/2); + aCenter.Width + nRadius*sin(basegfx::deg2rad(fAngle)) - aChildSize.Width/2, + aCenter.Height - nRadius*cos(basegfx::deg2rad(fAngle)) - aChildSize.Height/2); aCurrShape->setPosition(aCurrPos); aCurrShape->setSize(aChildSize); diff --git a/oox/source/drawingml/effectproperties.cxx b/oox/source/drawingml/effectproperties.cxx index 49f1d915a11c..ff9ded567784 100644 --- a/oox/source/drawingml/effectproperties.cxx +++ b/oox/source/drawingml/effectproperties.cxx @@ -58,7 +58,7 @@ void EffectProperties::pushToPropMap( PropertyMap& rPropMap, attribIt->second >>= nAttrDist; // Negative X or Y dist indicates left or up, respectively - double nAngle = ( static_cast(nAttrDir) / PER_DEGREE ) * F_PI180; + double nAngle = basegfx::deg2rad(static_cast(nAttrDir) / PER_DEGREE); sal_Int32 nDist = convertEmuToHmm( nAttrDist ); sal_Int32 nXDist = cos(nAngle) * nDist; sal_Int32 nYDist = sin(nAngle) * nDist; diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index 70028b34fe87..5b75b94cdfba 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -653,7 +653,7 @@ Reference< XShape > const & Shape::createAndInsert( { // rotate diagram's shape around object's center before sizing aTransformation.translate(-0.5, -0.5); - aTransformation.rotate(F_PI180 * (mnDiagramRotation / 60000.0)); + aTransformation.rotate(basegfx::deg2rad(mnDiagramRotation / 60000.0)); aTransformation.translate(0.5, 0.5); } @@ -702,7 +702,7 @@ Reference< XShape > const & Shape::createAndInsert( } } // rotate around object's center - aTransformation.rotate( F_PI180 * ( static_cast(mnRotation) / 60000.0 ) ); + aTransformation.rotate(basegfx::deg2rad(static_cast(mnRotation) / 60000.0)); } // move object back from center diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index b5d681dd1a13..e0fc6dbae783 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -3298,7 +3298,7 @@ sal_Int32 lcl_CalculateDist(const double dX, const double dY) sal_Int32 lcl_CalculateDir(const double dX, const double dY) { - return (static_cast< sal_Int32 >(atan2(dY,dX) * 180 * 60000 / M_PI) + 21600000) % 21600000; + return (static_cast< sal_Int32 >(basegfx::rad2deg(atan2(dY,dX)) * 60000) + 21600000) % 21600000; } void DrawingML::WriteShapeEffects( const Reference< XPropertySet >& rXPropSet ) -- cgit