From bc0ab08634f59e1a1814e575fe6ad5e50bf1aee1 Mon Sep 17 00:00:00 2001 From: Mike Kaganski Date: Fri, 19 Nov 2021 00:22:31 +0300 Subject: Drop F_PI1800/F_PI18000, and unify deg2rad/rad2deg conversions Change-Id: Ib89b00c3dc8cd440e8a88906eea133becd1cef64 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125509 Reviewed-by: Mike Kaganski Tested-by: Jenkins --- canvas/source/cairo/cairo_canvashelper_text.cxx | 2 +- canvas/source/vcl/canvashelper.cxx | 2 +- canvas/source/vcl/canvashelper_texturefill.cxx | 2 +- canvas/source/vcl/impltools.cxx | 2 +- chart2/source/view/main/ShapeFactory.cxx | 4 ++-- chart2/source/view/main/VTitle.cxx | 2 +- cppcanvas/source/mtfrenderer/implrenderer.cxx | 6 +++--- .../source/primitive2d/textlayoutdevice.cxx | 2 +- .../source/processor2d/vclmetafileprocessor2d.cxx | 4 ++-- .../source/processor2d/vclpixelprocessor2d.cxx | 6 +++--- drawinglayer/source/tools/wmfemfhelper.cxx | 8 ++++---- editeng/source/editeng/impedit3.cxx | 4 ++-- editeng/source/outliner/outliner.cxx | 2 +- filter/source/msfilter/eschesdo.cxx | 10 ++++----- filter/source/msfilter/msdffimp.cxx | 6 +++--- filter/source/msfilter/svdfppt.cxx | 3 +-- include/basegfx/numeric/ftools.hxx | 16 ++++----------- include/svx/svdtrans.hxx | 13 ------------ include/tools/degree.hxx | 7 +++++-- libreofficekit/source/gtk/lokdocview.cxx | 4 ++-- oox/source/export/drawingml.cxx | 4 ++-- sc/qa/unit/ucalc.cxx | 4 ++-- sc/source/core/data/column2.cxx | 4 ++-- sc/source/core/data/table2.cxx | 2 +- sc/source/filter/excel/xichart.cxx | 2 +- sd/source/filter/eppt/epptso.cxx | 12 +++++------ svx/source/customshapes/EnhancedCustomShape3d.cxx | 2 +- svx/source/sdr/contact/viewcontactofe3dlathe.cxx | 2 +- svx/source/sdr/contact/viewcontactofgraphic.cxx | 2 +- .../sdr/contact/viewcontactofsdrcaptionobj.cxx | 2 +- svx/source/sdr/contact/viewcontactofsdrcircobj.cxx | 10 ++++----- .../sdr/contact/viewcontactofsdrobjcustomshape.cxx | 4 ++-- svx/source/sdr/contact/viewcontactofsdrole2obj.cxx | 2 +- svx/source/sdr/contact/viewcontactofsdrpathobj.cxx | 2 +- svx/source/sdr/contact/viewcontactofsdrrectobj.cxx | 2 +- svx/source/sdr/primitive2d/sdrattributecreator.cxx | 6 +++--- svx/source/svdraw/svddrgmt.cxx | 8 ++++---- svx/source/svdraw/svdedtv1.cxx | 14 ++++++------- svx/source/svdraw/svdglev.cxx | 4 ++-- svx/source/svdraw/svdhdl.cxx | 2 +- svx/source/svdraw/svdoashp.cxx | 22 ++++++++++---------- svx/source/svdraw/svdobj.cxx | 8 ++++---- svx/source/svdraw/svdocirc.cxx | 14 ++++++------- svx/source/svdraw/svdomeas.cxx | 4 ++-- svx/source/svdraw/svdopath.cxx | 24 +++++++++++----------- svx/source/svdraw/svdotext.cxx | 6 +++--- svx/source/svdraw/svdotextdecomposition.cxx | 2 +- svx/source/svdraw/svdotextpathdecomposition.cxx | 2 +- svx/source/svdraw/svdpoev.cxx | 4 ++-- svx/source/svdraw/svdtrans.cxx | 9 ++++---- svx/source/table/viewcontactoftableobj.cxx | 4 ++-- svx/source/unodraw/unoshape.cxx | 6 +++--- svx/source/xoutdev/xtabgrdt.cxx | 2 +- svx/source/xoutdev/xtabhtch.cxx | 2 +- sw/source/filter/ww8/docxsdrexport.cxx | 19 ++++++++--------- tools/source/generic/point.cxx | 2 +- tools/source/generic/poly.cxx | 2 +- tools/source/generic/poly2.cxx | 2 +- vcl/quartz/ctfonts.cxx | 9 ++------ vcl/skia/gdiimpl.cxx | 2 +- vcl/source/bitmap/bitmappaint.cxx | 4 ++-- vcl/source/gdi/gdimtf.cxx | 2 +- vcl/source/gdi/gradient.cxx | 4 ++-- vcl/source/gdi/pdfwriter_impl.cxx | 2 +- vcl/source/outdev/hatch.cxx | 4 ++-- vcl/source/outdev/textline.cxx | 4 ++-- vcl/unx/generic/gdi/cairotextrender.cxx | 2 +- vcl/unx/generic/glyphs/freetype_glyphcache.cxx | 2 +- xmloff/source/text/XMLTextFrameContext.cxx | 2 +- xmloff/source/text/txtparae.cxx | 2 +- 70 files changed, 170 insertions(+), 198 deletions(-) diff --git a/canvas/source/cairo/cairo_canvashelper_text.cxx b/canvas/source/cairo/cairo_canvashelper_text.cxx index c5f387e27c60..5f78bb71a225 100644 --- a/canvas/source/cairo/cairo_canvashelper_text.cxx +++ b/canvas/source/cairo/cairo_canvashelper_text.cxx @@ -99,7 +99,7 @@ namespace cairocanvas io_rVCLFont.SetFontHeight( ::basegfx::fround(nFontHeight * aScale.getY()) ); } - io_rVCLFont.SetOrientation( Degree10(static_cast< sal_Int16 >( ::basegfx::fround(-fmod(nRotate, 2*M_PI)*(1800.0/M_PI)) )) ); + io_rVCLFont.SetOrientation( Degree10( ::basegfx::fround(-basegfx::rad2deg<10>(fmod(nRotate, 2*M_PI))) ) ); // TODO(F2): Missing functionality in VCL: shearing o_rPoint.setX( ::basegfx::fround(aTranslate.getX()) ); diff --git a/canvas/source/vcl/canvashelper.cxx b/canvas/source/vcl/canvashelper.cxx index 1a2f7209562f..918a8f5f97fe 100644 --- a/canvas/source/vcl/canvashelper.cxx +++ b/canvas/source/vcl/canvashelper.cxx @@ -792,7 +792,7 @@ namespace vclcanvas // degrees with the orientation reversed: [0,2Pi) -> // (3600,0]. Note that the original angle may have // values outside the [0,2Pi) interval. - const double nAngleInTenthOfDegrees (3600.0 - nRotate * 3600.0 / (2*M_PI)); + const double nAngleInTenthOfDegrees (3600.0 - basegfx::rad2deg<10>(nRotate)); aGrfAttr.SetRotation( Degree10(::basegfx::fround(nAngleInTenthOfDegrees)) ); pGrfObj = std::make_shared( aBmpEx ); diff --git a/canvas/source/vcl/canvashelper_texturefill.cxx b/canvas/source/vcl/canvashelper_texturefill.cxx index 5cbf9ad3bc28..33f4f5c5318c 100644 --- a/canvas/source/vcl/canvashelper_texturefill.cxx +++ b/canvas/source/vcl/canvashelper_texturefill.cxx @@ -798,7 +798,7 @@ namespace vclcanvas // degrees with the orientation reversed: [0,2Pi) -> // (3600,0]. Note that the original angle may have // values outside the [0,2Pi) interval. - const double nAngleInTenthOfDegrees (3600.0 - nRotate * 3600.0 / (2*M_PI)); + const double nAngleInTenthOfDegrees (3600.0 - basegfx::rad2deg<10>(nRotate)); aGrfAttr.SetRotation( Degree10(::basegfx::fround(nAngleInTenthOfDegrees)) ); pGrfObj = std::make_shared( aBmpEx ); diff --git a/canvas/source/vcl/impltools.cxx b/canvas/source/vcl/impltools.cxx index 53faa65ffa71..025b80bd2233 100644 --- a/canvas/source/vcl/impltools.cxx +++ b/canvas/source/vcl/impltools.cxx @@ -126,7 +126,7 @@ namespace vclcanvas::tools io_rVCLFont.SetFontHeight( ::basegfx::fround(nFontHeight * aScale.getY()) ); } - io_rVCLFont.SetOrientation( Degree10( ::basegfx::fround(-fmod(nRotate, 2*M_PI)*(1800.0/M_PI)) ) ); + io_rVCLFont.SetOrientation( Degree10( ::basegfx::fround(-basegfx::rad2deg<10>(fmod(nRotate, 2*M_PI))) ) ); // TODO(F2): Missing functionality in VCL: shearing o_rPoint.setX( ::basegfx::fround(aTranslate.getX()) ); diff --git a/chart2/source/view/main/ShapeFactory.cxx b/chart2/source/view/main/ShapeFactory.cxx index fe9bfe783615..a7011527dfc6 100644 --- a/chart2/source/view/main/ShapeFactory.cxx +++ b/chart2/source/view/main/ShapeFactory.cxx @@ -426,7 +426,7 @@ uno::Reference //Matrix for position basegfx::B3DHomMatrix aHomMatrix; if (nRotateZAngleHundredthDegree != 0) - aHomMatrix.rotate(0.0, 0.0, -nRotateZAngleHundredthDegree / 18000.00 * M_PI); + aHomMatrix.rotate(0.0, 0.0, -basegfx::deg2rad<100>(nRotateZAngleHundredthDegree)); aHomMatrix.translate(rPosition.PositionX, rPosition.PositionY, rPosition.PositionZ - (fDepth / 2.0)); @@ -669,7 +669,7 @@ uno::Reference //Matrix for position basegfx::B3DHomMatrix aHomMatrix; if (nRotateZAngleHundredthDegree != 0) - aHomMatrix.rotate(0.0,0.0,-nRotateZAngleHundredthDegree/18000.00*M_PI); + aHomMatrix.rotate(0.0,0.0,-basegfx::deg2rad<100>(nRotateZAngleHundredthDegree)); //stretch the symmetric objects to given depth aHomMatrix.scale(1.0,1.0,rSize.DirectionZ/rSize.DirectionX); aHomMatrix.translate(rPosition.PositionX, rPosition.PositionY, rPosition.PositionZ); diff --git a/chart2/source/view/main/VTitle.cxx b/chart2/source/view/main/VTitle.cxx index 44c2556ad989..b6ed5866a311 100644 --- a/chart2/source/view/main/VTitle.cxx +++ b/chart2/source/view/main/VTitle.cxx @@ -86,7 +86,7 @@ void VTitle::changePosition( const awt::Point& rPos ) //set position matrix //the matrix needs to be set at the end behind autogrow and such position influencing properties ::basegfx::B2DHomMatrix aM; - aM.rotate( -m_fRotationAngleDegree*M_PI/180.0 );//#i78696#->#i80521# + aM.rotate( basegfx::deg2rad(-m_fRotationAngleDegree) );//#i78696#->#i80521# aM.translate( m_nXPos, m_nYPos); xShapeProp->setPropertyValue( "Transformation", uno::Any( B2DHomMatrixToHomogenMatrix3(aM) ) ); } diff --git a/cppcanvas/source/mtfrenderer/implrenderer.cxx b/cppcanvas/source/mtfrenderer/implrenderer.cxx index 7f367cb9fe40..8aa1d1675fa9 100644 --- a/cppcanvas/source/mtfrenderer/implrenderer.cxx +++ b/cppcanvas/source/mtfrenderer/implrenderer.cxx @@ -764,11 +764,11 @@ namespace cppcanvas::internal // setup state-local text transformation, // if the font be rotated - const short nFontAngle( rFont.GetOrientation() ); - if( nFontAngle != 0 ) + const auto nFontAngle( rFont.GetOrientation() ); + if( nFontAngle ) { // set to unity transform rotated by font angle - const double nAngle( nFontAngle * (M_PI / 1800.0) ); + const double nAngle( toRadians(nFontAngle) ); o_rFontRotation = -nAngle; } else diff --git a/drawinglayer/source/primitive2d/textlayoutdevice.cxx b/drawinglayer/source/primitive2d/textlayoutdevice.cxx index a6e209a577c6..60370e722941 100644 --- a/drawinglayer/source/primitive2d/textlayoutdevice.cxx +++ b/drawinglayer/source/primitive2d/textlayoutdevice.cxx @@ -395,7 +395,7 @@ vcl::Font getVclFontFromFontAttribute(const attribute::FontAttribute& rFontAttri // handle FontRotation (if defined) if (!basegfx::fTools::equalZero(fFontRotation)) { - sal_Int16 aRotate10th(static_cast(fFontRotation * (-1800.0 / M_PI))); + int aRotate10th(-basegfx::rad2deg<10>(fFontRotation)); aRetval.SetOrientation(Degree10(aRotate10th % 3600)); } diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx index 7ea03c9afd0c..87ae848b3ca9 100644 --- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx @@ -272,7 +272,7 @@ void VclMetafileProcessor2D::impConvertFillGradientAttributeToVCLGradient( } o_rVCLGradient.SetAngle( - Degree10(static_cast(rFiGrAtt.getAngle() * (1.0 / F_PI1800)))); + Degree10(static_cast(basegfx::rad2deg<100>(rFiGrAtt.getAngle())))); o_rVCLGradient.SetBorder(static_cast(rFiGrAtt.getBorder() * 100.0)); o_rVCLGradient.SetOfsX(static_cast(rFiGrAtt.getOffsetX() * 100.0)); o_rVCLGradient.SetOfsY(static_cast(rFiGrAtt.getOffsetY() * 100.0)); @@ -1904,7 +1904,7 @@ void VclMetafileProcessor2D::processPolyPolygonHatchPrimitive2D( Hatch(aHatchStyle, Color(maBColorModifierStack.getModifiedColor(rFillHatchAttribute.getColor())), basegfx::fround(rFillHatchAttribute.getDistance()), - Degree10(basegfx::fround(rFillHatchAttribute.getAngle() / F_PI1800)))); + Degree10(basegfx::fround(basegfx::rad2deg<10>(rFillHatchAttribute.getAngle()))))); impEndSvtGraphicFill(pSvtGraphicFill.get()); } diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx index 967b70aa793e..139bb0ba080a 100644 --- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx @@ -852,8 +852,8 @@ void VclPixelProcessor2D::processFillHatchPrimitive2D( const basegfx::B2DVector aDiscreteDistance( maCurrentTransformation * basegfx::B2DVector(rFillHatchAttributes.getDistance(), 0.0)); const sal_uInt32 nDistance(basegfx::fround(aDiscreteDistance.getLength())); - const sal_uInt16 nAngle10( - static_cast(basegfx::fround(rFillHatchAttributes.getAngle() / F_PI1800))); + const sal_uInt32 nAngle10( + basegfx::rad2deg<10>(basegfx::fround(rFillHatchAttributes.getAngle()))); ::Hatch aVCLHatch(eHatchStyle, Color(rFillHatchAttributes.getColor()), nDistance, Degree10(nAngle10)); @@ -1216,7 +1216,7 @@ void VclPixelProcessor2D::processFillGradientPrimitive2D( Gradient aGradient(eGradientStyle, Color(rFillGradient.getStartColor()), Color(rFillGradient.getEndColor())); - aGradient.SetAngle(Degree10(static_cast(rFillGradient.getAngle() / F_PI1800))); + aGradient.SetAngle(Degree10(static_cast(basegfx::rad2deg<10>(rFillGradient.getAngle())))); aGradient.SetBorder(rFillGradient.getBorder() * 100); aGradient.SetOfsX(rFillGradient.getOffsetX() * 100.0); aGradient.SetOfsY(rFillGradient.getOffsetY() * 100.0); diff --git a/drawinglayer/source/tools/wmfemfhelper.cxx b/drawinglayer/source/tools/wmfemfhelper.cxx index f9cfbc60cbd3..22b1d4217413 100644 --- a/drawinglayer/source/tools/wmfemfhelper.cxx +++ b/drawinglayer/source/tools/wmfemfhelper.cxx @@ -737,7 +737,7 @@ namespace wmfemfhelper static_cast(rGradient.GetBorder()) * 0.01, static_cast(rGradient.GetOfsX()) * 0.01, static_cast(rGradient.GetOfsY()) * 0.01, - static_cast(rGradient.GetAngle().get()) * F_PI1800, + toRadians(rGradient.GetAngle()), aStart, aEnd, rGradient.GetSteps()); @@ -772,7 +772,7 @@ namespace wmfemfhelper return drawinglayer::attribute::FillHatchAttribute( aHatchStyle, static_cast(rHatch.GetDistance()), - static_cast(rHatch.GetAngle().get()) * F_PI1800, + toRadians(rHatch.GetAngle()), rHatch.GetColor().getBColor(), 3, // same default as VCL, a minimum of three discrete units (pixels) offset false); @@ -1086,7 +1086,7 @@ namespace wmfemfhelper // add FontRotation (if used) if(rFont.GetOrientation()) { - rTextTransform.rotate(-rFont.GetOrientation().get() * F_PI1800); + rTextTransform.rotate(-toRadians(rFont.GetOrientation())); } } @@ -1249,7 +1249,7 @@ namespace wmfemfhelper if(rFont.GetOrientation()) { - aTextTransform.rotate(-rFont.GetOrientation().get() * F_PI1800); + aTextTransform.rotate(-toRadians(rFont.GetOrientation())); } aTextTransform.translate(rTextStartPosition.X(), rTextStartPosition.Y()); diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 75463945c724..4b2f860846f6 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -107,7 +107,7 @@ struct TabInfo Point Rotate( const Point& rPoint, Degree10 nOrientation, const Point& rOrigin ) { - double nRealOrientation = nOrientation.get() * F_PI1800; + double nRealOrientation = toRadians(nOrientation); double nCos = cos( nRealOrientation ); double nSin = sin( nRealOrientation ); @@ -3108,7 +3108,7 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po double nCos = 0.0, nSin = 0.0; if ( nOrientation ) { - double nRealOrientation = nOrientation.get()*F_PI1800; + double nRealOrientation = toRadians(nOrientation); nCos = cos( nRealOrientation ); nSin = sin( nRealOrientation ); } diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx index d3500c879378..d50bdc9b3895 100644 --- a/editeng/source/outliner/outliner.cxx +++ b/editeng/source/outliner/outliner.cxx @@ -940,7 +940,7 @@ void Outliner::PaintBullet(sal_Int32 nPara, const Point& rStartPos, const Point& { // Both TopLeft and bottom left is not quite correct, // since in EditEngine baseline ... - double nRealOrientation = nOrientation.get() * F_PI1800; + double nRealOrientation = toRadians(nOrientation); double nCos = cos( nRealOrientation ); double nSin = sin( nRealOrientation ); Point aRotatedPos; diff --git a/filter/source/msfilter/eschesdo.cxx b/filter/source/msfilter/eschesdo.cxx index 114e2c9304f9..72b85624f302 100644 --- a/filter/source/msfilter/eschesdo.cxx +++ b/filter/source/msfilter/eschesdo.cxx @@ -89,7 +89,7 @@ void ImplEESdrWriter::ImplFlipBoundingBox( ImplEESdrObject& rObj, EscherProperty while ( nAngle > 9000 ) nAngle = ( 18000 - ( nAngle % 18000 ) ); - double fVal = static_cast(nAngle) * F_PI18000; + double fVal = basegfx::deg2rad<100>(nAngle); double fCos = cos( fVal ); double fSin = sin( fVal ); @@ -368,10 +368,10 @@ sal_uInt32 ImplEESdrWriter::ImplWriteShape( ImplEESdrObject& rObj, nEndAngle = *o3tl::doAccess(rObj.GetUsrAny()); Point aStart, aEnd, aCenter; - aStart.setX( static_cast( cos( nStartAngle * F_PI18000 ) * 100.0 ) ); - aStart.setY( - static_cast( sin( nStartAngle * F_PI18000 ) * 100.0 ) ); - aEnd.setX( static_cast( cos( nEndAngle * F_PI18000 ) * 100.0 ) ); - aEnd.setY( - static_cast( sin( nEndAngle * F_PI18000 ) * 100.0 ) ); + aStart.setX( static_cast( cos( basegfx::deg2rad<100>(nStartAngle) ) * 100.0 ) ); + aStart.setY( - static_cast( sin( basegfx::deg2rad<100>(nStartAngle) ) * 100.0 ) ); + aEnd.setX( static_cast( cos( basegfx::deg2rad<100>(nEndAngle) ) * 100.0 ) ); + aEnd.setY( - static_cast( sin( basegfx::deg2rad<100>(nEndAngle) ) * 100.0 ) ); const tools::Rectangle& rRect = aRect100thmm; aCenter.setX( rRect.Left() + ( rRect.GetWidth() / 2 ) ); aCenter.setY( rRect.Top() + ( rRect.GetHeight() / 2 ) ); diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx index 743f4f7cdbe7..74b7bece8644 100644 --- a/filter/source/msfilter/msdffimp.cxx +++ b/filter/source/msfilter/msdffimp.cxx @@ -4689,7 +4689,7 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r nAngle = 36000_deg100 - nAngle; if ( nSpFlags & ShapeFlag::FlipV ) nAngle = -nAngle; - double a = nAngle.get() * F_PI18000; + double a = toRadians(nAngle); double ss = sin( a ); double cc = cos( a ); Point aP1( aOldBoundRect.TopLeft() ); @@ -4764,7 +4764,7 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r // pay attention to the rotations if ( nObjectRotation ) { - double a = nObjectRotation.get() * F_PI18000; + double a = toRadians(nObjectRotation); Point aCenter( aObjData.aBoundRect.Center() ); double ss = sin(a); double cc = cos(a); @@ -5441,7 +5441,7 @@ SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt, // rotate text with shape? if ( mnFix16Angle ) { - double a = mnFix16Angle.get() * F_PI18000; + double a = toRadians(mnFix16Angle); pTextObj->NbcRotate( rObjData.aBoundRect.Center(), mnFix16Angle, sin( a ), cos( a ) ); } diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index a4f469967bb5..360669ff90f2 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -1185,8 +1185,7 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, Svx { if ( rObjData.nSpFlags & ShapeFlag::FlipV ) { - double a = 18000 * F_PI18000; - pTObj->Rotate( rTextRect.Center(), 18000_deg100, sin( a ), cos( a ) ); + pTObj->Rotate( rTextRect.Center(), 18000_deg100, 0.0, -1.0 ); } if ( rObjData.nSpFlags & ShapeFlag::FlipH ) nAngle = 36000_deg100 - nAngle; diff --git a/include/basegfx/numeric/ftools.hxx b/include/basegfx/numeric/ftools.hxx index 63e7a0d460ce..14deaa059020 100644 --- a/include/basegfx/numeric/ftools.hxx +++ b/include/basegfx/numeric/ftools.hxx @@ -27,14 +27,6 @@ #include -#ifndef F_PI1800 -#define F_PI1800 (M_PI/1800.0) -#endif -#ifndef F_PI18000 -#define F_PI18000 (M_PI/18000.0) -#endif - - // fTools defines namespace basegfx @@ -83,20 +75,20 @@ namespace basegfx /** Convert value from degrees to radians */ - constexpr double deg2rad( double v ) + template constexpr double deg2rad( double v ) { // divide first, to get exact values for v being a multiple of // 90 degrees - return v / 90.0 * M_PI_2; + return v / (90.0 * DegMultiple) * M_PI_2; } /** Convert value radians to degrees */ - constexpr double rad2deg( double v ) + template constexpr double rad2deg( double v ) { // divide first, to get exact values for v being a multiple of // pi/2 - return v / M_PI_2 * 90.0; + return v / M_PI_2 * (90.0 * DegMultiple); } /** Snap v to nearest multiple of fStep, from negative and diff --git a/include/svx/svdtrans.hxx b/include/svx/svdtrans.hxx index abc19bf617cd..67741e77728b 100644 --- a/include/svx/svdtrans.hxx +++ b/include/svx/svdtrans.hxx @@ -29,19 +29,6 @@ #include #include -// The DrawingEngine's angles are specified in 1/100th degrees -// We need to convert these angles to radians, in order to be able -// to process them with trigonometric functions. -// This is done, using the constant F_PI18000. -// -// Example usage: -// nAngle ... is an angle in 1/100 Deg -// -// Which is converted, by this: -// double nSin=sin(nAngle*F_PI18000); -// -// To convert it back, we use division. - // That maximum shear angle constexpr Degree100 SDRMAXSHEAR(8900); diff --git a/include/tools/degree.hxx b/include/tools/degree.hxx index 47dc7a8d98a7..74a27a2c2d35 100644 --- a/include/tools/degree.hxx +++ b/include/tools/degree.hxx @@ -8,6 +8,9 @@ */ #pragma once +#include + +#include #include #include #include @@ -35,11 +38,11 @@ constexpr Degree100 operator""_deg100(unsigned long long n) { return Degree100{ /** conversion functions */ inline Degree100 toDegree100(Degree10 x) { return Degree100(x.get() * 10); } -inline double toRadians(Degree10 x) { return x.get() * (M_PI / 1800.0); } +inline double toRadians(Degree10 x) { return basegfx::deg2rad<10>(x.get()); } inline double toDegrees(Degree10 x) { return x.get() / 10.0; } inline Degree10 toDegree10(Degree100 x) { return Degree10((x.get() + 5) / 10); } -inline double toRadians(Degree100 x) { return x.get() * (M_PI / 18000.0); } +inline double toRadians(Degree100 x) { return basegfx::deg2rad<100>(x.get()); } inline double toDegrees(Degree100 x) { return x.get() / 100.0; } /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index 41b8f0cc320a..015995016a36 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -1929,8 +1929,8 @@ renderOverlay(LOKDocView* pDocView, cairo_t* pCairo) twipToPixel(rRectangle.m_aRectangle.x + rRectangle.m_aRectangle.width, priv->m_fZoom) - 15, twipToPixel(rRectangle.m_aRectangle.y + rRectangle.m_aRectangle.height, priv->m_fZoom) - 15, 5, - 180.0 * (M_PI/180.0), - 360.0 * (M_PI/180.0)); + M_PI, + 2 * M_PI); cairo_stroke(pCairo); } diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 6c2011ac9eef..dfb30c2f484b 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1802,8 +1802,8 @@ void DrawingML::WriteShapeTransformation( const Reference< XShape >& rXShape, sa { int faccos=bFlipV ? -1 : 1; int facsin=bFlipH ? -1 : 1; - aPos.X-=(1-faccos*cos(nRotation.get()*F_PI18000))*aSize.Width/2-facsin*sin(nRotation.get()*F_PI18000)*aSize.Height/2; - aPos.Y-=(1-faccos*cos(nRotation.get()*F_PI18000))*aSize.Height/2+facsin*sin(nRotation.get()*F_PI18000)*aSize.Width/2; + aPos.X-=(1-faccos*cos(toRadians(nRotation)))*aSize.Width/2-facsin*sin(toRadians(nRotation))*aSize.Height/2; + aPos.Y-=(1-faccos*cos(toRadians(nRotation)))*aSize.Height/2+facsin*sin(toRadians(nRotation))*aSize.Width/2; } else if (m_xParent.is() && nRotation != 0_deg100) { diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 32a53aa25649..e936aada4a51 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -5152,8 +5152,8 @@ void Test::testAnchoredRotatedShape() pPage->InsertObject(pObj); Point aRef1(pObj->GetSnapRect().Center()); Degree100 nAngle = 9000_deg100; //90 deg. - double nSin = sin(nAngle.get() * F_PI18000); - double nCos = cos(nAngle.get() * F_PI18000); + double nSin = 1.0; // sin(90 deg) + double nCos = 0.0; // cos(90 deg) pObj->Rotate(aRef1,nAngle,nSin,nCos); ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, true); diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index ce1e30534179..037e34658c5d 100644 --- a/sc/source/core/data/column2.cxx +++ b/sc/source/core/data/column2.cxx @@ -301,7 +301,7 @@ tools::Long ScColumn::GetNeededSize( { //TODO: take different X/Y scaling into consideration - double nRealOrient = nRotate.get() * F_PI18000; // nRotate is in 1/100 Grad + double nRealOrient = toRadians(nRotate); double nCosAbs = fabs( cos( nRealOrient ) ); double nSinAbs = fabs( sin( nRealOrient ) ); tools::Long nHeight = static_cast( aSize.Height() * nCosAbs + aSize.Width() * nSinAbs ); @@ -482,7 +482,7 @@ tools::Long ScColumn::GetNeededSize( //TODO: take different X/Y scaling into consideration Size aSize( pEngine->CalcTextWidth(), pEngine->GetTextHeight() ); - double nRealOrient = nRotate.get() * F_PI18000; // nRotate is in 1/100 Grad + double nRealOrient = toRadians(nRotate); double nCosAbs = fabs( cos( nRealOrient ) ); double nSinAbs = fabs( sin( nRealOrient ) ); tools::Long nHeight = static_cast( aSize.Height() * nCosAbs + aSize.Width() * nSinAbs ); diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index 8eacc29f65df..9c337b810e22 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -2316,7 +2316,7 @@ SCSIZE ScTable::FillMaxRot( RowInfo* pRowInfo, SCSIZE nArrCount, SCCOL nX1, SCCO { Degree100 nRotVal = pPattern-> GetItem( ATTR_ROTATE_VALUE, pCondSet ).GetValue(); - double nRealOrient = nRotVal.get() * F_PI18000; // 1/100 degree + double nRealOrient = toRadians(nRotVal); double nCos = cos( nRealOrient ); double nSin = sin( nRealOrient ); //TODO: limit !!! diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx index bf6ffd4a2c23..38c81adf2dcf 100644 --- a/sc/source/filter/excel/xichart.cxx +++ b/sc/source/filter/excel/xichart.cxx @@ -1204,7 +1204,7 @@ void XclImpChText::ConvertTitlePosition( const XclChTextKey& rTitleKey ) const css::awt::Size aTitleSize = xTitleShape->getSize(); // rotated titles need special handling... Degree100 nScRot = XclTools::GetScRotation( GetRotation(), 0_deg100 ); - double fRad = nScRot.get() * F_PI18000; + double fRad = toRadians(nScRot); double fSin = fabs( sin( fRad ) ); // calculate the title position from the values in the CHTEXT record css::awt::Point aTitlePos( diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx index b9d843739029..a85af722f0f3 100644 --- a/sd/source/filter/eppt/epptso.cxx +++ b/sd/source/filter/eppt/epptso.cxx @@ -963,8 +963,8 @@ void PPTWriter::ImplFlipBoundingBox( EscherPropertyContainer& rPropOpt ) else mnAngle = ( 36000 - ( mnAngle % 36000 ) ); - double fCos = cos( static_cast(mnAngle) * F_PI18000 ); - double fSin = sin( static_cast(mnAngle) * F_PI18000 ); + double fCos = cos( basegfx::deg2rad<100>(mnAngle) ); + double fSin = sin( basegfx::deg2rad<100>(mnAngle) ); double fWidthHalf = maRect.GetWidth() / 2.0; double fHeightHalf = maRect.GetHeight() / 2.0; @@ -1872,10 +1872,10 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a css::awt::Size aSize( mXShape->getSize() ); css::awt::Point aStart, aEnd, aCenter; ::tools::Rectangle aRect( Point( aPoint.X, aPoint.Y ), Size( aSize.Width, aSize.Height ) ); - aStart.X = static_cast( cos( nStartAngle * F_PI18000 ) * 100.0 ); - aStart.Y = - static_cast( sin( nStartAngle * F_PI18000 ) * 100.0 ); - aEnd.X = static_cast( cos( nEndAngle * F_PI18000 ) * 100.0 ); - aEnd.Y = - static_cast( sin( nEndAngle * F_PI18000 ) * 100.0 ) ; + aStart.X = static_cast( cos( basegfx::deg2rad<100>(nStartAngle) ) * 100.0 ); + aStart.Y = - static_cast( sin( basegfx::deg2rad<100>(nStartAngle) ) * 100.0 ); + aEnd.X = static_cast( cos( basegfx::deg2rad<100>(nEndAngle) ) * 100.0 ); + aEnd.Y = - static_cast( sin( basegfx::deg2rad<100>(nEndAngle) ) * 100.0 ); aCenter.X = aPoint.X + ( aSize.Width / 2 ); aCenter.Y = aPoint.Y + ( aSize.Height / 2 ); aStart.X += aCenter.X; diff --git a/svx/source/customshapes/EnhancedCustomShape3d.cxx b/svx/source/customshapes/EnhancedCustomShape3d.cxx index 4d3cb9de7cb1..bbad9f60753a 100644 --- a/svx/source/customshapes/EnhancedCustomShape3d.cxx +++ b/svx/source/customshapes/EnhancedCustomShape3d.cxx @@ -277,7 +277,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject( Degree100 nObjectRotation(rSdrObjCustomShape.GetRotateAngle()); if ( nObjectRotation ) { - double a = (36000 - nObjectRotation.get()) * F_PI18000; + double a = toRadians(36000_deg100 - nObjectRotation); tools::Long dx = aSnapRect.Right() - aSnapRect.Left(); tools::Long dy = aSnapRect.Bottom()- aSnapRect.Top(); Point aP( aSnapRect.TopLeft() ); diff --git a/svx/source/sdr/contact/viewcontactofe3dlathe.cxx b/svx/source/sdr/contact/viewcontactofe3dlathe.cxx index 0d9d0714aa56..bcaa1c367f97 100644 --- a/svx/source/sdr/contact/viewcontactofe3dlathe.cxx +++ b/svx/source/sdr/contact/viewcontactofe3dlathe.cxx @@ -72,7 +72,7 @@ namespace sdr::contact const sal_uInt32 nVerticalSegments(GetE3dLatheObj().GetVerticalSegments()); const double fDiagonal(static_cast(GetE3dLatheObj().GetPercentDiagonal()) / 100.0); const double fBackScale(static_cast(GetE3dLatheObj().GetBackScale()) / 100.0); - const double fRotation((static_cast(GetE3dLatheObj().GetEndAngle()) / 1800.0) * M_PI); + const double fRotation(basegfx::deg2rad<10>(GetE3dLatheObj().GetEndAngle())); const bool bSmoothNormals(GetE3dLatheObj().GetSmoothNormals()); // Plane itself const bool bSmoothLids(GetE3dLatheObj().GetSmoothLids()); // Front/back const bool bCharacterMode(GetE3dLatheObj().GetCharacterMode()); diff --git a/svx/source/sdr/contact/viewcontactofgraphic.cxx b/svx/source/sdr/contact/viewcontactofgraphic.cxx index 7450b25be1a4..8e284f7ae79d 100644 --- a/svx/source/sdr/contact/viewcontactofgraphic.cxx +++ b/svx/source/sdr/contact/viewcontactofgraphic.cxx @@ -341,7 +341,7 @@ namespace sdr::contact // fill object matrix const double fShearX(-rGeoStat.mfTanShearAngle); - const double fRotate(nRotationAngle ? (36000 - nRotationAngle.get()) * F_PI18000 : 0.0); + const double fRotate(nRotationAngle ? toRadians(36000_deg100 - nRotationAngle) : 0.0); const basegfx::B2DHomMatrix aObjectMatrix(basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix( aObjectRange.getWidth(), aObjectRange.getHeight(), fShearX, fRotate, diff --git a/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx b/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx index d3198802a706..44eea3a13fd4 100644 --- a/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx @@ -74,7 +74,7 @@ namespace sdr::contact basegfx::B2DHomMatrix aObjectMatrix(basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix( aObjectRange.getWidth(), aObjectRange.getHeight(), -rGeoStat.mfTanShearAngle, - rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0, + rGeoStat.nRotationAngle ? toRadians(36000_deg100 - rGeoStat.nRotationAngle) : 0.0, aObjectRange.getMinX(), aObjectRange.getMinY())); // calculate corner radius diff --git a/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx b/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx index 7462c1080a2e..e150a6be7377 100644 --- a/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx @@ -57,7 +57,7 @@ namespace sdr::contact basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix( aObjectRange.getWidth(), aObjectRange.getHeight(), -rGeoStat.mfTanShearAngle, - rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0, + rGeoStat.nRotationAngle ? toRadians(36000_deg100 - rGeoStat.nRotationAngle) : 0.0, aObjectRange.getMinX(), aObjectRange.getMinY())); // create primitive data @@ -77,10 +77,10 @@ namespace sdr::contact } else { - const sal_Int32 nNewStart(rItemSet.Get(SDRATTR_CIRCSTARTANGLE).GetValue()); - const sal_Int32 nNewEnd(rItemSet.Get(SDRATTR_CIRCENDANGLE).GetValue()); - const double fStart(((36000 - nNewEnd) % 36000) * F_PI18000); - const double fEnd(((36000 - nNewStart) % 36000) * F_PI18000); + const auto nNewStart(rItemSet.Get(SDRATTR_CIRCSTARTANGLE).GetValue()); + const auto nNewEnd(rItemSet.Get(SDRATTR_CIRCENDANGLE).GetValue()); + const double fStart(toRadians((36000_deg100 - nNewEnd) % 36000_deg100)); + const double fEnd(toRadians((36000_deg100 - nNewStart) % 36000_deg100)); const bool bCloseSegment(OBJ_CARC != nIdentifier); const bool bCloseUsingCenter(OBJ_SECT == nIdentifier); diff --git a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx index 6a4e22ec7af0..879f36971f85 100644 --- a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx @@ -73,7 +73,7 @@ namespace sdr::contact if(rGeoStat.nRotationAngle) { - aRotMatrix.rotate((36000 - rGeoStat.nRotationAngle.get()) * F_PI18000); + aRotMatrix.rotate(toRadians(36000_deg100 - rGeoStat.nRotationAngle)); } aRotMatrix.translate(aObjectRange.getMinimum().getX(), aObjectRange.getMinimum().getY()); @@ -202,7 +202,7 @@ namespace sdr::contact if(rGeoStat.nRotationAngle) { - aTextBoxMatrix.rotate((36000 - rGeoStat.nRotationAngle.get()) * F_PI18000); + aTextBoxMatrix.rotate(toRadians(36000_deg100 - rGeoStat.nRotationAngle)); } // give text it's target position diff --git a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx index 610c483cbec8..a9ee47a30af3 100644 --- a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx @@ -62,7 +62,7 @@ basegfx::B2DHomMatrix ViewContactOfSdrOle2Obj::createObjectTransform() const // create object matrix const GeoStat& rGeoStat(GetOle2Obj().GetGeoStat()); const double fShearX(-rGeoStat.mfTanShearAngle); - const double fRotate(rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0); + const double fRotate(rGeoStat.nRotationAngle ? toRadians(36000_deg100 - rGeoStat.nRotationAngle) : 0.0); return basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix( aObjectRange.getWidth(), aObjectRange.getHeight(), diff --git a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx index 694c3ea32947..b326fd8af787 100644 --- a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx @@ -158,7 +158,7 @@ namespace sdr::contact aObjectMatrix = basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix( fScaleX, fScaleY, -rGeoStat.mfTanShearAngle, - rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0, + rGeoStat.nRotationAngle ? toRadians(36000_deg100 - rGeoStat.nRotationAngle) : 0.0, aObjectRange.getMinX(), aObjectRange.getMinY()); // create unit polygon from object's absolute path diff --git a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx index e1b8d69cd906..a8f1c3aeb125 100644 --- a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx @@ -57,7 +57,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrRectObj::createV basegfx::B2DHomMatrix aObjectMatrix(basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix( aObjectRange.getWidth(), aObjectRange.getHeight(), -rGeoStat.mfTanShearAngle, - rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0, + rGeoStat.nRotationAngle ? toRadians(36000_deg100 - rGeoStat.nRotationAngle) : 0.0, aObjectRange.getMinX(), aObjectRange.getMinY())); // calculate corner radius diff --git a/svx/source/sdr/primitive2d/sdrattributecreator.cxx b/svx/source/sdr/primitive2d/sdrattributecreator.cxx index 7193dc4a663c..1b4f0abbac97 100644 --- a/svx/source/sdr/primitive2d/sdrattributecreator.cxx +++ b/svx/source/sdr/primitive2d/sdrattributecreator.cxx @@ -483,7 +483,7 @@ namespace drawinglayer::primitive2d static_cast(aXGradient.GetBorder()) * 0.01, static_cast(aXGradient.GetXOffset()) * 0.01, static_cast(aXGradient.GetYOffset()) * 0.01, - static_cast(aXGradient.GetAngle().get()) * F_PI1800, + toRadians(aXGradient.GetAngle()), aStart, aEnd, rSet.Get(XATTR_GRADIENTSTEPCOUNT).GetValue()); @@ -498,7 +498,7 @@ namespace drawinglayer::primitive2d aHatch = attribute::FillHatchAttribute( XHatchStyleToHatchStyle(rHatch.GetHatchStyle()), static_cast(rHatch.GetDistance()), - static_cast(rHatch.GetAngle().get()) * F_PI1800, + toRadians(rHatch.GetAngle()), aColorB.getBColor(), 3, // same default as VCL, a minimum of three discrete units (pixels) offset rSet.Get(XATTR_FILLBACKGROUND).GetValue()); @@ -644,7 +644,7 @@ namespace drawinglayer::primitive2d static_cast(rGradient.GetBorder()) * 0.01, static_cast(rGradient.GetXOffset()) * 0.01, static_cast(rGradient.GetYOffset()) * 0.01, - static_cast(rGradient.GetAngle().get()) * F_PI1800, + toRadians(rGradient.GetAngle()), basegfx::BColor(fStartLum, fStartLum, fStartLum), basegfx::BColor(fEndLum, fEndLum, fEndLum)); } diff --git a/svx/source/svdraw/svddrgmt.cxx b/svx/source/svdraw/svddrgmt.cxx index bdba8aa0d7f4..1bbd4cbd46d9 100644 --- a/svx/source/svdraw/svddrgmt.cxx +++ b/svx/source/svdraw/svddrgmt.cxx @@ -1067,7 +1067,7 @@ void SdrDragMovHdl::MoveSdrDrag(const Point& rNoSnapPnt) nNewAngle/=nSA; nNewAngle*=nSA; nNewAngle=NormAngle36000(nNewAngle); - double a=(nNewAngle-nAngle).get()*F_PI18000; + double a=toRadians(nNewAngle-nAngle); double nSin=sin(a); double nCos=cos(a); RotatePoint(aPnt,aRef,nSin,nCos); @@ -2141,7 +2141,7 @@ void SdrDragRotate::MoveSdrDrag(const Point& rPnt_) bRight=false; nAngle=nNewAngle; - double a = nAngle.get() * F_PI18000; + double a = toRadians(nAngle); double nSin1=sin(a); // calculate now, so as little time as possible double nCos1=cos(a); // passes between Hide() and Show() Hide(); @@ -2356,7 +2356,7 @@ void SdrDragShear::MoveSdrDrag(const Point& rPnt) if (bUpSideDown) nNewAngle -= 18000_deg100; if (bNeg) nTmpAngle=-nTmpAngle; bResize=true; - aNewFract = cos(nTmpAngle.get() * F_PI18000); + aNewFract = cos(toRadians(nTmpAngle)); aFact.ReduceInaccurate(10); // three decimals should be enough } @@ -2370,7 +2370,7 @@ void SdrDragShear::MoveSdrDrag(const Point& rPnt) { nAngle=nNewAngle; aFact=aNewFract; - double a = nAngle.get() * F_PI18000; + double a = toRadians(nAngle); double nTan1=tan(a); // calculate now, so as little time as possible passes between Hide() and Show() Hide(); nTan=nTan1; diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx index 852d160ccd98..0cc7cc0019a8 100644 --- a/svx/source/svdraw/svdedtv1.cxx +++ b/svx/source/svdraw/svdedtv1.cxx @@ -310,8 +310,8 @@ void SdrEditView::RotateMarkedObj(const Point& rRef, Degree100 nAngle, bool bCop if (bCopy) CopyMarkedObj(); - double nSin = sin(nAngle.get() * F_PI18000); - double nCos = cos(nAngle.get() * F_PI18000); + double nSin = sin(toRadians(nAngle)); + double nCos = cos(toRadians(nAngle)); const size_t nMarkCount(GetMarkedObjectCount()); if(nMarkCount) @@ -468,7 +468,7 @@ void SdrEditView::ShearMarkedObj(const Point& rRef, Degree100 nAngle, bool bVShe if (bCopy) CopyMarkedObj(); - double nTan = tan(nAngle.get() * F_PI18000); + double nTan = tan(toRadians(nAngle)); const size_t nMarkCount=GetMarkedObjectCount(); for (size_t nm=0; nmRotate(aCtr0, Degree100(FRound(nAngle / F_PI18000)), nSin, nCos); + pO->Rotate(aCtr0, Degree100(FRound(basegfx::rad2deg<100>(nAngle))), nSin, nCos); pO->Move(Size(aCtr1.X(),aCtr1.Y())); } @@ -1643,10 +1643,10 @@ void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr, bool addPageMargin } else { if (nNewShearAngle!=0_deg100 && nOldShearAngle!=0_deg100) { // bug fix - double nOld = tan(static_cast(nOldShearAngle.get()) * F_PI18000); - double nNew = tan(static_cast(nNewShearAngle.get()) * F_PI18000); + double nOld = tan(toRadians(nOldShearAngle)); + double nNew = tan(toRadians(nNewShearAngle)); nNew-=nOld; - nNew = atan(nNew) / F_PI18000; + nNew = basegfx::rad2deg<100>(atan(nNew)); nShearAngle=Degree100(FRound(nNew)); } else { nShearAngle=nNewShearAngle-nOldShearAngle; diff --git a/svx/source/svdraw/svdglev.cxx b/svx/source/svdraw/svdglev.cxx index 78c92f778840..67c64eb1a8df 100644 --- a/svx/source/svdraw/svdglev.cxx +++ b/svx/source/svdraw/svdglev.cxx @@ -390,8 +390,8 @@ void SdrGlueEditView::RotateMarkedGluePoints(const Point& rRef, Degree100 nAngle if (bCopy) aStr+=SvxResId(STR_EditWithCopy); BegUndo(aStr,GetDescriptionOfMarkedGluePoints(),SdrRepeatFunc::Rotate); if (bCopy) ImpCopyMarkedGluePoints(); - double nSin = sin(nAngle.get() * F_PI18000); - double nCos = cos(nAngle.get() * F_PI18000); + double nSin = sin(toRadians(nAngle)); + double nCos = cos(toRadians(nAngle)); ImpTransformMarkedGluePoints(ImpRotate,&rRef,&nAngle,&nSin,&nCos); EndUndo(); AdjustMarkHdl(); diff --git a/svx/source/svdraw/svdhdl.cxx b/svx/source/svdraw/svdhdl.cxx index d0c61f808ef3..f20daeabac4f 100644 --- a/svx/source/svdraw/svdhdl.cxx +++ b/svx/source/svdraw/svdhdl.cxx @@ -1831,7 +1831,7 @@ void ImpTextframeHdl::CreateB2dIAObject() fTransparence, 3.0, 3.0, - nRotationAngle.get() * -F_PI18000, + -toRadians(nRotationAngle), true)); // allow animation; the Handle is not shown at text edit time pNewOverlayObject->setHittable(false); diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx index ffbfe6456e54..3b1612b15f68 100644 --- a/svx/source/svdraw/svdoashp.cxx +++ b/svx/source/svdraw/svdoashp.cxx @@ -1585,17 +1585,17 @@ void SdrObjCustomShape::NbcRotate( const Point& rRef, Degree100 nAngle, double s maGeo.nRotationAngle = 0_deg100; // resetting aGeo data maGeo.RecalcSinCos(); - tools::Long nW = static_cast( fObjectRotation * 100 ); // applying our object rotation + Degree100 nW(static_cast( fObjectRotation * 100 )); // applying our object rotation if ( bMirroredX ) - nW = 36000 - nW; + nW = 36000_deg100 - nW; if ( bMirroredY ) - nW = 18000 - nW; - nW = nW % 36000; - if ( nW < 0 ) - nW = 36000 + nW; - SdrTextObj::NbcRotate( maRect.TopLeft(), Degree100(nW), // applying text rotation - sin( nW * F_PI18000 ), - cos( nW * F_PI18000 ) ); + nW = 18000_deg100 - nW; + nW = nW % 36000_deg100; + if ( nW < 0_deg100 ) + nW = 36000_deg100 + nW; + SdrTextObj::NbcRotate( maRect.TopLeft(), nW, // applying text rotation + sin( toRadians(nW) ), + cos( toRadians(nW) ) ); int nSwap = 0; if ( bMirroredX ) @@ -3034,7 +3034,7 @@ void SdrObjCustomShape::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, // #i123181# The fix for #121932# here was wrong, the trunk version does not correct the // mirrored shear values, neither at the object level, nor on the API or XML level. Taking // back the mirroring of the shear angle - aGeoStat.nShearAngle = Degree100(FRound(basegfx::rad2deg(atan(fShearX)) * 100.0)); + aGeoStat.nShearAngle = Degree100(FRound(basegfx::rad2deg<100>(atan(fShearX)))); aGeoStat.RecalcTan(); Shear(Point(), aGeoStat.nShearAngle, aGeoStat.mfTanShearAngle, false); } @@ -3047,7 +3047,7 @@ void SdrObjCustomShape::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, // #i78696# // fRotate is mathematically correct, but aGeoStat.nRotationAngle is // mirrored -> mirror value here - aGeoStat.nRotationAngle = NormAngle36000(Degree100(FRound(-fRotate / F_PI18000))); + aGeoStat.nRotationAngle = NormAngle36000(Degree100(FRound(-basegfx::rad2deg<100>(fRotate)))); aGeoStat.RecalcSinCos(); Rotate(Point(), aGeoStat.nRotationAngle, aGeoStat.mfSinRotationAngle, aGeoStat.mfCosRotationAngle); } diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index 35aaebc13f09..957ea2e38ebc 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -1461,7 +1461,7 @@ void SdrObject::NbcRotate(const Point& rRef, Degree100 nAngle) { if (nAngle) { - double a = nAngle.get() * F_PI18000; + double a = toRadians(nAngle); NbcRotate( rRef, nAngle, sin( a ), cos( a ) ); } } @@ -2079,7 +2079,7 @@ void SdrObject::NbcApplyNotPersistAttr(const SfxItemSet& rAttr) Degree100 n=static_cast(pPoolItem)->GetValue(); n-=GetShearAngle(); if (n) { - double nTan = tan(n.get() * F_PI18000); + double nTan = tan(toRadians(n)); NbcShear(aRef1,n,nTan,false); } } @@ -2096,12 +2096,12 @@ void SdrObject::NbcApplyNotPersistAttr(const SfxItemSet& rAttr) } if (rAttr.GetItemState(SDRATTR_HORZSHEARONE,true,&pPoolItem)==SfxItemState::SET) { Degree100 n=static_cast(pPoolItem)->GetValue(); - double nTan = tan(n.get() * F_PI18000); + double nTan = tan(toRadians(n)); NbcShear(aRef1,n,nTan,false); } if (rAttr.GetItemState(SDRATTR_VERTSHEARONE,true,&pPoolItem)==SfxItemState::SET) { Degree100 n=static_cast(pPoolItem)->GetValue(); - double nTan = tan(n.get() * F_PI18000); + double nTan = tan(toRadians(n)); NbcShear(aRef1,n,nTan,true); } diff --git a/svx/source/svdraw/svdocirc.cxx b/svx/source/svdraw/svdocirc.cxx index 4275daa86187..6f320d6d4ae7 100644 --- a/svx/source/svdraw/svdocirc.cxx +++ b/svx/source/svdraw/svdocirc.cxx @@ -56,7 +56,7 @@ static Point GetAnglePnt(const tools::Rectangle& rR, Degree100 nAngle) tools::Long nWdt=rR.Right()-rR.Left(); tools::Long nHgt=rR.Bottom()-rR.Top(); tools::Long nMaxRad=(std::max(nWdt,nHgt)+1) /2; - double a = nAngle.get() * F_PI18000; + double a = toRadians(nAngle); Point aRetval(FRound(cos(a)*nMaxRad),-FRound(sin(a)*nMaxRad)); if (nWdt==0) aRetval.setX(0 ); if (nHgt==0) aRetval.setY(0 ); @@ -261,9 +261,8 @@ basegfx::B2DPolygon SdrCircObj::ImpCalcXPolyCirc(const SdrCircKind eCircleKind, else { // mirror start, end for geometry creation since model coordinate system is mirrored in Y - // #i111715# increase numerical correctness by first dividing and not using F_PI1800 - const double fStart((((36000 - nEnd.get()) % 36000) / 18000.0) * M_PI); - const double fEnd((((36000 - nStart.get()) % 36000) / 18000.0) * M_PI); + const double fStart(toRadians((36000_deg100 - nEnd) % 36000_deg100)); + const double fEnd(toRadians((36000_deg100 - nStart) % 36000_deg100)); // create circle segment. This is not closed by default aCircPolygon = basegfx::utils::createPolygonFromEllipseSegment( @@ -301,7 +300,7 @@ basegfx::B2DPolygon SdrCircObj::ImpCalcXPolyCirc(const SdrCircKind eCircleKind, // shear, rotate and back to top left (if needed) aMatrix = basegfx::utils::createShearXRotateTranslateB2DHomMatrix( -maGeo.mfTanShearAngle, - maGeo.nRotationAngle ? (36000_deg100 - maGeo.nRotationAngle).get() * F_PI18000 : 0.0, + maGeo.nRotationAngle ? toRadians(36000_deg100 - maGeo.nRotationAngle) : 0.0, aTopLeft) * aMatrix; // apply transformation @@ -885,15 +884,14 @@ void SdrCircObj::NbcMirror(const Point& rRef1, const Point& rRef2) tools::Long nWdt=maRect.GetWidth()-1; tools::Long nHgt=maRect.GetHeight()-1; tools::Long nMaxRad=(std::max(nWdt,nHgt)+1) /2; - double a; // starting point - a = nStartAngle.get() * F_PI18000; + double a = toRadians(nStartAngle); aTmpPt1=Point(FRound(cos(a)*nMaxRad),-FRound(sin(a)*nMaxRad)); if (nWdt==0) aTmpPt1.setX(0 ); if (nHgt==0) aTmpPt1.setY(0 ); aTmpPt1+=aCenter; // finishing point - a = nEndAngle.get() * F_PI18000; + a = toRadians(nEndAngle); aTmpPt2=Point(FRound(cos(a)*nMaxRad),-FRound(sin(a)*nMaxRad)); if (nWdt==0) aTmpPt2.setX(0 ); if (nHgt==0) aTmpPt2.setY(0 ); diff --git a/svx/source/svdraw/svdomeas.cxx b/svx/source/svdraw/svdomeas.cxx index 6c2c4b1860b8..09601cae6f17 100644 --- a/svx/source/svdraw/svdomeas.cxx +++ b/svx/source/svdraw/svdomeas.cxx @@ -429,7 +429,7 @@ void SdrMeasureObj::ImpCalcGeometrics(const ImpMeasureRec& rRec, ImpMeasurePoly& rPol.nArrow2Len=nArrow2Len; rPol.nLineAngle=GetAngle(aDelt); - double a = rPol.nLineAngle.get() * F_PI18000; + double a = toRadians(rPol.nLineAngle); double nLineSin=sin(a); double nLineCos=cos(a); rPol.nLineSin=nLineSin; @@ -873,7 +873,7 @@ OUString SdrMeasureObj::getSpecialDragComment(const SdrDragStat& /*rDrag*/) cons void SdrMeasureObj::ImpEvalDrag(ImpMeasureRec& rRec, const SdrDragStat& rDrag) const { Degree100 nLineAngle=GetAngle(rRec.aPt2-rRec.aPt1); - double a = nLineAngle.get() * F_PI18000; + double a = toRadians(nLineAngle); double nSin=sin(a); double nCos=cos(a); diff --git a/svx/source/svdraw/svdopath.cxx b/svx/source/svdraw/svdopath.cxx index efeefc79dcea..553c299b9831 100644 --- a/svx/source/svdraw/svdopath.cxx +++ b/svx/source/svdraw/svdopath.cxx @@ -322,20 +322,20 @@ void ImpPathCreateUser::CalcCircle(const Point& rP1, const Point& rP2, const Poi bool bRet=nTmpAngle!=9000_deg100 && nTmpAngle!=27000_deg100; tools::Long nRad=0; if (bRet) { - double cs = cos(nTmpAngle.get() * F_PI18000); + double cs = cos(toRadians(nTmpAngle)); double nR=static_cast(GetLen(Point(dx,dy)))/cs/2; nRad=std::abs(FRound(nR)); } if (dAngle<18000_deg100) { nCircStAngle=NormAngle36000(nTangAngle-9000_deg100); nCircRelAngle=NormAngle36000(2_deg100*dAngle); - aCircCenter.AdjustX(FRound(nRad * cos((nTangAngle.get() + 9000) * F_PI18000))); - aCircCenter.AdjustY(-(FRound(nRad * sin((nTangAngle.get() + 9000) * F_PI18000)))); + aCircCenter.AdjustX(FRound(nRad * cos(toRadians(nTangAngle + 9000_deg100)))); + aCircCenter.AdjustY(-(FRound(nRad * sin(toRadians(nTangAngle + 9000_deg100))))); } else { nCircStAngle=NormAngle36000(nTangAngle+9000_deg100); nCircRelAngle=-NormAngle36000(36000_deg100-2_deg100*dAngle); - aCircCenter.AdjustX(FRound(nRad * cos((nTangAngle.get() - 9000) * F_PI18000))); - aCircCenter.AdjustY(-(FRound(nRad * sin((nTangAngle.get() - 9000) * F_PI18000)))); + aCircCenter.AdjustX(FRound(nRad * cos(toRadians(nTangAngle - 9000_deg100)))); + aCircCenter.AdjustY(-(FRound(nRad * sin(toRadians(nTangAngle - 9000_deg100))))); } bAngleSnap=pView!=nullptr && pView->IsAngleSnapEnabled(); if (bAngleSnap) { @@ -453,7 +453,7 @@ void ImpPathCreateUser::CalcRect(const Point& rP1, const Point& rP2, const Point tools::Long nHypLen=aTmpPt.Y()-y; Degree100 nTangAngle=-GetAngle(rDir); // sin=g/h, g=h*sin - double a = nTangAngle.get() * F_PI18000; + double a = toRadians(nTangAngle); double sn=sin(a); double cs=cos(a); double nGKathLen=nHypLen*sn; @@ -2305,7 +2305,7 @@ void SdrPathObj::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, doubl { // Thank JOE, the angles are defined mirrored to the mathematical meanings const basegfx::B2DHomMatrix aTrans( - basegfx::utils::createRotateAroundPoint(rRef.X(), rRef.Y(), -nAngle.get() * F_PI18000)); + basegfx::utils::createRotateAroundPoint(rRef.X(), rRef.Y(), -toRadians(nAngle))); maPathPolygon.transform(aTrans); // #i19871# first modify locally, then call parent (to get correct SnapRect with GluePoints) @@ -2819,14 +2819,14 @@ bool SdrPathObj::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DP if(maGeo.nShearAngle || maGeo.nRotationAngle) { // get rotate and shear in drawingLayer notation - fRotate = maGeo.nRotationAngle.get() * F_PI18000; - fShearX = maGeo.nShearAngle.get() * F_PI18000; + fRotate = toRadians(maGeo.nRotationAngle); + fShearX = toRadians(maGeo.nShearAngle); // build mathematically correct (negative shear and rotate) object transform // containing shear and rotate to extract unsheared, unrotated polygon basegfx::B2DHomMatrix aObjectMatrix; aObjectMatrix.shearX(-maGeo.mfTanShearAngle); - aObjectMatrix.rotate((36000 - maGeo.nRotationAngle.get()) * F_PI18000); + aObjectMatrix.rotate(toRadians(36000_deg100 - maGeo.nRotationAngle)); // create inverse from it and back-transform polygon basegfx::B2DHomMatrix aInvObjectMatrix(aObjectMatrix); @@ -2962,7 +2962,7 @@ void SdrPathObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b if(!basegfx::fTools::equalZero(fShearX)) { aTransform.shearX(tan(-atan(fShearX))); - maGeo.nShearAngle = Degree100(FRound(atan(fShearX) / F_PI18000)); + maGeo.nShearAngle = Degree100(FRound(basegfx::rad2deg<100>(atan(fShearX)))); maGeo.RecalcTan(); } @@ -2976,7 +2976,7 @@ void SdrPathObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b // #i78696# // fRotate is mathematically correct, but aGeoStat.nRotationAngle is // mirrored -> mirror value here - maGeo.nRotationAngle = NormAngle36000(Degree100(FRound(-fRotate / F_PI18000))); + maGeo.nRotationAngle = NormAngle36000(Degree100(FRound(-basegfx::rad2deg<100>(fRotate)))); maGeo.RecalcSinCos(); } diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index be570fff6089..30c5524288e9 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -577,7 +577,7 @@ void SdrTextObj::ImpSetContourPolygon( SdrOutliner& rOutliner, tools::Rectangle if(maGeo.nRotationAngle) { // Unrotate! - aMatrix.rotate(-maGeo.nRotationAngle.get() * F_PI18000); + aMatrix.rotate(-toRadians(maGeo.nRotationAngle)); } aXorPolyPolygon.transform(aMatrix); @@ -1649,7 +1649,7 @@ void SdrTextObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b if(!basegfx::fTools::equalZero(fShearX)) { GeoStat aGeoStat; - aGeoStat.nShearAngle = Degree100(FRound(basegfx::rad2deg(atan(fShearX)) * 100.0)); + aGeoStat.nShearAngle = Degree100(FRound(basegfx::rad2deg<100>(atan(fShearX)))); aGeoStat.RecalcTan(); Shear(Point(), aGeoStat.nShearAngle, aGeoStat.mfTanShearAngle, false); } @@ -1662,7 +1662,7 @@ void SdrTextObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b // #i78696# // fRotate is matematically correct, but aGeoStat.nRotationAngle is // mirrored -> mirror value here - aGeoStat.nRotationAngle = NormAngle36000(Degree100(FRound(-fRotate / F_PI18000))); + aGeoStat.nRotationAngle = NormAngle36000(Degree100(FRound(-basegfx::rad2deg<100>(fRotate)))); aGeoStat.RecalcSinCos(); Rotate(Point(), aGeoStat.nRotationAngle, aGeoStat.mfSinRotationAngle, aGeoStat.mfCosRotationAngle); } diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx index ce6fa2206326..607a2546d1d5 100644 --- a/svx/source/svdraw/svdotextdecomposition.cxx +++ b/svx/source/svdraw/svdotextdecomposition.cxx @@ -176,7 +176,7 @@ namespace // apply font rotate if(rInfo.mrFont.GetOrientation()) { - aNewTransform.rotate(-rInfo.mrFont.GetOrientation().get() * F_PI1800); + aNewTransform.rotate(-toRadians(rInfo.mrFont.GetOrientation())); } // look for escapement, if necessary, translate accordingly diff --git a/svx/source/svdraw/svdotextpathdecomposition.cxx b/svx/source/svdraw/svdotextpathdecomposition.cxx index 8f04b356cef7..42d332c53420 100644 --- a/svx/source/svdraw/svdotextpathdecomposition.cxx +++ b/svx/source/svdraw/svdotextpathdecomposition.cxx @@ -379,7 +379,7 @@ namespace else // XFormTextShadow::Slant { double fScaleValue(maSdrFormTextAttribute.getFormTextShdwYVal() / 100.0); - double fShearValue(-maSdrFormTextAttribute.getFormTextShdwXVal() * F_PI1800); + double fShearValue(-basegfx::deg2rad<10>(maSdrFormTextAttribute.getFormTextShdwXVal())); aNewShadowTransform.scale(1.0, fScaleValue); aNewShadowTransform.shearX(sin(fShearValue)); diff --git a/svx/source/svdraw/svdpoev.cxx b/svx/source/svdraw/svdpoev.cxx index f6fafcf088d6..bcf9168a47cf 100644 --- a/svx/source/svdraw/svdpoev.cxx +++ b/svx/source/svdraw/svdpoev.cxx @@ -642,8 +642,8 @@ void SdrPolyEditView::RotateMarkedPoints(const Point& rRef, Degree100 nAngle) ForceUndirtyMrkPnt(); OUString aStr(SvxResId(STR_EditResize)); BegUndo(aStr,GetDescriptionOfMarkedPoints(),SdrRepeatFunc::Rotate); - double nSin = sin(nAngle.get() * F_PI18000); - double nCos = cos(nAngle.get() * F_PI18000); + double nSin = sin(toRadians(nAngle)); + double nCos = cos(toRadians(nAngle)); ImpTransformMarkedPoints(ImpRotate,&rRef,&nAngle,&nSin,&nCos); EndUndo(); AdjustMarkHdl(); diff --git a/svx/source/svdraw/svdtrans.cxx b/svx/source/svdraw/svdtrans.cxx index 6af3a49ea873..c0a8aa2605f7 100644 --- a/svx/source/svdraw/svdtrans.cxx +++ b/svx/source/svdraw/svdtrans.cxx @@ -128,7 +128,7 @@ void MirrorPoint(Point& rPnt, const Point& rRef1, const Point& rRef2) rPnt-=rRef1; Degree100 nPntAngle=GetAngle(rPnt); Degree100 nAngle=2_deg100*(nRefAngle-nPntAngle); - double a = nAngle.get() * F_PI18000; + double a = toRadians(nAngle); double nSin=sin(a); double nCos=cos(a); RotatePoint(rPnt,Point(),nSin,nCos); @@ -393,8 +393,7 @@ Degree100 GetAngle(const Point& rPnt) if (rPnt.Y()>0) a=-9000_deg100; else a=9000_deg100; } else { - a = Degree100(FRound(atan2(static_cast(-rPnt.Y()), static_cast(rPnt.X())) - / F_PI18000)); + a = Degree100(FRound(basegfx::rad2deg<100>(atan2(static_cast(-rPnt.Y()), static_cast(rPnt.X()))))); } return a; } @@ -456,7 +455,7 @@ void GeoStat::RecalcSinCos() mfSinRotationAngle=0.0; mfCosRotationAngle=1.0; } else { - double a = nRotationAngle.get() * F_PI18000; + double a = toRadians(nRotationAngle); mfSinRotationAngle=sin(a); mfCosRotationAngle=cos(a); } @@ -467,7 +466,7 @@ void GeoStat::RecalcTan() if (nShearAngle==0_deg100) { mfTanShearAngle=0.0; } else { - double a = nShearAngle.get() * F_PI18000; + double a = toRadians(nShearAngle); mfTanShearAngle=tan(a); } } diff --git a/svx/source/table/viewcontactoftableobj.cxx b/svx/source/table/viewcontactoftableobj.cxx index 88b2071b2363..a79882e03a52 100644 --- a/svx/source/table/viewcontactoftableobj.cxx +++ b/svx/source/table/viewcontactoftableobj.cxx @@ -373,7 +373,7 @@ namespace sdr::contact // create object matrix const GeoStat& rGeoStat(rTableObj.GetGeoStat()); const double fShearX(-rGeoStat.mfTanShearAngle); - const double fRotate(rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0); + const double fRotate(rGeoStat.nRotationAngle ? toRadians(36000_deg100 - rGeoStat.nRotationAngle) : 0.0); const basegfx::B2DHomMatrix aObjectMatrix(basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix( aObjectRange.getWidth(), aObjectRange.getHeight(), fShearX, fRotate, aObjectRange.getMinX(), aObjectRange.getMinY())); @@ -437,7 +437,7 @@ namespace sdr::contact // create object matrix const GeoStat& rGeoStat(rTableObj.GetGeoStat()); const double fShearX(-rGeoStat.mfTanShearAngle); - const double fRotate(rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0); + const double fRotate(rGeoStat.nRotationAngle ? toRadians(36000_deg100 - rGeoStat.nRotationAngle) : 0.0); const basegfx::B2DHomMatrix aObjectMatrix(basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix( aObjectRange.getWidth(), aObjectRange.getHeight(), fShearX, fRotate, aObjectRange.getMinX(), aObjectRange.getMinY())); diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx index 5965bb11cd2a..98a104c49fc8 100644 --- a/svx/source/unodraw/unoshape.cxx +++ b/svx/source/unodraw/unoshape.cxx @@ -2326,8 +2326,8 @@ bool SvxShape::setPropertyValueImpl( const OUString&, const SfxItemPropertyMapEn nAngle -= GetSdrObject()->GetRotateAngle(); if (nAngle) { - double nSin = sin(nAngle.get() * F_PI18000); - double nCos = cos(nAngle.get() * F_PI18000); + double nSin = sin(toRadians(nAngle)); + double nCos = cos(toRadians(nAngle)); GetSdrObject()->Rotate(aRef1,nAngle,nSin,nCos); } return true; @@ -2346,7 +2346,7 @@ bool SvxShape::setPropertyValueImpl( const OUString&, const SfxItemPropertyMapEn if(nShear) { Point aRef1(GetSdrObject()->GetSnapRect().Center()); - double nTan = tan(nShear.get() * F_PI18000); + double nTan = tan(toRadians(nShear)); GetSdrObject()->Shear(aRef1,nShear,nTan,false); return true; } diff --git a/svx/source/xoutdev/xtabgrdt.cxx b/svx/source/xoutdev/xtabgrdt.cxx index 5010ff2e49bd..76438afdcb9a 100644 --- a/svx/source/xoutdev/xtabgrdt.cxx +++ b/svx/source/xoutdev/xtabgrdt.cxx @@ -158,7 +158,7 @@ BitmapEx XGradientList::CreateBitmap( tools::Long nIndex, const Size& rSize ) co static_cast(rGradient.GetBorder()) * 0.01, static_cast(rGradient.GetXOffset()) * 0.01, static_cast(rGradient.GetYOffset()) * 0.01, - static_cast(rGradient.GetAngle().get()) * F_PI1800, + toRadians(rGradient.GetAngle()), aStart, aEnd); diff --git a/svx/source/xoutdev/xtabhtch.cxx b/svx/source/xoutdev/xtabhtch.cxx index 19bc8b737887..f71540012b93 100644 --- a/svx/source/xoutdev/xtabhtch.cxx +++ b/svx/source/xoutdev/xtabhtch.cxx @@ -119,7 +119,7 @@ BitmapEx XHatchList::CreateBitmap( tools::Long nIndex, const Size& rSize) const const drawinglayer::attribute::FillHatchAttribute aFillHatch( aHatchStyle, static_cast(rHatch.GetDistance()) * fScaleValue, - static_cast(rHatch.GetAngle().get()) * F_PI1800, + toRadians(rHatch.GetAngle()), rHatch.GetColor().getBColor(), 3, // same default as VCL, a minimum of three discrete units (pixels) offset false); diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx index 2efafc412d82..dd15aeee8445 100644 --- a/sw/source/filter/ww8/docxsdrexport.cxx +++ b/sw/source/filter/ww8/docxsdrexport.cxx @@ -110,16 +110,15 @@ void lclMovePositionWithRotation(awt::Point& aPos, const Size& rSize, Degree100 // Use nRotation in [0;9000], for to have only one and not four cases. if (nRotation100 == 0_deg100) return; - sal_Int64 nRotation = nRotation100.get(); - if (nRotation < 0) - nRotation = (36000 + nRotation) % 36000; - if (nRotation % 18000 == 0) - nRotation = 0; // prevents endless loop - while (nRotation > 9000) - nRotation = (18000 - (nRotation % 18000)); - - double fVal = static_cast(nRotation) * F_PI18000; - double fCos = (nRotation == 9000) ? 0.0 : cos(fVal); + if (nRotation100 < 0_deg100) + nRotation100 = (36000_deg100 + nRotation100) % 36000_deg100; + if (nRotation100 % 18000_deg100 == 0_deg100) + nRotation100 = 0_deg100; // prevents endless loop + while (nRotation100 > 9000_deg100) + nRotation100 = 18000_deg100 - (nRotation100 % 18000_deg100); + + double fVal = toRadians(nRotation100); + double fCos = (nRotation100 == 9000_deg100) ? 0.0 : cos(fVal); double fSin = sin(fVal); double fWidthHalf = static_cast(rSize.Width()) / 2.0; diff --git a/tools/source/generic/point.cxx b/tools/source/generic/point.cxx index 7308d25f7878..e9c3bd842a15 100644 --- a/tools/source/generic/point.cxx +++ b/tools/source/generic/point.cxx @@ -70,7 +70,7 @@ void Point::RotateAround( tools::Long& rX, tools::Long& rY, } else { - double nRealOrientation = nOrientation.get() * F_PI1800; + double nRealOrientation = toRadians(nOrientation); double nCos = cos( nRealOrientation ); double nSin = sin( nRealOrientation ); diff --git a/tools/source/generic/poly.cxx b/tools/source/generic/poly.cxx index 6a9aff2be250..13d2df0e47ef 100644 --- a/tools/source/generic/poly.cxx +++ b/tools/source/generic/poly.cxx @@ -1404,7 +1404,7 @@ void Polygon::Rotate( const Point& rCenter, Degree10 nAngle10 ) if( nAngle10 ) { - const double fAngle = F_PI1800 * nAngle10.get(); + const double fAngle = toRadians(nAngle10); Rotate( rCenter, sin( fAngle ), cos( fAngle ) ); } } diff --git a/tools/source/generic/poly2.cxx b/tools/source/generic/poly2.cxx index 631e88caf401..c6d0a46032c8 100644 --- a/tools/source/generic/poly2.cxx +++ b/tools/source/generic/poly2.cxx @@ -261,7 +261,7 @@ void PolyPolygon::Rotate( const Point& rCenter, Degree10 nAngle10 ) if( nAngle10 ) { - const double fAngle = F_PI1800 * nAngle10.get(); + const double fAngle = toRadians(nAngle10); Rotate( rCenter, sin( fAngle ), cos( fAngle ) ); } } diff --git a/vcl/quartz/ctfonts.cxx b/vcl/quartz/ctfonts.cxx index f7c922b8aa9e..99b9066d3a0a 100644 --- a/vcl/quartz/ctfonts.cxx +++ b/vcl/quartz/ctfonts.cxx @@ -41,11 +41,6 @@ #include #include -static double toRadian(int nDegree) -{ - return nDegree * (M_PI / 1800.0); -} - CoreTextStyle::CoreTextStyle(const vcl::font::PhysicalFontFace& rPFF, const vcl::font::FontSelectPattern& rFSP) : LogicalFontInstance(rPFF, rFSP) , mfFontStretch( 1.0 ) @@ -56,7 +51,7 @@ CoreTextStyle::CoreTextStyle(const vcl::font::PhysicalFontFace& rPFF, const vcl: double fScaledFontHeight = rFSP.mfExactHeight; // convert font rotation to radian - mfFontRotation = toRadian(rFSP.mnOrientation.get()); + mfFontRotation = toRadians(rFSP.mnOrientation); // dummy matrix so we can use CGAffineTransformConcat() below CGAffineTransform aMatrix = CGAffineTransformMakeTranslation(0, 0); @@ -90,7 +85,7 @@ CoreTextStyle::CoreTextStyle(const vcl::font::PhysicalFontFace& rPFF, const vcl: (rFSP.GetItalic() == ITALIC_OBLIQUE)) && (rPFF.GetItalic() == ITALIC_NONE)) { - aMatrix = CGAffineTransformConcat(aMatrix, CGAffineTransformMake(1, 0, toRadian(120), 1, 0, 0)); + aMatrix = CGAffineTransformConcat(aMatrix, CGAffineTransformMake(1, 0, basegfx::deg2rad(12), 1, 0, 0)); } CTFontDescriptorRef pFontDesc = reinterpret_cast(rPFF.GetFontId()); diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx index 81f581d6ff78..ae07357cb0c1 100644 --- a/vcl/skia/gdiimpl.cxx +++ b/vcl/skia/gdiimpl.cxx @@ -2205,7 +2205,7 @@ bool SkiaSalGraphicsImpl::implDrawGradient(const basegfx::B2DPolyPolygon& rPolyP return true; } -static double toRadian(Degree10 degree10th) { return (3600 - degree10th.get()) * M_PI / 1800.0; } +static double toRadian(Degree10 degree10th) { return toRadians(3600_deg10 - degree10th); } static double toCos(Degree10 degree10th) { return SkScalarCos(toRadian(degree10th)); } static double toSin(Degree10 degree10th) { return SkScalarSin(toRadian(degree10th)); } diff --git a/vcl/source/bitmap/bitmappaint.cxx b/vcl/source/bitmap/bitmappaint.cxx index e06f96e8abd7..034fd5738a2a 100644 --- a/vcl/source/bitmap/bitmappaint.cxx +++ b/vcl/source/bitmap/bitmappaint.cxx @@ -363,8 +363,8 @@ bool Bitmap::Rotate(Degree10 nAngle10, const Color& rFillColor) if (pWriteAcc) { const BitmapColor aFillColor(pWriteAcc->GetBestMatchingColor(rFillColor)); - const double fCosAngle = cos(nAngle10.get() * F_PI1800); - const double fSinAngle = sin(nAngle10.get() * F_PI1800); + const double fCosAngle = cos(toRadians(nAngle10)); + const double fSinAngle = sin(toRadians(nAngle10)); const double fXMin = aNewBound.Left(); const double fYMin = aNewBound.Top(); const tools::Long nWidth = aSizePix.Width(); diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx index 86e020b92dac..3607a81ec2e8 100644 --- a/vcl/source/gdi/gdimtf.cxx +++ b/vcl/source/gdi/gdimtf.cxx @@ -825,7 +825,7 @@ void GDIMetaFile::Rotate( Degree10 nAngle10 ) GDIMetaFile aMtf; ScopedVclPtrInstance< VirtualDevice > aMapVDev; - const double fAngle = F_PI1800 * nAngle10.get(); + const double fAngle = toRadians(nAngle10); const double fSin = sin( fAngle ); const double fCos = cos( fAngle ); tools::Rectangle aRect( Point(), GetPrefSize() ); diff --git a/vcl/source/gdi/gradient.cxx b/vcl/source/gdi/gradient.cxx index 899861cfc222..b94223a427c4 100644 --- a/vcl/source/gdi/gradient.cxx +++ b/vcl/source/gdi/gradient.cxx @@ -201,7 +201,7 @@ void Gradient::GetBoundRect( const tools::Rectangle& rRect, tools::Rectangle& rB if( GetStyle() == GradientStyle::Linear || GetStyle() == GradientStyle::Axial ) { - const double fAngle = nAngle.get() * F_PI1800; + const double fAngle = toRadians(nAngle); const double fWidth = aRect.GetWidth(); const double fHeight = aRect.GetHeight(); double fDX = fWidth * fabs( cos( fAngle ) ) + @@ -222,7 +222,7 @@ void Gradient::GetBoundRect( const tools::Rectangle& rRect, tools::Rectangle& rB { if( GetStyle() == GradientStyle::Square || GetStyle() == GradientStyle::Rect ) { - const double fAngle = nAngle.get() * F_PI1800; + const double fAngle = toRadians(nAngle); const double fWidth = aRect.GetWidth(); const double fHeight = aRect.GetHeight(); double fDX = fWidth * fabs( cos( fAngle ) ) + fHeight * fabs( sin( fAngle ) ); diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index 6aa8cb0eec73..48dda1916a0f 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -7138,7 +7138,7 @@ void PDFWriterImpl::drawTextLine( const Point& rPos, tools::Long nWidth, FontStr aLine.append( "q " ); // rotate and translate matrix - double fAngle = static_cast(m_aCurrentPDFState.m_aFont.GetOrientation().get()) * M_PI / 1800.0; + double fAngle = toRadians(m_aCurrentPDFState.m_aFont.GetOrientation()); Matrix3 aMat; aMat.rotate( fAngle ); aMat.translate( aPos.X(), aPos.Y() ); diff --git a/vcl/source/outdev/hatch.cxx b/vcl/source/outdev/hatch.cxx index 89e89f8a1db4..160aa904ffd6 100644 --- a/vcl/source/outdev/hatch.cxx +++ b/vcl/source/outdev/hatch.cxx @@ -236,7 +236,7 @@ void OutputDevice::CalcHatchValues( const tools::Rectangle& rRect, tools::Long n } else if( nAngle >= Degree10(-450) && nAngle <= 450_deg10 ) { - const double fAngle = F_PI1800 * std::abs( nAngle.get() ); + const double fAngle = std::abs( toRadians(nAngle) ); const double fTan = tan( fAngle ); const tools::Long nYOff = FRound( ( rRect.Right() - rRect.Left() ) * fTan ); tools::Long nPY; @@ -269,7 +269,7 @@ void OutputDevice::CalcHatchValues( const tools::Rectangle& rRect, tools::Long n } else { - const double fAngle = F_PI1800 * std::abs( nAngle.get() ); + const double fAngle = std::abs( toRadians(nAngle) ); const double fTan = tan( fAngle ); const tools::Long nXOff = FRound( ( rRect.Bottom() - rRect.Top() ) / fTan ); tools::Long nPX; diff --git a/vcl/source/outdev/textline.cxx b/vcl/source/outdev/textline.cxx index 5fe1538f37f4..c4fcb33bf5d0 100644 --- a/vcl/source/outdev/textline.cxx +++ b/vcl/source/outdev/textline.cxx @@ -759,7 +759,7 @@ void OutputDevice::ImplDrawTextLine( tools::Long nX, tools::Long nY, { tools::Long nXAdd = nWidth - nDistX; if( mpFontInstance->mnOrientation ) - nXAdd = FRound( nXAdd * cos( mpFontInstance->mnOrientation.get() * F_PI1800 ) ); + nXAdd = FRound( nXAdd * cos( toRadians(mpFontInstance->mnOrientation) ) ); nX += nXAdd - 1; } @@ -831,7 +831,7 @@ void OutputDevice::ImplDrawTextLines( SalLayout& rSalLayout, FontStrikeout eStri if( mpFontInstance->mnOrientation ) { const tools::Long nDY = aPos.Y() - aStartPt.Y(); - const double fRad = mpFontInstance->mnOrientation.get() * F_PI1800; + const double fRad = toRadians(mpFontInstance->mnOrientation); nDist = FRound( nDist*cos(fRad) - nDY*sin(fRad) ); } } diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx index 35e352555a10..b14c018652a4 100644 --- a/vcl/unx/generic/gdi/cairotextrender.cxx +++ b/vcl/unx/generic/gdi/cairotextrender.cxx @@ -95,7 +95,7 @@ namespace double toRadian(Degree10 nDegree10th) { - return (3600_deg10 - nDegree10th).get() * M_PI / 1800.0; + return toRadians(3600_deg10 - nDegree10th); } cairo_t* syncCairoContext(cairo_t* cr) diff --git a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx index 5754e2e6448c..29fca5443a6c 100644 --- a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx +++ b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx @@ -418,7 +418,7 @@ FreetypeFont::FreetypeFont(FreetypeFontInstance& rFontInstance, const std::share if( rFSD.mnOrientation ) { - const double dRad = rFSD.mnOrientation.get() * ( 2 * M_PI / 3600.0 ); + const double dRad = toRadians(rFSD.mnOrientation); mnCos = static_cast( 0x10000 * cos( dRad ) + 0.5 ); mnSin = static_cast( 0x10000 * sin( dRad ) + 0.5 ); } diff --git a/xmloff/source/text/XMLTextFrameContext.cxx b/xmloff/source/text/XMLTextFrameContext.cxx index 0100a25ef03e..354bda7c8ce7 100644 --- a/xmloff/source/text/XMLTextFrameContext.cxx +++ b/xmloff/source/text/XMLTextFrameContext.cxx @@ -1030,7 +1030,7 @@ XMLTextFrameContext_Impl::XMLTextFrameContext_Impl( // CAUTION-II: due to tdf#115782 it is better for current ODF to indeed use it // with the wrong orientation as in all other cases - ARGH! We will need to // correct this in future ODF ASAP! For now, mirror the rotation here AGAIN - const double fRotate(aDecomposedTransform.getRotate() * (-1800.0/M_PI)); + const double fRotate(-basegfx::rad2deg<10>(aDecomposedTransform.getRotate())); nRotation = static_cast< sal_Int16 >(basegfx::fround(fRotate) % 3600); // tdf#115529 may be negative, with the above modulo maximal -3599, so diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx index b3a26d955ee2..732c119cdb58 100644 --- a/xmloff/source/text/txtparae.cxx +++ b/xmloff/source/text/txtparae.cxx @@ -3080,7 +3080,7 @@ void XMLTextParagraphExport::_exportTextGraphic( // in XMLTextFrameContext_Impl::XMLTextFrameContext_Impl and #i78696# // CAUTION-II: due to tdf#115782 it is better for current ODF to indeed write it with the wrong // orientation as in all other cases - ARGH! We will need to correct this in future ODF ASAP! - const double fRotate(static_cast< double >(nRotation) * (M_PI/1800.0)); + const double fRotate(basegfx::deg2rad<10>(nRotation)); // transform to rotation center which is the object's center aSdXMLImExTransform2D.AddTranslate(-aCenter); -- cgit