summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel <noel.grandin@collabora.co.uk>2020-12-22 15:42:08 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-01-02 15:26:38 +0100
commit11e52fe2979b0947814a49b9c17ec373795cbf8e (patch)
tree48268579f052b7fdfcc2c334fffe8c91d29cb234
parent610ceb05025c9c7a9a34dddcb0dac506b8eab441 (diff)
introduce Degree100 strong_int type
Change-Id: I78f837a1340be0ca5c49097f543a481b7b43a632 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108367 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--chart2/source/controller/dialogs/res_DataLabel.cxx6
-rw-r--r--chart2/source/controller/dialogs/tp_AxisLabel.cxx4
-rw-r--r--chart2/source/controller/dialogs/tp_AxisLabel.hxx3
-rw-r--r--chart2/source/controller/dialogs/tp_PolarOptions.cxx2
-rw-r--r--chart2/source/controller/dialogs/tp_TitleRotation.cxx4
-rw-r--r--chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx6
-rw-r--r--chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx6
-rw-r--r--chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx4
-rw-r--r--chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx4
-rw-r--r--chart2/source/controller/itemsetwrapper/TitleItemConverter.cxx6
-rw-r--r--chart2/source/controller/main/DrawCommandDispatch.cxx2
-rw-r--r--chart2/source/view/main/ChartItemPool.cxx4
-rw-r--r--cui/source/tabpages/transfrm.cxx7
-rw-r--r--filter/source/msfilter/escherex.cxx8
-rw-r--r--filter/source/msfilter/msdffimp.cxx70
-rw-r--r--filter/source/msfilter/svdfppt.cxx12
-rw-r--r--include/filter/msfilter/msdffimp.hxx5
-rw-r--r--include/o3tl/strong_int.hxx6
-rw-r--r--include/oox/export/drawingml.hxx4
-rw-r--r--include/oox/vml/vmlformatting.hxx3
-rw-r--r--include/svx/EnhancedCustomShape2d.hxx5
-rw-r--r--include/svx/algitem.hxx5
-rw-r--r--include/svx/dialcontrol.hxx15
-rw-r--r--include/svx/obj3d.hxx2
-rw-r--r--include/svx/scene3d.hxx2
-rw-r--r--include/svx/sdangitm.hxx6
-rw-r--r--include/svx/svdedtv.hxx10
-rw-r--r--include/svx/svdglev.hxx2
-rw-r--r--include/svx/svdglue.hxx17
-rw-r--r--include/svx/svdhdl.hxx4
-rw-r--r--include/svx/svdmodel.hxx3
-rw-r--r--include/svx/svdoashp.hxx6
-rw-r--r--include/svx/svdobj.hxx17
-rw-r--r--include/svx/svdocirc.hxx20
-rw-r--r--include/svx/svdoedge.hxx4
-rw-r--r--include/svx/svdogrp.hxx12
-rw-r--r--include/svx/svdomeas.hxx6
-rw-r--r--include/svx/svdopath.hxx4
-rw-r--r--include/svx/svdorect.hxx4
-rw-r--r--include/svx/svdotext.hxx8
-rw-r--r--include/svx/svdovirt.hxx12
-rw-r--r--include/svx/svdpoev.hxx2
-rw-r--r--include/svx/svdsnpv.hxx13
-rw-r--r--include/svx/svdtrans.hxx15
-rw-r--r--include/svx/sxciaitm.hxx4
-rw-r--r--include/svx/sxmtfitm.hxx2
-rw-r--r--include/tools/degree.hxx22
-rw-r--r--oox/source/drawingml/shape.cxx5
-rw-r--r--oox/source/export/drawingml.cxx31
-rw-r--r--oox/source/shape/WpsContext.cxx4
-rw-r--r--oox/source/vml/vmlformatting.cxx10
-rw-r--r--oox/source/vml/vmlshape.cxx12
-rw-r--r--reportdesign/source/ui/report/ReportSection.cxx2
-rw-r--r--sc/inc/attrib.hxx2
-rw-r--r--sc/inc/patattr.hxx3
-rw-r--r--sc/qa/unit/scshapetest.cxx19
-rw-r--r--sc/qa/unit/ucalc.cxx6
-rw-r--r--sc/source/core/data/attarray.cxx4
-rw-r--r--sc/source/core/data/attrib.cxx2
-rw-r--r--sc/source/core/data/column2.cxx10
-rw-r--r--sc/source/core/data/docpool.cxx2
-rw-r--r--sc/source/core/data/document.cxx4
-rw-r--r--sc/source/core/data/patattr.cxx22
-rw-r--r--sc/source/core/data/table2.cxx4
-rw-r--r--sc/source/core/tool/autoform.cxx2
-rw-r--r--sc/source/filter/excel/xestyle.cxx2
-rw-r--r--sc/source/filter/excel/xichart.cxx8
-rw-r--r--sc/source/filter/excel/xiescher.cxx20
-rw-r--r--sc/source/filter/excel/xistyle.cxx2
-rw-r--r--sc/source/filter/excel/xlchart.cxx4
-rw-r--r--sc/source/filter/excel/xltools.cxx8
-rw-r--r--sc/source/filter/html/htmlexp2.cxx2
-rw-r--r--sc/source/filter/inc/stylesbuffer.hxx2
-rw-r--r--sc/source/filter/inc/xltools.hxx5
-rw-r--r--sc/source/filter/oox/stylesbuffer.cxx6
-rw-r--r--sc/source/filter/xcl97/xcl97rec.cxx12
-rw-r--r--sc/source/filter/xml/xmlexprt.cxx2
-rw-r--r--sc/source/ui/Accessibility/AccessibleCell.cxx2
-rw-r--r--sc/source/ui/Accessibility/AccessibleText.cxx2
-rw-r--r--sc/source/ui/drawfunc/fuconarc.cxx4
-rw-r--r--sc/source/ui/drawfunc/fuconcustomshape.cxx2
-rw-r--r--sc/source/ui/inc/output.hxx3
-rw-r--r--sc/source/ui/sidebar/AlignmentPropertyPanel.cxx6
-rw-r--r--sc/source/ui/unoobj/afmtuno.cxx6
-rw-r--r--sc/source/ui/unoobj/cellsuno.cxx8
-rw-r--r--sc/source/ui/unoobj/styleuno.cxx8
-rw-r--r--sc/source/ui/view/output.cxx12
-rw-r--r--sc/source/ui/view/output2.cxx36
-rw-r--r--sd/qa/unit/uiimpress.cxx2
-rw-r--r--sd/source/ui/app/optsitem.cxx4
-rw-r--r--sd/source/ui/dlg/copydlg.cxx4
-rw-r--r--sd/source/ui/dlg/tpoption.cxx4
-rw-r--r--sd/source/ui/func/fuconarc.cxx8
-rw-r--r--sd/source/ui/func/fuconcs.cxx2
-rw-r--r--sd/source/ui/func/fucopy.cxx3
-rw-r--r--sd/source/ui/func/fusel.cxx12
-rw-r--r--sd/source/ui/inc/optsitem.hxx1
-rw-r--r--sd/source/ui/view/frmview.cxx8
-rw-r--r--svx/inc/dragmt3d.hxx4
-rw-r--r--svx/inc/sxcaitm.hxx2
-rw-r--r--svx/inc/sxmtaitm.hxx2
-rw-r--r--svx/inc/sxroaitm.hxx2
-rw-r--r--svx/inc/sxrooitm.hxx2
-rw-r--r--svx/inc/sxsaitm.hxx2
-rw-r--r--svx/inc/sxsalitm.hxx4
-rw-r--r--svx/inc/sxsoitm.hxx4
-rw-r--r--svx/qa/unit/customshapes.cxx2
-rw-r--r--svx/source/customshapes/EnhancedCustomShape2d.cxx6
-rw-r--r--svx/source/customshapes/EnhancedCustomShape3d.cxx4
-rw-r--r--svx/source/customshapes/EnhancedCustomShapeEngine.cxx10
-rw-r--r--svx/source/dialog/dialcontrol.cxx23
-rw-r--r--svx/source/dialog/imapwnd.cxx8
-rw-r--r--svx/source/engine3d/dragmt3d.cxx8
-rw-r--r--svx/source/engine3d/obj3d.cxx4
-rw-r--r--svx/source/engine3d/scene3d.cxx4
-rw-r--r--svx/source/items/algitem.cxx12
-rw-r--r--svx/source/items/autoformathelper.cxx4
-rw-r--r--svx/source/sdr/contact/viewcontactofgraphic.cxx6
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx2
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrcircobj.cxx2
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx4
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrole2obj.cxx2
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrpathobj.cxx2
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrrectobj.cxx2
-rw-r--r--svx/source/sdr/properties/circleproperties.cxx2
-rw-r--r--svx/source/sidebar/possize/PosSizePropertyPanel.cxx11
-rw-r--r--svx/source/svdraw/svdattr.cxx6
-rw-r--r--svx/source/svdraw/svddrgm1.hxx12
-rw-r--r--svx/source/svdraw/svddrgmt.cxx144
-rw-r--r--svx/source/svdraw/svdedtv1.cxx58
-rw-r--r--svx/source/svdraw/svdedxv.cxx2
-rw-r--r--svx/source/svdraw/svdfmtf.cxx17
-rw-r--r--svx/source/svdraw/svdglev.cxx6
-rw-r--r--svx/source/svdraw/svdglue.cxx90
-rw-r--r--svx/source/svdraw/svdhdl.cxx30
-rw-r--r--svx/source/svdraw/svdmodel.cxx4
-rw-r--r--svx/source/svdraw/svdmrkv.cxx4
-rw-r--r--svx/source/svdraw/svdoashp.cxx49
-rw-r--r--svx/source/svdraw/svdobj.cxx46
-rw-r--r--svx/source/svdraw/svdocirc.cxx143
-rw-r--r--svx/source/svdraw/svdoedge.cxx4
-rw-r--r--svx/source/svdraw/svdograf.cxx12
-rw-r--r--svx/source/svdraw/svdogrp.cxx20
-rw-r--r--svx/source/svdraw/svdomeas.cxx34
-rw-r--r--svx/source/svdraw/svdopath.cxx92
-rw-r--r--svx/source/svdraw/svdorect.cxx28
-rw-r--r--svx/source/svdraw/svdotext.cxx44
-rw-r--r--svx/source/svdraw/svdotxdr.cxx8
-rw-r--r--svx/source/svdraw/svdotxed.cxx2
-rw-r--r--svx/source/svdraw/svdotxtr.cxx60
-rw-r--r--svx/source/svdraw/svdouno.cxx8
-rw-r--r--svx/source/svdraw/svdovirt.cxx16
-rw-r--r--svx/source/svdraw/svdpdf.cxx5
-rw-r--r--svx/source/svdraw/svdpoev.cxx6
-rw-r--r--svx/source/svdraw/svdtrans.cxx75
-rw-r--r--svx/source/table/viewcontactoftableobj.cxx4
-rw-r--r--svx/source/tbxctrls/grafctrl.cxx6
-rw-r--r--svx/source/uitest/sdrobject.cxx4
-rw-r--r--svx/source/unodraw/unoshape.cxx28
-rw-r--r--sw/inc/dcontact.hxx8
-rw-r--r--sw/source/core/draw/dcontact.cxx8
-rw-r--r--sw/source/core/draw/dflyobj.cxx16
-rw-r--r--sw/source/core/frmedt/feshview.cxx4
-rw-r--r--sw/source/core/inc/dflyobj.hxx4
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx2
-rw-r--r--sw/source/filter/ww8/docxsdrexport.cxx23
-rw-r--r--sw/source/filter/ww8/rtfsdrexport.cxx2
-rw-r--r--sw/source/filter/ww8/wrtw8esh.cxx4
-rw-r--r--sw/source/filter/ww8/ww8graf.cxx4
-rw-r--r--sw/source/filter/ww8/ww8par.cxx20
-rw-r--r--sw/source/ui/frmdlg/frmpage.cxx2
-rw-r--r--sw/source/uibase/ribbar/concustomshape.cxx2
-rw-r--r--sw/source/uibase/shells/beziersh.cxx2
-rw-r--r--sw/source/uibase/shells/frmsh.cxx4
-rw-r--r--sw/source/uibase/shells/grfsh.cxx2
-rw-r--r--writerfilter/source/dmapper/GraphicImport.cxx6
-rw-r--r--writerfilter/source/rtftok/rtfsdrimport.cxx3
177 files changed, 1053 insertions, 1012 deletions
diff --git a/chart2/source/controller/dialogs/res_DataLabel.cxx b/chart2/source/controller/dialogs/res_DataLabel.cxx
index c8dee6c1b750..7934e90871dc 100644
--- a/chart2/source/controller/dialogs/res_DataLabel.cxx
+++ b/chart2/source/controller/dialogs/res_DataLabel.cxx
@@ -305,7 +305,7 @@ void DataLabelResources::FillItemSet( SfxItemSet* rOutAttrs ) const
if( m_xDC_Dial->IsVisible() )
{
- sal_Int32 nDegrees = m_xDC_Dial->GetRotation();
+ Degree100 nDegrees = m_xDC_Dial->GetRotation();
rOutAttrs->Put(SdrAngleItem( SCHATTR_TEXT_DEGREES, nDegrees ) );
}
}
@@ -355,11 +355,11 @@ void DataLabelResources::Reset(const SfxItemSet& rInAttrs)
if( rInAttrs.GetItemState( SCHATTR_TEXT_DEGREES, true, &pPoolItem ) == SfxItemState::SET )
{
- sal_Int32 nDegrees = static_cast< const SdrAngleItem * >( pPoolItem )->GetValue();
+ Degree100 nDegrees = static_cast< const SdrAngleItem * >( pPoolItem )->GetValue();
m_xDC_Dial->SetRotation( nDegrees );
}
else
- m_xDC_Dial->SetRotation( 0 );
+ m_xDC_Dial->SetRotation( 0_deg100 );
EnableControls();
}
diff --git a/chart2/source/controller/dialogs/tp_AxisLabel.cxx b/chart2/source/controller/dialogs/tp_AxisLabel.cxx
index afe98676545d..de028152e386 100644
--- a/chart2/source/controller/dialogs/tp_AxisLabel.cxx
+++ b/chart2/source/controller/dialogs/tp_AxisLabel.cxx
@@ -93,7 +93,7 @@ bool SchAxisLabelTabPage::FillItemSet( SfxItemSet* rOutAttrs )
if( m_xCtrlDial->HasRotation() )
{
- sal_Int32 nDegrees = bStacked ? 0 : m_xCtrlDial->GetRotation();
+ Degree100 nDegrees = bStacked ? 0_deg100 : m_xCtrlDial->GetRotation();
if( !m_bHasInitialDegrees || (nDegrees != m_nInitialDegrees) )
rOutAttrs->Put( SdrAngleItem( SCHATTR_TEXT_DEGREES, nDegrees ) );
}
@@ -155,7 +155,7 @@ void SchAxisLabelTabPage::Reset( const SfxItemSet* rInAttrs )
// Rotation as orient item or in degrees ----------
// check new degree item
- m_nInitialDegrees = 0;
+ m_nInitialDegrees = 0_deg100;
aState = rInAttrs->GetItemState( SCHATTR_TEXT_DEGREES, false, &pPoolItem );
if( aState == SfxItemState::SET )
m_nInitialDegrees = static_cast< const SdrAngleItem * >( pPoolItem )->GetValue();
diff --git a/chart2/source/controller/dialogs/tp_AxisLabel.hxx b/chart2/source/controller/dialogs/tp_AxisLabel.hxx
index 370eda70d6b0..0923c91118d5 100644
--- a/chart2/source/controller/dialogs/tp_AxisLabel.hxx
+++ b/chart2/source/controller/dialogs/tp_AxisLabel.hxx
@@ -20,6 +20,7 @@
#include <sfx2/tabdlg.hxx>
#include <svx/dialcontrol.hxx>
+#include <tools/degree.hxx>
namespace chart { class TextDirectionListBox; }
namespace weld {
@@ -39,7 +40,7 @@ class SchAxisLabelTabPage : public SfxTabPage
private:
bool m_bShowStaggeringControls;
- sal_Int32 m_nInitialDegrees;
+ Degree100 m_nInitialDegrees;
bool m_bHasInitialDegrees; /// false = DialControl in tristate
bool m_bInitialStacking;
bool m_bHasInitialStacking; /// false = checkbox in tristate
diff --git a/chart2/source/controller/dialogs/tp_PolarOptions.cxx b/chart2/source/controller/dialogs/tp_PolarOptions.cxx
index 865736b3b66d..59422b3a613e 100644
--- a/chart2/source/controller/dialogs/tp_PolarOptions.cxx
+++ b/chart2/source/controller/dialogs/tp_PolarOptions.cxx
@@ -74,7 +74,7 @@ void PolarOptionsTabPage::Reset(const SfxItemSet* rInAttrs)
if (rInAttrs->GetItemState(SCHATTR_STARTING_ANGLE, true, &pPoolItem) == SfxItemState::SET)
{
- sal_Int32 nTmp = static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
+ Degree100 nTmp = static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
m_xAngleDial->SetRotation( nTmp );
}
else
diff --git a/chart2/source/controller/dialogs/tp_TitleRotation.cxx b/chart2/source/controller/dialogs/tp_TitleRotation.cxx
index d2e1e02ab679..ede27edbac9d 100644
--- a/chart2/source/controller/dialogs/tp_TitleRotation.cxx
+++ b/chart2/source/controller/dialogs/tp_TitleRotation.cxx
@@ -94,7 +94,7 @@ bool SchAlignmentTabPage::FillItemSet(SfxItemSet* rOutAttrs)
bool bStacked = m_xCbStacked->get_active();
rOutAttrs->Put( SfxBoolItem( SCHATTR_TEXT_STACKED, bStacked ) );
- sal_Int32 nDegrees = bStacked ? 0 : m_xCtrlDial->GetRotation();
+ Degree100 nDegrees = bStacked ? 0_deg100 : m_xCtrlDial->GetRotation();
rOutAttrs->Put( SdrAngleItem( SCHATTR_TEXT_DEGREES, nDegrees ) );
SvxFrameDirection aDirection( m_xLbTextDirection->get_active_id() );
@@ -107,7 +107,7 @@ void SchAlignmentTabPage::Reset(const SfxItemSet* rInAttrs)
{
const SfxPoolItem* pItem = GetItem( *rInAttrs, SCHATTR_TEXT_DEGREES );
- sal_Int32 nDegrees = pItem ? static_cast<const SdrAngleItem*>(pItem)->GetValue() : 0;
+ Degree100 nDegrees = pItem ? static_cast<const SdrAngleItem*>(pItem)->GetValue() : 0_deg100;
m_xCtrlDial->SetRotation( nDegrees );
pItem = GetItem( *rInAttrs, SCHATTR_TEXT_STACKED );
diff --git a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
index 7c31c9693ab7..297b3de704ee 100644
--- a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
@@ -392,8 +392,8 @@ void AxisItemConverter::FillSpecialItem( sal_uInt16 nWhichId, SfxItemSet & rOutI
if( GetPropertySet()->getPropertyValue( "TextRotation" ) >>= fVal )
{
- rOutItemSet.Put( SdrAngleItem( nWhichId, static_cast< sal_Int32 >(
- ::rtl::math::round( fVal * 100.0 ) ) ));
+ rOutItemSet.Put( SdrAngleItem( nWhichId, Degree100(static_cast< sal_Int32 >(
+ ::rtl::math::round( fVal * 100.0 )) ) ));
}
}
break;
@@ -881,7 +881,7 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxItemSet
// convert int to double (divided by 100)
double fVal = static_cast< double >(
static_cast< const SdrAngleItem & >(
- rItemSet.Get( nWhichId )).GetValue()) / 100.0;
+ rItemSet.Get( nWhichId )).GetValue().get()) / 100.0;
double fOldVal = 0.0;
bool bPropExisted =
( GetPropertySet()->getPropertyValue( "TextRotation" ) >>= fOldVal );
diff --git a/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx b/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx
index 97f66d4c8431..7693c6ccfa37 100644
--- a/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx
@@ -550,7 +550,7 @@ bool DataPointItemConverter::ApplySpecialItem(
{
double fValue = static_cast< double >(
static_cast< const SdrAngleItem & >(
- rItemSet.Get( nWhichId )).GetValue()) / 100.0;
+ rItemSet.Get( nWhichId )).GetValue().get()) / 100.0;
double fOldValue = 0.0;
bool bPropExisted =
( GetPropertySet()->getPropertyValue( "TextRotation" ) >>= fOldValue );
@@ -800,8 +800,8 @@ void DataPointItemConverter::FillSpecialItem(
if( GetPropertySet()->getPropertyValue( "TextRotation" ) >>= fValue )
{
- rOutItemSet.Put( SdrAngleItem( nWhichId, static_cast< sal_Int32 >(
- ::rtl::math::round( fValue * 100.0 ) ) ));
+ rOutItemSet.Put( SdrAngleItem( nWhichId, Degree100(static_cast< sal_Int32 >(
+ ::rtl::math::round( fValue * 100.0 ) ) )));
}
}
break;
diff --git a/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx b/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx
index 3c8fbcca9990..fc25407d1a58 100644
--- a/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx
@@ -277,7 +277,7 @@ bool SeriesOptionsItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const Sf
{
if( m_bSupportingStartingAngle )
{
- m_nStartingAngle = static_cast< const SdrAngleItem & >( rItemSet.Get( nWhichId )).GetValue() / 100;
+ m_nStartingAngle = static_cast< const SdrAngleItem & >( rItemSet.Get( nWhichId )).GetValue().get() / 100;
uno::Reference< beans::XPropertySet > xDiagramProperties( ChartModelHelper::findDiagram(m_xChartModel), uno::UNO_QUERY );
if( xDiagramProperties.is() )
{
@@ -399,7 +399,7 @@ void SeriesOptionsItemConverter::FillSpecialItem(
case SCHATTR_STARTING_ANGLE:
{
if( m_bSupportingStartingAngle )
- rOutItemSet.Put( SdrAngleItem(nWhichId,m_nStartingAngle*100));
+ rOutItemSet.Put( SdrAngleItem(nWhichId, Degree100(m_nStartingAngle*100)) );
break;
}
case SCHATTR_CLOCKWISE:
diff --git a/chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx b/chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx
index dad6ba3b30ef..adc0b849414b 100644
--- a/chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx
@@ -489,7 +489,7 @@ bool TextLabelItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxIte
{
double fValue = static_cast<double>(
static_cast<const SdrAngleItem&>(
- rItemSet.Get(nWhichId)).GetValue()) / 100.0;
+ rItemSet.Get(nWhichId)).GetValue().get()) / 100.0;
double fOldValue = 0.0;
bool bPropExisted =
(GetPropertySet()->getPropertyValue("TextRotation") >>= fOldValue);
@@ -705,7 +705,7 @@ void TextLabelItemConverter::FillSpecialItem( sal_uInt16 nWhichId, SfxItemSet& r
if (GetPropertySet()->getPropertyValue("TextRotation") >>= fValue)
{
rOutItemSet.Put(
- SdrAngleItem(nWhichId, static_cast<sal_Int32>(rtl::math::round(fValue * 100.0))));
+ SdrAngleItem(nWhichId, Degree100(static_cast<sal_Int32>(rtl::math::round(fValue * 100.0)))));
}
}
break;
diff --git a/chart2/source/controller/itemsetwrapper/TitleItemConverter.cxx b/chart2/source/controller/itemsetwrapper/TitleItemConverter.cxx
index 6ca38785fb56..9109bc3ea3a1 100644
--- a/chart2/source/controller/itemsetwrapper/TitleItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/TitleItemConverter.cxx
@@ -169,7 +169,7 @@ bool TitleItemConverter::ApplySpecialItem(
// convert int to double (divided by 100)
double fVal = static_cast< double >(
static_cast< const SdrAngleItem & >(
- rItemSet.Get( nWhichId )).GetValue()) / 100.0;
+ rItemSet.Get( nWhichId )).GetValue().get()) / 100.0;
double fOldVal = 0.0;
bool bPropExisted =
( GetPropertySet()->getPropertyValue( "TextRotation" ) >>= fOldVal );
@@ -198,8 +198,8 @@ void TitleItemConverter::FillSpecialItem(
if( GetPropertySet()->getPropertyValue( "TextRotation" ) >>= fVal )
{
- rOutItemSet.Put( SdrAngleItem( nWhichId, static_cast< sal_Int32 >(
- ::rtl::math::round( fVal * 100.0 ) ) ));
+ rOutItemSet.Put( SdrAngleItem( nWhichId, Degree100(static_cast< sal_Int32 >(
+ ::rtl::math::round( fVal * 100.0 ) ) )));
}
}
break;
diff --git a/chart2/source/controller/main/DrawCommandDispatch.cxx b/chart2/source/controller/main/DrawCommandDispatch.cxx
index 53ed1cfc7a32..ef0bdfd5af5b 100644
--- a/chart2/source/controller/main/DrawCommandDispatch.cxx
+++ b/chart2/source/controller/main/DrawCommandDispatch.cxx
@@ -142,7 +142,7 @@ void DrawCommandDispatch::setAttributes( SdrObject* pObj )
EE_ITEMS_START, EE_ITEMS_END>{});
aDest.Set( rSource );
pObj->SetMergedItemSet( aDest );
- sal_Int32 nAngle = pSourceObj->GetRotateAngle();
+ Degree100 nAngle = pSourceObj->GetRotateAngle();
if ( nAngle )
pObj->NbcRotate( pObj->GetSnapRect().Center(), nAngle );
bAttributesAppliedFromGallery = true;
diff --git a/chart2/source/view/main/ChartItemPool.cxx b/chart2/source/view/main/ChartItemPool.cxx
index 4df7e269a56d..6af1c34c6ef6 100644
--- a/chart2/source/view/main/ChartItemPool.cxx
+++ b/chart2/source/view/main/ChartItemPool.cxx
@@ -63,7 +63,7 @@ ChartItemPool::ChartItemPool():
rPoolDefaults[SCHATTR_LEGEND_NO_OVERLAY - SCHATTR_START] = new SfxBoolItem(SCHATTR_LEGEND_NO_OVERLAY, true);
//text
- rPoolDefaults[SCHATTR_TEXT_DEGREES - SCHATTR_START] = new SdrAngleItem(SCHATTR_TEXT_DEGREES, 0);
+ rPoolDefaults[SCHATTR_TEXT_DEGREES - SCHATTR_START] = new SdrAngleItem(SCHATTR_TEXT_DEGREES, 0_deg100);
rPoolDefaults[SCHATTR_TEXT_STACKED - SCHATTR_START] = new SfxBoolItem(SCHATTR_TEXT_STACKED,false);
//statistic
@@ -142,7 +142,7 @@ ChartItemPool::ChartItemPool():
rPoolDefaults[SCHATTR_SPLINE_ORDER - SCHATTR_START] = new SfxInt32Item( SCHATTR_SPLINE_ORDER, 3 );
rPoolDefaults[SCHATTR_SPLINE_RESOLUTION - SCHATTR_START] = new SfxInt32Item( SCHATTR_SPLINE_RESOLUTION, 20 );
rPoolDefaults[SCHATTR_GROUP_BARS_PER_AXIS - SCHATTR_START] = new SfxBoolItem(SCHATTR_GROUP_BARS_PER_AXIS, false);
- rPoolDefaults[SCHATTR_STARTING_ANGLE - SCHATTR_START] = new SdrAngleItem( SCHATTR_STARTING_ANGLE, 9000 );
+ rPoolDefaults[SCHATTR_STARTING_ANGLE - SCHATTR_START] = new SdrAngleItem( SCHATTR_STARTING_ANGLE, 9000_deg100 );
rPoolDefaults[SCHATTR_CLOCKWISE - SCHATTR_START] = new SfxBoolItem( SCHATTR_CLOCKWISE, false );
rPoolDefaults[SCHATTR_MISSING_VALUE_TREATMENT - SCHATTR_START] = new SfxInt32Item(SCHATTR_MISSING_VALUE_TREATMENT, 0);
diff --git a/cui/source/tabpages/transfrm.cxx b/cui/source/tabpages/transfrm.cxx
index 142bd46e4d9b..de757f65991d 100644
--- a/cui/source/tabpages/transfrm.cxx
+++ b/cui/source/tabpages/transfrm.cxx
@@ -22,6 +22,7 @@
#include <algorithm>
#include <svx/EnhancedCustomShape2d.hxx>
+#include <svx/sdangitm.hxx>
#include <svx/svdundo.hxx>
#include <svx/svdview.hxx>
#include <svx/svdobj.hxx>
@@ -295,7 +296,7 @@ void SvxAngleTabPage::Reset(const SfxItemSet* rAttrs)
}
else
{
- m_xCtlAngle->SetRotation(0);
+ m_xCtlAngle->SetRotation(0_deg100);
}
m_xCtlAngle->SaveValue();
m_xMtrPosX->save_value();
@@ -461,7 +462,7 @@ bool SvxSlantTabPage::FillItemSet(SfxItemSet* rAttrs)
if (m_xMtrAngle->get_value_changed_from_saved())
{
sal_Int32 nValue = static_cast<sal_Int32>(m_xMtrAngle->get_value(FieldUnit::NONE));
- rAttrs->Put( SdrAngleItem( SID_ATTR_TRANSFORM_SHEAR, nValue ) );
+ rAttrs->Put( SdrAngleItem( SID_ATTR_TRANSFORM_SHEAR, Degree100(nValue) ) );
bModified = true;
}
@@ -606,7 +607,7 @@ void SvxSlantTabPage::Reset(const SfxItemSet* rAttrs)
if( pItem )
{
- m_xMtrAngle->set_value(static_cast<const SdrAngleItem*>(pItem)->GetValue(), FieldUnit::NONE);
+ m_xMtrAngle->set_value(static_cast<const SdrAngleItem*>(pItem)->GetValue().get(), FieldUnit::NONE);
}
else
{
diff --git a/filter/source/msfilter/escherex.cxx b/filter/source/msfilter/escherex.cxx
index 505e43d91fc1..bde712649af4 100644
--- a/filter/source/msfilter/escherex.cxx
+++ b/filter/source/msfilter/escherex.cxx
@@ -2102,12 +2102,12 @@ static sal_Int32 lcl_GetConnectorAdjustValue ( const XPolygon& rPoly, sal_uInt16
}
-static void lcl_Rotate(sal_Int32 nAngle, Point center, Point& pt)
+static void lcl_Rotate(Degree100 nAngle, Point center, Point& pt)
{
nAngle = NormAngle36000(nAngle);
int cs, sn;
- switch (nAngle)
+ switch (nAngle.get())
{
case 0:
cs =1;
@@ -2149,8 +2149,8 @@ static bool lcl_GetAngle(tools::Polygon &rPoly, ShapeFlag& rShapeFlags,sal_Int32
if ( nAngle )
{
Point center((aEnd.X()+aStart.X())>>1,(aEnd.Y()+aStart.Y())>>1);
- lcl_Rotate(-nAngle, center,p1);
- lcl_Rotate(-nAngle, center,p2);
+ lcl_Rotate(Degree100(-nAngle), center,p1);
+ lcl_Rotate(Degree100(-nAngle), center,p2);
}
if ( p1.X() > p2.X() )
{
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 442509617f91..bddc9c2552c2 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -383,12 +383,12 @@ void DffPropertyReader::ReadPropSet( SvStream& rIn, SvxMSDffClientData* pClientD
}
-sal_Int32 DffPropertyReader::Fix16ToAngle( sal_Int32 nContent )
+Degree100 DffPropertyReader::Fix16ToAngle( sal_Int32 nContent )
{
- sal_Int32 nAngle = 0;
+ Degree100 nAngle(0);
if ( nContent )
{
- nAngle = ( static_cast<sal_Int16>( nContent >> 16) * 100L ) + ( ( ( nContent & 0x0000ffff) * 100L ) >> 16 );
+ nAngle = Degree100(( static_cast<sal_Int16>( nContent >> 16) * 100L ) + ( ( ( nContent & 0x0000ffff) * 100L ) >> 16 ));
nAngle = NormAngle36000( -nAngle );
}
return nAngle;
@@ -1150,7 +1150,7 @@ static void GetShadeColors( const SvxMSDffManager& rManager, const DffPropertyRe
rIn.Seek( nPos );
}
-static void ApplyRectangularGradientAsBitmap( const SvxMSDffManager& rManager, SvStream& rIn, SfxItemSet& rSet, const std::vector< ShadeColor >& rShadeColors, const DffObjData& rObjData, sal_Int32 nFix16Angle )
+static void ApplyRectangularGradientAsBitmap( const SvxMSDffManager& rManager, SvStream& rIn, SfxItemSet& rSet, const std::vector< ShadeColor >& rShadeColors, const DffObjData& rObjData, Degree100 nFix16Angle )
{
Size aBitmapSizePixel( static_cast< sal_Int32 >( ( rObjData.aBoundRect.GetWidth() / 2540.0 ) * 90.0 ), // we will create a bitmap with 90 dpi
static_cast< sal_Int32 >( ( rObjData.aBoundRect.GetHeight() / 2540.0 ) * 90.0 ) );
@@ -1293,7 +1293,7 @@ static void ApplyRectangularGradientAsBitmap( const SvxMSDffManager& rManager, S
if ( bRotateWithShape )
{
// convert from 100th to 10th degrees
- aBitmapEx.Rotate( Degree10(nFix16Angle * 10), rShadeColors[ 0 ].aColor );
+ aBitmapEx.Rotate( toDegree10(nFix16Angle), rShadeColors[ 0 ].aColor );
BmpMirrorFlags nMirrorFlags = BmpMirrorFlags::NONE;
if ( rObjData.nSpFlags & ShapeFlag::FlipV )
@@ -2770,7 +2770,7 @@ void DffPropertyReader::CheckAndCorrectExcelTextRotation( SvStream& rIn, SfxItem
*pAny >>= fExtraTextRotateAngle;
if ( rManager.mnFix16Angle )
- fExtraTextRotateAngle += mnFix16Angle / 100.0;
+ fExtraTextRotateAngle += mnFix16Angle.get() / 100.0;
if ( rObjData.nSpFlags & ShapeFlag::FlipV )
fExtraTextRotateAngle -= 180.0;
@@ -2788,15 +2788,15 @@ void DffPropertyReader::ImportGradientColor( SfxItemSet& aSet, sal_uInt32 eMSO_F
//support this prop. So need some swap for the two color to keep fidelity with AOO and MS shape.
//So below var is defined.
sal_Int32 nChgColors = 0;
- sal_Int32 nAngle = GetPropertyValue( DFF_Prop_fillAngle, 0 );
- if(nAngle >= 0)
+ sal_Int32 nAngleFix16 = GetPropertyValue( DFF_Prop_fillAngle, 0 );
+ if(nAngleFix16 >= 0)
nChgColors ^= 1;
//Translate a MS clockwise(+) or count clockwise angle(-) into an AOO count clock wise angle
- nAngle=3600 - ( ( Fix16ToAngle(nAngle) + 5 ) / 10 );
+ Degree10 nAngle( 3600 - ( ( Fix16ToAngle(nAngleFix16).get() + 5 ) / 10 ) );
//Make sure this angle belongs to 0~3600
- while ( nAngle >= 3600 ) nAngle -= 3600;
- while ( nAngle < 0 ) nAngle += 3600;
+ while ( nAngle >= Degree10(3600) ) nAngle -= Degree10(3600);
+ while ( nAngle < Degree10(0) ) nAngle += Degree10(3600);
//Rotate angle
if ( mbRotateGranientFillWithAngle )
@@ -2807,10 +2807,10 @@ void DffPropertyReader::ImportGradientColor( SfxItemSet& aSet, sal_uInt32 eMSO_F
nRotateAngle = ( nRotateAngle + 5 ) / 10 ;//round up
//nAngle is a clockwise angle. If nRotateAngle is a clockwise angle, then gradient needs to be rotated a little less
//or it needs to be rotated a little more
- nAngle -= nRotateAngle;
+ nAngle -= Degree10(nRotateAngle);
}
- while ( nAngle >= 3600 ) nAngle -= 3600;
- while ( nAngle < 0 ) nAngle += 3600;
+ while ( nAngle >= Degree10(3600) ) nAngle -= Degree10(3600);
+ while ( nAngle < Degree10(0) ) nAngle += Degree10(3600);
css::awt::GradientStyle eGrad = css::awt::GradientStyle_LINEAR;
@@ -2870,7 +2870,7 @@ void DffPropertyReader::ImportGradientColor( SfxItemSet& aSet, sal_uInt32 eMSO_F
}
//Construct gradient item
- XGradient aGrad( aCol2, aCol1, eGrad, Degree10(nAngle), nFocusX, nFocusY );
+ XGradient aGrad( aCol2, aCol1, eGrad, nAngle, nFocusX, nFocusY );
//Intensity has been merged into color. So here just set is as 100
aGrad.SetStartIntens( 100 );
aGrad.SetEndIntens( 100 );
@@ -2883,7 +2883,7 @@ void DffPropertyReader::ImportGradientColor( SfxItemSet& aSet, sal_uInt32 eMSO_F
aCol1 = Color(nStartCol, nStartCol, nStartCol);
aCol2 = Color(nEndCol, nEndCol, nEndCol);
- XGradient aGrad2( aCol2 , aCol1 , eGrad, Degree10(nAngle), nFocusX, nFocusY );
+ XGradient aGrad2( aCol2 , aCol1 , eGrad, nAngle, nFocusX, nFocusY );
aSet.Put( XFillFloatTransparenceItem( OUString(), aGrad2 ) );
}
}
@@ -4054,13 +4054,13 @@ SdrObject* SvxMSDffManager::ImportGroup( const DffRecordHeader& rHd, SvStream& r
bool bOk = ReadDffRecordHeader(rSt, aRecHd);
if (bOk && aRecHd.nRecType == DFF_msofbtSpContainer)
{
- mnFix16Angle = 0;
+ mnFix16Angle = 0_deg100;
if (!aRecHd.SeekToBegOfRecord(rSt))
return pRet;
pRet = ImportObj( rSt, rClientData, rClientRect, rGlobalChildRect, nCalledByGroup + 1, pShapeId );
if ( pRet )
{
- sal_Int32 nGroupRotateAngle = 0;
+ Degree100 nGroupRotateAngle(0);
ShapeFlag nSpFlags = nGroupShapeFlags;
nGroupRotateAngle = mnFix16Angle;
@@ -4072,8 +4072,8 @@ SdrObject* SvxMSDffManager::ImportGroup( const DffRecordHeader& rHd, SvStream& r
else
aGlobalChildRect = rGlobalChildRect;
- if ( ( nGroupRotateAngle > 4500 && nGroupRotateAngle <= 13500 )
- || ( nGroupRotateAngle > 22500 && nGroupRotateAngle <= 31500 ) )
+ if ( ( nGroupRotateAngle > 4500_deg100 && nGroupRotateAngle <= 13500_deg100 )
+ || ( nGroupRotateAngle > 22500_deg100 && nGroupRotateAngle <= 31500_deg100 ) )
{
sal_Int32 nHalfWidth = ( aClientRect.GetWidth() + 1 ) >> 1;
sal_Int32 nHalfHeight = ( aClientRect.GetHeight() + 1 ) >> 1;
@@ -4237,7 +4237,7 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
else
{
InitializePropSet( DFF_msofbtOPT ); // get the default PropSet
- static_cast<DffPropertyReader*>(this)->mnFix16Angle = 0;
+ static_cast<DffPropertyReader*>(this)->mnFix16Angle = 0_deg100;
}
aObjData.bOpt2 = maShapeRecords.SeekToContent( rSt, DFF_msofbtUDefProp, SEEK_FROM_CURRENT_AND_RESTART );
@@ -4287,8 +4287,8 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
{ // apply rotation to the BoundingBox BEFORE an object has been generated
if( mnFix16Angle )
{
- tools::Long nAngle = mnFix16Angle;
- if ( ( nAngle > 4500 && nAngle <= 13500 ) || ( nAngle > 22500 && nAngle <= 31500 ) )
+ Degree100 nAngle = mnFix16Angle;
+ if ( ( nAngle > 4500_deg100 && nAngle <= 13500_deg100 ) || ( nAngle > 22500_deg100 && nAngle <= 31500_deg100 ) )
{
sal_Int32 nHalfWidth = ( aObjData.aBoundRect.GetWidth() + 1 ) >> 1;
sal_Int32 nHalfHeight = ( aObjData.aBoundRect.GetHeight() + 1 ) >> 1;
@@ -4320,7 +4320,7 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
SfxItemSet aSet( pSdrModel->GetItemPool() );
bool bIsConnector = ( ( aObjData.eShapeType >= mso_sptStraightConnector1 ) && ( aObjData.eShapeType <= mso_sptCurvedConnector5 ) );
- sal_Int32 nObjectRotation = mnFix16Angle;
+ Degree100 nObjectRotation = mnFix16Angle;
ShapeFlag nSpFlags = aObjData.nSpFlags;
if ( bGraphic )
@@ -4679,12 +4679,12 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
// sj: taking care of the different rotation points, since the new arc is having a bigger snaprect
if ( mnFix16Angle )
{
- sal_Int32 nAngle = mnFix16Angle;
+ Degree100 nAngle = mnFix16Angle;
if ( nSpFlags & ShapeFlag::FlipH )
- nAngle = 36000 - nAngle;
+ nAngle = 36000_deg100 - nAngle;
if ( nSpFlags & ShapeFlag::FlipV )
nAngle = -nAngle;
- double a = nAngle * F_PI18000;
+ double a = nAngle.get() * F_PI18000;
double ss = sin( a );
double cc = cos( a );
Point aP1( aOldBoundRect.TopLeft() );
@@ -4759,7 +4759,7 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
// pay attention to the rotations
if ( nObjectRotation )
{
- double a = nObjectRotation * F_PI18000;
+ double a = nObjectRotation.get() * F_PI18000;
Point aCenter( aObjData.aBoundRect.Center() );
double ss = sin(a);
double cc = cos(a);
@@ -4768,7 +4768,7 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
RotatePoint(aPoint2, aCenter, ss, cc);
// #i120437# reset rotation, it is part of the path and shall not be applied again
- nObjectRotation = 0;
+ nObjectRotation = 0_deg100;
}
// rotate/mirror line within the area as we need it
@@ -5220,7 +5220,7 @@ SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
ScaleEmu( nTextTop );
ScaleEmu( nTextBottom );
- sal_Int32 nTextRotationAngle=0;
+ Degree100 nTextRotationAngle(0);
bool bVerticalText = false;
if ( IsProperty( DFF_Prop_txflTextFlow ) )
{
@@ -5228,18 +5228,18 @@ SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
switch( eTextFlow )
{
case mso_txflBtoT:
- nTextRotationAngle = 9000;
+ nTextRotationAngle = 9000_deg100;
break;
case mso_txflVertN:
case mso_txflTtoBN:
- nTextRotationAngle = 27000;
+ nTextRotationAngle = 27000_deg100;
break;
case mso_txflTtoBA:
bVerticalText = true;
break;
case mso_txflHorzA:
bVerticalText = true;
- nTextRotationAngle = 9000;
+ nTextRotationAngle = 9000_deg100;
break;
case mso_txflHorzN:
default :
@@ -5249,7 +5249,7 @@ SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
if (nTextRotationAngle)
{
- switch (nTextRotationAngle)
+ switch (nTextRotationAngle.get())
{
case 9000:
{
@@ -5436,7 +5436,7 @@ SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
// rotate text with shape?
if ( mnFix16Angle )
{
- double a = mnFix16Angle * F_PI18000;
+ double a = mnFix16Angle.get() * F_PI18000;
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 545afd68514d..7da1450799c6 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -814,14 +814,14 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, Svx
bool bVerticalText = false;
// and if the text object is not empty, it must be applied to pRet, the object we
// initially got from our escher import
- sal_Int32 nTextRotationAngle = 0;
+ Degree100 nTextRotationAngle(0);
if ( IsProperty( DFF_Prop_txflTextFlow ) )
{
auto eTextFlow = GetPropertyValue(DFF_Prop_txflTextFlow, 0) & 0xFFFF;
switch( eTextFlow )
{
case mso_txflBtoT : // Bottom to Top non-@
- nTextRotationAngle += 9000;
+ nTextRotationAngle += 9000_deg100;
break;
case mso_txflTtoBA : /* #68110# */ // Top to Bottom @-font
case mso_txflTtoBN : // Top to Bottom non-@
@@ -840,7 +840,7 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, Svx
}
const bool bFail = o3tl::checked_multiply<sal_Int32>(nFontDirection, 9000, nFontDirection);
if (!bFail)
- nTextRotationAngle -= nFontDirection;
+ nTextRotationAngle -= Degree100(nFontDirection);
else
SAL_WARN("filter.ms", "Parsing error: bad fontdirection: " << nFontDirection);
aTextObj.SetVertical( bVerticalText );
@@ -1174,7 +1174,7 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, Svx
}
}
// rotate text with shape?
- sal_Int32 nAngle = ( rObjData.nSpFlags & ShapeFlag::FlipV ) ? -mnFix16Angle : mnFix16Angle; // #72116# vertical flip -> rotate by using the other way
+ Degree100 nAngle = ( rObjData.nSpFlags & ShapeFlag::FlipV ) ? -mnFix16Angle : mnFix16Angle; // #72116# vertical flip -> rotate by using the other way
nAngle += nTextRotationAngle;
if ( dynamic_cast< const SdrObjCustomShape* >(pTObj) == nullptr )
@@ -1182,10 +1182,10 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, Svx
if ( rObjData.nSpFlags & ShapeFlag::FlipV )
{
double a = 18000 * F_PI18000;
- pTObj->Rotate( rTextRect.Center(), 18000, sin( a ), cos( a ) );
+ pTObj->Rotate( rTextRect.Center(), 18000_deg100, sin( a ), cos( a ) );
}
if ( rObjData.nSpFlags & ShapeFlag::FlipH )
- nAngle = 36000 - nAngle;
+ nAngle = 36000_deg100 - nAngle;
if ( nAngle )
pTObj->NbcRotate( rObjData.aBoundRect.Center(), nAngle );
}
diff --git a/include/filter/msfilter/msdffimp.hxx b/include/filter/msfilter/msdffimp.hxx
index 3561d4ad9468..d3c6657c7b90 100644
--- a/include/filter/msfilter/msdffimp.hxx
+++ b/include/filter/msfilter/msdffimp.hxx
@@ -40,6 +40,7 @@
#include <sal/types.h>
#include <svx/msdffdef.hxx>
#include <vcl/errcode.hxx>
+#include <tools/degree.hxx>
#include <tools/gen.hxx>
#include <tools/ref.hxx>
#include <tools/solar.h>
@@ -93,7 +94,7 @@ class MSFILTER_DLLPUBLIC DffPropertyReader : public DffPropSet
void ApplyFillAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const;
public:
- sal_Int32 mnFix16Angle;
+ Degree100 mnFix16Angle;
bool mbRotateGranientFillWithAngle;
explicit DffPropertyReader( const SvxMSDffManager& rManager );
@@ -102,7 +103,7 @@ public:
DffPropertyReader& operator=( DffPropertyReader const & ) = delete; // MSVC2015 workaround
DffPropertyReader( DffPropertyReader const & ) = delete; // MSVC2015 workaround
- static sal_Int32 Fix16ToAngle( sal_Int32 nAngle );
+ static Degree100 Fix16ToAngle( sal_Int32 nAngle );
#ifdef DBG_CUSTOMSHAPE
void ReadPropSet( SvStream& rIn, SvxMSDffClientData* pClientData, sal_uInt32 nShapeType = 0 ) const;
diff --git a/include/o3tl/strong_int.hxx b/include/o3tl/strong_int.hxx
index 3db958212229..82107955897f 100644
--- a/include/o3tl/strong_int.hxx
+++ b/include/o3tl/strong_int.hxx
@@ -113,10 +113,16 @@ public:
strong_int& operator+=(strong_int const & other) { m_value += other.m_value; return *this; }
strong_int& operator-=(strong_int const & other) { m_value -= other.m_value; return *this; }
strong_int& operator%=(strong_int const & other) { m_value %= other.m_value; return *this; }
+ strong_int& operator*=(strong_int const & other) { m_value *= other.m_value; return *this; }
+ strong_int& operator/=(strong_int const & other) { m_value /= other.m_value; return *this; }
[[nodiscard]]
strong_int operator%(strong_int const & other) const { return strong_int(m_value % other.m_value); }
[[nodiscard]]
strong_int operator-() const { return strong_int(-m_value); }
+ [[nodiscard]]
+ strong_int operator*(strong_int const & other) const { return strong_int(m_value * other.m_value); }
+ [[nodiscard]]
+ strong_int operator/(strong_int const & other) const { return strong_int(m_value / other.m_value); }
bool anyOf(strong_int v) const {
return *this == v;
diff --git a/include/oox/export/drawingml.hxx b/include/oox/export/drawingml.hxx
index 022a0df00e4e..2cd17e6defb0 100644
--- a/include/oox/export/drawingml.hxx
+++ b/include/oox/export/drawingml.hxx
@@ -111,9 +111,9 @@ public:
// Our rotation is counter-clockwise and is in 100ths of a degree.
// drawingML rotation is clockwise and is in 60000ths of a degree.
-template <typename T> T ExportRotateClockwisify(T input)
+inline sal_Int32 ExportRotateClockwisify(Degree100 input)
{
- return ((21600000 - input * 600) % 21600000);
+ return ((21600000 - input.get() * 600) % 21600000);
}
/// Interface to be implemented by the parent exporter that knows how to handle shape text.
diff --git a/include/oox/vml/vmlformatting.hxx b/include/oox/vml/vmlformatting.hxx
index 3d6cdc5ab87b..4bdabbffb97b 100644
--- a/include/oox/vml/vmlformatting.hxx
+++ b/include/oox/vml/vmlformatting.hxx
@@ -32,6 +32,7 @@
#include <oox/helper/helper.hxx>
#include <rtl/ustring.hxx>
#include <sal/types.h>
+#include <tools/degree.hxx>
namespace com::sun::star {
namespace awt { struct Point; }
@@ -87,7 +88,7 @@ namespace ConversionHelper
point value will be returned unmodified. If the 'fd' suffix is
present, the value will be divided by 65536.
*/
- OOX_DLLPUBLIC sal_Int32 decodeRotation( const OUString& rValue );
+ OOX_DLLPUBLIC Degree100 decodeRotation( const OUString& rValue );
/** Converts the passed VML measure string to EMU (English Metric Units).
diff --git a/include/svx/EnhancedCustomShape2d.hxx b/include/svx/EnhancedCustomShape2d.hxx
index 8976b2bdb106..67b0d06a7d64 100644
--- a/include/svx/EnhancedCustomShape2d.hxx
+++ b/include/svx/EnhancedCustomShape2d.hxx
@@ -22,6 +22,7 @@
#include <svx/msdffdef.hxx>
#include <svx/sdasitm.hxx>
+#include <tools/degree.hxx>
#include <com/sun/star/awt/Size.hpp>
#include <com/sun/star/uno/Sequence.h>
#include <com/sun/star/beans/PropertyValues.hpp>
@@ -122,7 +123,7 @@ class SVXCORE_DLLPUBLIC EnhancedCustomShape2d : public SfxItemSet
bool bFlipH;
bool bFlipV;
- sal_Int32 nRotateAngle;
+ Degree100 nRotateAngle;
SAL_DLLPRIVATE bool SetAdjustValueAsDouble( const double& rValue, const sal_Int32 nIndex );
SAL_DLLPRIVATE sal_Int32 GetLuminanceChange( sal_uInt32 nIndex ) const;
@@ -183,7 +184,7 @@ class SVXCORE_DLLPUBLIC EnhancedCustomShape2d : public SfxItemSet
SAL_DLLPRIVATE bool IsFlipVert() const { return bFlipV; };
SAL_DLLPRIVATE bool IsFlipHorz() const { return bFlipH; };
- SAL_DLLPRIVATE sal_Int32 GetRotateAngle() const { return nRotateAngle; };
+ SAL_DLLPRIVATE Degree100 GetRotateAngle() const { return nRotateAngle; };
SdrObject* CreateLineGeometry();
SdrObject* CreateObject( bool bLineGeometryNeededOnly );
diff --git a/include/svx/algitem.hxx b/include/svx/algitem.hxx
index cb37a21ba869..c778735436ee 100644
--- a/include/svx/algitem.hxx
+++ b/include/svx/algitem.hxx
@@ -25,6 +25,7 @@
#include <svl/poolitem.hxx>
#include <svl/eitem.hxx>
#include <svx/svxdllapi.h>
+#include <tools/degree.hxx>
class IntlWrapper;
class SfxItemPool;
@@ -37,7 +38,7 @@ public:
const sal_uInt16 nId );
SvxOrientationItem(
- sal_Int32 nRotation, bool bStacked,
+ Degree100 nRotation, bool bStacked,
const sal_uInt16 nId );
virtual bool GetPresentation( SfxItemPresentation ePres,
@@ -55,7 +56,7 @@ public:
/** Returns sal_True, if the item represents STACKED state. */
bool IsStacked() const;
/** Returns the rotation this item represents (returns nStdAngle for STANDARD and STACKED state). */
- sal_Int32 GetRotation( sal_Int32 nStdAngle ) const;
+ Degree100 GetRotation( Degree100 nStdAngle ) const;
};
class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxMarginItem final : public SfxPoolItem
diff --git a/include/svx/dialcontrol.hxx b/include/svx/dialcontrol.hxx
index 3c5435bb9787..75d7d7fffa78 100644
--- a/include/svx/dialcontrol.hxx
+++ b/include/svx/dialcontrol.hxx
@@ -24,6 +24,7 @@
#include <vcl/customweld.hxx>
#include <vcl/virdev.hxx>
#include <svx/svxdllapi.h>
+#include <svx/svdtrans.hxx>
class Edit;
@@ -40,7 +41,7 @@ public:
void CopyBackground( const DialControlBmp& rSrc );
void DrawBackground( const Size& rSize, bool bEnabled );
void DrawBackground();
- void DrawElements( const OUString& rText, sal_Int32 nAngle );
+ void DrawElements( const OUString& rText, Degree100 nAngle );
Color GetBackgroundColor() const override;
private:
@@ -90,9 +91,9 @@ public:
virtual void Resize() override;
/** Returns the current rotation angle in 1/100 degrees. */
- sal_Int32 GetRotation() const;
+ Degree100 GetRotation() const;
/** Sets the rotation to the passed value (in 1/100 degrees). */
- void SetRotation( sal_Int32 nAngle );
+ void SetRotation( Degree100 nAngle );
/** Returns true, if the control is not in "don't care" state. */
bool HasRotation() const;
/** Sets the control to "don't care" state. */
@@ -138,9 +139,9 @@ private:
sal_Int32 mnLinkedFieldValueMultiplyer;
Size maWinSize;
vcl::Font maWinFont;
- sal_Int32 mnAngle;
- sal_Int32 mnInitialAngle;
- sal_Int32 mnOldAngle;
+ Degree100 mnAngle;
+ Degree100 mnInitialAngle;
+ Degree100 mnOldAngle;
tools::Long mnCenterX;
tools::Long mnCenterY;
bool mbNoRot;
@@ -154,7 +155,7 @@ private:
void HandleMouseEvent( const Point& rPos, bool bInitial );
void HandleEscapeEvent();
- void SetRotation( sal_Int32 nAngle, bool bBroadcast );
+ void SetRotation( Degree100 nAngle, bool bBroadcast );
void Init( const Size& rWinSize, const vcl::Font& rWinFont );
diff --git a/include/svx/obj3d.hxx b/include/svx/obj3d.hxx
index b9f43315d730..e786cbbfbcbd 100644
--- a/include/svx/obj3d.hxx
+++ b/include/svx/obj3d.hxx
@@ -116,7 +116,7 @@ public:
// which is vertical to the screen, plus a shift of the scene.
// This means that also the scene (E3dScene) must define this
// routine as virtual in its class.
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
// get wireframe polygon for local object. No transform is applied.
basegfx::B3DPolyPolygon CreateWireframe() const;
diff --git a/include/svx/scene3d.hxx b/include/svx/scene3d.hxx
index 3ff3a5562e44..13d4157d3449 100644
--- a/include/svx/scene3d.hxx
+++ b/include/svx/scene3d.hxx
@@ -137,7 +137,7 @@ public:
virtual void NbcSetTransform(const basegfx::B3DHomMatrix& rMatrix) override;
virtual void SetTransform(const basegfx::B3DHomMatrix& rMatrix) override;
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
void RotateScene(const Point& rRef, double sn, double cs);
// TakeObjName...() is for the display in the UI, for example "3 frames selected".
diff --git a/include/svx/sdangitm.hxx b/include/svx/sdangitm.hxx
index 81897d43c810..61770899b951 100644
--- a/include/svx/sdangitm.hxx
+++ b/include/svx/sdangitm.hxx
@@ -21,12 +21,13 @@
#include <svl/intitem.hxx>
#include <svx/svxdllapi.h>
+#include <tools/degree.hxx>
class SVXCORE_DLLPUBLIC SdrAngleItem: public SfxInt32Item {
public:
- SdrAngleItem(sal_uInt16 nId, sal_Int32 nAngle): SfxInt32Item(nId,nAngle) {}
+ SdrAngleItem(sal_uInt16 nId, Degree100 nAngle): SfxInt32Item(nId,nAngle.get()) {}
virtual SdrAngleItem* Clone(SfxItemPool* pPool=nullptr) const override;
virtual bool GetPresentation(SfxItemPresentation ePres,
@@ -34,6 +35,9 @@ public:
MapUnit ePresMetric,
OUString& rText,
const IntlWrapper& rIntlWrapper) const override;
+
+ Degree100 GetValue() const { return Degree100(SfxInt32Item::GetValue()); }
+ void SetValue(Degree100 nTheValue) { SfxInt32Item::SetValue(nTheValue.get()); }
};
diff --git a/include/svx/svdedtv.hxx b/include/svx/svdedtv.hxx
index b215108c24c8..560f4cf19fa5 100644
--- a/include/svx/svdedtv.hxx
+++ b/include/svx/svdedtv.hxx
@@ -212,13 +212,13 @@ public:
void MoveMarkedObj(const Size& rSiz, bool bCopy=false);
void ResizeMarkedObj(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bCopy=false);
void ResizeMultMarkedObj(const Point& rRef, const Fraction& xFact, const Fraction& yFact, const bool bWdh, const bool bHgt);
- tools::Long GetMarkedObjRotate() const;
- void RotateMarkedObj(const Point& rRef, tools::Long nAngle, bool bCopy=false);
+ Degree100 GetMarkedObjRotate() const;
+ void RotateMarkedObj(const Point& rRef, Degree100 nAngle, bool bCopy=false);
void MirrorMarkedObj(const Point& rRef1, const Point& rRef2, bool bCopy=false);
void MirrorMarkedObjHorizontal();
void MirrorMarkedObjVertical();
- tools::Long GetMarkedObjShear() const;
- void ShearMarkedObj(const Point& rRef, tools::Long nAngle, bool bVShear=false, bool bCopy=false);
+ Degree100 GetMarkedObjShear() const;
+ void ShearMarkedObj(const Point& rRef, Degree100 nAngle, bool bVShear=false, bool bCopy=false);
void CrookMarkedObj(const Point& rRef, const Point& rRad, SdrCrookMode eMode, bool bVertical, bool bNoContortion, bool bCopy=false);
void DistortMarkedObj(const tools::Rectangle& rRef, const XPolygon& rDistortedRect, bool bNoContortion, bool bCopy=false);
@@ -227,7 +227,7 @@ public:
void SetAllMarkedRect(const tools::Rectangle& rRect) { SetMarkedObjRect(rRect); }
void MoveAllMarked(const Size& rSiz, bool bCopy=false) { MoveMarkedObj(rSiz,bCopy); }
void ResizeAllMarked(const Point& rRef, const Fraction& xFact, const Fraction& yFact) { ResizeMarkedObj(rRef,xFact,yFact); }
- void RotateAllMarked(const Point& rRef, tools::Long nAngle) { RotateMarkedObj(rRef,nAngle); }
+ void RotateAllMarked(const Point& rRef, Degree100 nAngle) { RotateMarkedObj(rRef,nAngle); }
void MirrorAllMarkedHorizontal() { MirrorMarkedObjHorizontal(); }
void MirrorAllMarkedVertical() { MirrorMarkedObjVertical(); }
void CopyMarked() { CopyMarkedObj(); }
diff --git a/include/svx/svdglev.hxx b/include/svx/svdglev.hxx
index 7469444a743b..5a7d3a2ebd38 100644
--- a/include/svx/svdglev.hxx
+++ b/include/svx/svdglev.hxx
@@ -77,7 +77,7 @@ public:
void MoveMarkedGluePoints (const Size& rSiz, bool bCopy);
void ResizeMarkedGluePoints(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bCopy);
- void RotateMarkedGluePoints(const Point& rRef, tools::Long nAngle, bool bCopy);
+ void RotateMarkedGluePoints(const Point& rRef, Degree100 nAngle, bool bCopy);
};
#endif // INCLUDED_SVX_SVDGLEV_HXX
diff --git a/include/svx/svdglue.hxx b/include/svx/svdglue.hxx
index a7eb9b9d76b2..7065b34766a4 100644
--- a/include/svx/svdglue.hxx
+++ b/include/svx/svdglue.hxx
@@ -21,6 +21,7 @@
#define INCLUDED_SVX_SVDGLUE_HXX
#include <tools/gen.hxx>
+#include <tools/degree.hxx>
#include <svx/svxdllapi.h>
#include <memory>
#include <vector>
@@ -104,12 +105,12 @@ public:
void Invalidate(vcl::Window& rWin, const SdrObject* pObj) const;
Point GetAbsolutePos(const SdrObject& rObj) const;
void SetAbsolutePos(const Point& rNewPos, const SdrObject& rObj);
- tools::Long GetAlignAngle() const;
- void SetAlignAngle(tools::Long nAngle);
- static tools::Long EscDirToAngle(SdrEscapeDirection nEsc);
- static SdrEscapeDirection EscAngleToDir(tools::Long nAngle);
- void Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs, const SdrObject* pObj);
- void Mirror(const Point& rRef1, const Point& rRef2, tools::Long nAngle, const SdrObject* pObj);
+ Degree100 GetAlignAngle() const;
+ void SetAlignAngle(Degree100 nAngle);
+ static Degree100 EscDirToAngle(SdrEscapeDirection nEsc);
+ static SdrEscapeDirection EscAngleToDir(Degree100 nAngle);
+ void Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs, const SdrObject* pObj);
+ void Mirror(const Point& rRef1, const Point& rRef2, Degree100 nAngle, const SdrObject* pObj);
void Shear (const Point& rRef, double tn, bool bVShear, const SdrObject* pObj);
};
@@ -137,9 +138,9 @@ public:
void Invalidate(vcl::Window& rWin, const SdrObject* pObj) const;
// temp for transformations on the reference object
void SetReallyAbsolute(bool bOn, const SdrObject& rObj);
- void Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs, const SdrObject* pObj);
+ void Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs, const SdrObject* pObj);
void Mirror(const Point& rRef1, const Point& rRef2, const SdrObject* pObj);
- void Mirror(const Point& rRef1, const Point& rRef2, tools::Long nAngle, const SdrObject* pObj);
+ void Mirror(const Point& rRef1, const Point& rRef2, Degree100 nAngle, const SdrObject* pObj);
void Shear (const Point& rRef, double tn, bool bVShear, const SdrObject* pObj);
};
diff --git a/include/svx/svdhdl.hxx b/include/svx/svdhdl.hxx
index e5cc1379ab94..707c1ddc5a48 100644
--- a/include/svx/svdhdl.hxx
+++ b/include/svx/svdhdl.hxx
@@ -143,7 +143,7 @@ protected:
SdrHdlKind eKind;
- tools::Long nRotationAngle; // turn handle or mousepointer
+ Degree100 nRotationAngle; // turn handle or mousepointer
sal_uInt32 nObjHdlNum; // required by MarkView
sal_uInt32 nPolyNum; // Polygonpoint
sal_uInt32 nPPntNum; // Point number of the polygon
@@ -207,7 +207,7 @@ public:
void SetSelected(bool bJa=true);
void Set1PixMore(bool bJa=true);
- void SetRotationAngle(tools::Long n);
+ void SetRotationAngle(Degree100 n);
bool IsCornerHdl() const { return eKind==SdrHdlKind::UpperLeft || eKind==SdrHdlKind::UpperRight || eKind==SdrHdlKind::LowerLeft || eKind==SdrHdlKind::LowerRight; }
bool IsVertexHdl() const { return eKind==SdrHdlKind::Upper || eKind==SdrHdlKind::Lower || eKind==SdrHdlKind::Left || eKind==SdrHdlKind::Right; }
diff --git a/include/svx/svdmodel.hxx b/include/svx/svdmodel.hxx
index 6f4581d1618a..1d849acd71cd 100644
--- a/include/svx/svdmodel.hxx
+++ b/include/svx/svdmodel.hxx
@@ -27,6 +27,7 @@
#include <rtl/ustring.hxx>
#include <tools/weakbase.h>
#include <svl/SfxBroadcaster.hxx>
+#include <tools/degree.hxx>
#include <tools/fldunit.hxx>
#include <tools/fract.hxx>
#include <svl/hint.hxx>
@@ -385,7 +386,7 @@ public:
static OUString GetUnitString(FieldUnit eUnit);
OUString GetMetricString(tools::Long nVal, bool bNoUnitChars = false, sal_Int32 nNumDigits = -1) const;
- static OUString GetAngleString(tools::Long nAngle);
+ static OUString GetAngleString(Degree100 nAngle);
static OUString GetPercentString(const Fraction& rVal);
// RecalcPageNums is ordinarily only called by the Page.
diff --git a/include/svx/svdoashp.hxx b/include/svx/svdoashp.hxx
index 2014e0998c2d..070cb2111dfd 100644
--- a/include/svx/svdoashp.hxx
+++ b/include/svx/svdoashp.hxx
@@ -168,16 +168,16 @@ public:
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
virtual void Move(const Size& rSiz) override;
- virtual void Shear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void Shear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual void SetSnapRect(const tools::Rectangle& rRect) override;
virtual void SetLogicRect(const tools::Rectangle& rRect) override;
virtual void AdjustToMaxRect( const tools::Rectangle& rMaxRect, bool bShrinkOnly = false ) override;
virtual void NbcMove(const Size& rSiz) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void NbcMirror(const Point& rRef1, const Point& rRef2) override;
- virtual void NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual void NbcSetSnapRect(const tools::Rectangle& rRect) override;
virtual void NbcSetLogicRect(const tools::Rectangle& rRect) override;
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 335eb3d4dcb2..5beb682c6b32 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -27,6 +27,7 @@
#include <svl/lstner.hxx>
#include <svl/poolitem.hxx>
#include <svl/typedwhich.hxx>
+#include <tools/degree.hxx>
#include <svx/DiagramDataInterface.hxx>
#include <svx/svdtypes.hxx>
#include <svx/svdobjkind.hxx>
@@ -536,18 +537,18 @@ public:
virtual void NbcMove (const Size& rSiz);
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
virtual void NbcCrop (const basegfx::B2DPoint& rRef, double fxFact, double fyFact);
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs);
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs);
// Utility for call sites that don't have sin and cos handy
- void NbcRotate(const Point& rRef, tools::Long nAngle);
+ void NbcRotate(const Point& rRef, Degree100 nAngle);
virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
- virtual void NbcShear (const Point& rRef, tools::Long nAngle, double tn, bool bVShear);
+ virtual void NbcShear (const Point& rRef, Degree100 nAngle, double tn, bool bVShear);
virtual void Move (const Size& rSiz);
virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative = true);
virtual void Crop (const basegfx::B2DPoint& rRef, double fxFact, double fyFact);
- virtual void Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs);
+ virtual void Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs);
virtual void Mirror(const Point& rRef1, const Point& rRef2);
- virtual void Shear (const Point& rRef, tools::Long nAngle, double tn, bool bVShear);
+ virtual void Shear (const Point& rRef, Degree100 nAngle, double tn, bool bVShear);
/// The relative position of a SdrObject is the distance of the upper
/// left corner of the logic bounding rectangle (SnapRect) to the anchor.
@@ -580,8 +581,8 @@ public:
virtual void AdjustToMaxRect( const tools::Rectangle& rMaxRect, bool bShrinkOnly = false );
// rotation and shear angle
- virtual tools::Long GetRotateAngle() const;
- virtual tools::Long GetShearAngle(bool bVertical = false) const;
+ virtual Degree100 GetRotateAngle() const;
+ virtual Degree100 GetShearAngle(bool bVertical = false) const;
/// snap to special points of an Object (polygon points, center of circle)
virtual sal_uInt32 GetSnapPointCount() const;
@@ -678,7 +679,7 @@ public:
// to be set temporarily when transforming related object(?)
void SetGlueReallyAbsolute(bool bOn);
- void NbcRotateGluePoints(const Point& rRef, tools::Long nAngle, double sn, double cs);
+ void NbcRotateGluePoints(const Point& rRef, Degree100 nAngle, double sn, double cs);
void NbcMirrorGluePoints(const Point& rRef1, const Point& rRef2);
void NbcShearGluePoints (const Point& rRef, double tn, bool bVShear);
diff --git a/include/svx/svdocirc.hxx b/include/svx/svdocirc.hxx
index 15c27ddbe10f..32ecc1f661b0 100644
--- a/include/svx/svdocirc.hxx
+++ b/include/svx/svdocirc.hxx
@@ -32,8 +32,8 @@ namespace sdr::properties {
class SdrCircObjGeoData final : public SdrTextObjGeoData
{
public:
- tools::Long nStartAngle;
- tools::Long nEndAngle;
+ Degree100 nStartAngle;
+ Degree100 nEndAngle;
};
enum class SdrCircKind { Full, Section, Cut, Arc };
@@ -51,10 +51,10 @@ private:
virtual std::unique_ptr<sdr::properties::BaseProperties> CreateObjectSpecificProperties() override;
SdrCircKind meCircleKind;
- tools::Long nStartAngle;
- tools::Long nEndAngle;
+ Degree100 nStartAngle;
+ Degree100 nEndAngle;
- SVX_DLLPRIVATE basegfx::B2DPolygon ImpCalcXPolyCirc(const SdrCircKind eKind, const tools::Rectangle& rRect1, tools::Long nStart, tools::Long nEnd) const;
+ SVX_DLLPRIVATE basegfx::B2DPolygon ImpCalcXPolyCirc(const SdrCircKind eKind, const tools::Rectangle& rRect1, Degree100 nStart, Degree100 nEnd) const;
SVX_DLLPRIVATE static void ImpSetCreateParams(SdrDragStat& rStat);
SVX_DLLPRIVATE void ImpSetAttrToCircInfo(); // copy values from pool
SVX_DLLPRIVATE void ImpSetCircInfoToAttr(); // copy values into pool
@@ -86,8 +86,8 @@ public:
SdrModel& rSdrModel,
SdrCircKind eNewKind,
const tools::Rectangle& rRect,
- tools::Long nNewStartAngle,
- tools::Long nNewEndWink);
+ Degree100 nNewStartAngle,
+ Degree100 nNewEndAngle);
SdrCircKind GetCircleKind() const { return meCircleKind; }
@@ -129,7 +129,7 @@ public:
virtual void NbcMove(const Size& aSiz) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
virtual void NbcMirror(const Point& rRef1, const Point& rRef2) override;
- virtual void NbcShear (const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void NbcShear (const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual SdrObjectUniquePtr DoConvertToPolyObj(bool bBezier, bool bAddText) const override;
private:
@@ -137,8 +137,8 @@ private:
virtual void SaveGeoData(SdrObjGeoData& rGeo) const override;
virtual void RestGeoData(const SdrObjGeoData& rGeo) override;
public:
- tools::Long GetStartAngle() const { return nStartAngle; }
- tools::Long GetEndAngle() const { return nEndAngle; }
+ Degree100 GetStartAngle() const { return nStartAngle; }
+ Degree100 GetEndAngle() const { return nEndAngle; }
};
diff --git a/include/svx/svdoedge.hxx b/include/svx/svdoedge.hxx
index 5d0116cb97d8..0bda2fece64d 100644
--- a/include/svx/svdoedge.hxx
+++ b/include/svx/svdoedge.hxx
@@ -242,9 +242,9 @@ public:
virtual void NbcResize(const Point& rRefPnt, const Fraction& aXFact, const Fraction& aYFact) override;
// #i54102# added rotate, mirror and shear support
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void NbcMirror(const Point& rRef1, const Point& rRef2) override;
- virtual void NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
// #102344# Added missing implementation
virtual void NbcSetAnchorPos(const Point& rPnt) override;
diff --git a/include/svx/svdogrp.hxx b/include/svx/svdogrp.hxx
index 355b19242400..2083c8839438 100644
--- a/include/svx/svdogrp.hxx
+++ b/include/svx/svdogrp.hxx
@@ -80,15 +80,15 @@ public:
virtual bool BegCreate(SdrDragStat& rStat) override;
- virtual tools::Long GetRotateAngle() const override;
- virtual tools::Long GetShearAngle(bool bVertical = false) const override;
+ virtual Degree100 GetRotateAngle() const override;
+ virtual Degree100 GetShearAngle(bool bVertical = false) const override;
virtual void Move(const Size& rSiz) override;
virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact,
bool bUnsetRelative = true) override;
- virtual void Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void Mirror(const Point& rRef1, const Point& rRef2) override;
- virtual void Shear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void Shear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual void SetAnchorPos(const Point& rPnt) override;
virtual void SetRelativePos(const Point& rPnt) override;
virtual void SetSnapRect(const tools::Rectangle& rRect) override;
@@ -97,9 +97,9 @@ public:
virtual void NbcMove(const Size& rSiz) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact,
const Fraction& yFact) override;
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void NbcMirror(const Point& rRef1, const Point& rRef2) override;
- virtual void NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual void NbcSetAnchorPos(const Point& rPnt) override;
virtual void NbcSetRelativePos(const Point& rPnt) override;
virtual void NbcSetSnapRect(const tools::Rectangle& rRect) override;
diff --git a/include/svx/svdomeas.hxx b/include/svx/svdomeas.hxx
index d72798e23111..ccc7d2a2f16b 100644
--- a/include/svx/svdomeas.hxx
+++ b/include/svx/svdomeas.hxx
@@ -113,10 +113,10 @@ public:
virtual void NbcMove(const Size& rSiz) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void NbcMirror(const Point& rRef1, const Point& rRef2) override;
- virtual void NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
- virtual tools::Long GetRotateAngle() const override;
+ virtual void NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
+ virtual Degree100 GetRotateAngle() const override;
virtual void RecalcSnapRect() override;
virtual sal_uInt32 GetSnapPointCount() const override;
diff --git a/include/svx/svdopath.hxx b/include/svx/svdopath.hxx
index 5f56fd38e5ae..f1a5b1b2b2aa 100644
--- a/include/svx/svdopath.hxx
+++ b/include/svx/svdopath.hxx
@@ -108,9 +108,9 @@ public:
virtual void NbcMove(const Size& aSize) override;
virtual void NbcResize(const Point& rRefPnt, const Fraction& aXFact, const Fraction& aYFact) override;
- virtual void NbcRotate(const Point& rRefPnt, tools::Long nAngle, double fSin, double fCos) override;
+ virtual void NbcRotate(const Point& rRefPnt, Degree100 nAngle, double fSin, double fCos) override;
virtual void NbcMirror(const Point& rRefPnt1, const Point& rRefPnt2) override;
- virtual void NbcShear(const Point& rRefPnt, tools::Long nAngle, double fTan, bool bVShear) override;
+ virtual void NbcShear(const Point& rRefPnt, Degree100 nAngle, double fTan, bool bVShear) override;
virtual sal_uInt32 GetSnapPointCount() const override;
virtual Point GetSnapPoint(sal_uInt32 i) const override;
diff --git a/include/svx/svdorect.hxx b/include/svx/svdorect.hxx
index 9480acdb103a..930fb01ff626 100644
--- a/include/svx/svdorect.hxx
+++ b/include/svx/svdorect.hxx
@@ -112,9 +112,9 @@ public:
virtual void NbcMove(const Size& rSiz) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void NbcMirror(const Point& rRef1, const Point& rRef2) override;
- virtual void NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual SdrGluePoint GetVertexGluePoint(sal_uInt16 nNum) const override;
virtual SdrGluePoint GetCornerGluePoint(sal_uInt16 nNum) const override;
diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx
index 9d74bffec93e..fc7a817b543a 100644
--- a/include/svx/svdotext.hxx
+++ b/include/svx/svdotext.hxx
@@ -454,8 +454,8 @@ public:
virtual void NbcSetSnapRect(const tools::Rectangle& rRect) override;
virtual void NbcSetLogicRect(const tools::Rectangle& rRect) override;
virtual const tools::Rectangle& GetLogicRect() const override;
- virtual tools::Long GetRotateAngle() const override;
- virtual tools::Long GetShearAngle(bool bVertical = false) const override;
+ virtual Degree100 GetRotateAngle() const override;
+ virtual Degree100 GetShearAngle(bool bVertical = false) const override;
virtual sal_uInt32 GetSnapPointCount() const override;
virtual Point GetSnapPoint(sal_uInt32 i) const override;
@@ -478,9 +478,9 @@ public:
virtual void NbcMove(const Size& rSiz) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void NbcMirror(const Point& rRef1, const Point& rRef2) override;
- virtual void NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual bool HasTextEdit() const override;
// returns true if TextEditMode started
diff --git a/include/svx/svdovirt.hxx b/include/svx/svdovirt.hxx
index b47bc03ce3f3..12cd04095517 100644
--- a/include/svx/svdovirt.hxx
+++ b/include/svx/svdovirt.hxx
@@ -100,16 +100,16 @@ public:
virtual void NbcMove(const Size& rSiz) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact,
const Fraction& yFact) override;
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void NbcMirror(const Point& rRef1, const Point& rRef2) override;
- virtual void NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual void Move(const Size& rSiz) override;
virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact,
bool bUnsetRelative = true) override;
- virtual void Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void Mirror(const Point& rRef1, const Point& rRef2) override;
- virtual void Shear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void Shear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual void RecalcSnapRect() override;
virtual const tools::Rectangle& GetSnapRect() const override;
@@ -120,8 +120,8 @@ public:
virtual void SetLogicRect(const tools::Rectangle& rRect) override;
virtual void NbcSetLogicRect(const tools::Rectangle& rRect) override;
- virtual tools::Long GetRotateAngle() const override;
- virtual tools::Long GetShearAngle(bool bVertical = false) const override;
+ virtual Degree100 GetRotateAngle() const override;
+ virtual Degree100 GetShearAngle(bool bVertical = false) const override;
virtual sal_uInt32 GetSnapPointCount() const override;
virtual Point GetSnapPoint(sal_uInt32 i) const override;
diff --git a/include/svx/svdpoev.hxx b/include/svx/svdpoev.hxx
index 538e1012bf49..0ad7addd3a63 100644
--- a/include/svx/svdpoev.hxx
+++ b/include/svx/svdpoev.hxx
@@ -66,7 +66,7 @@ public:
void MoveMarkedPoints(const Size& rSiz);
void ResizeMarkedPoints(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
- void RotateMarkedPoints(const Point& rRef, tools::Long nAngle);
+ void RotateMarkedPoints(const Point& rRef, Degree100 nAngle);
// This probably creates an arbitrary amount of new objects
void RipUpAtMarkedPoints() override;
diff --git a/include/svx/svdsnpv.hxx b/include/svx/svdsnpv.hxx
index 19305837bcc4..b7b06e499590 100644
--- a/include/svx/svdsnpv.hxx
+++ b/include/svx/svdsnpv.hxx
@@ -23,6 +23,7 @@
#include <svx/svdpntv.hxx>
#include <svx/svdhlpln.hxx>
#include <svx/svxdllapi.h>
+#include <tools/degree.hxx>
#include <o3tl/typed_flags_set.hxx>
/**
@@ -104,8 +105,8 @@ protected:
Fraction aSnapWdtY;
sal_uInt16 nMagnSizPix;
- tools::Long nSnapAngle;
- tools::Long nEliminatePolyPointLimitAngle;
+ Degree100 nSnapAngle;
+ Degree100 nEliminatePolyPointLimitAngle;
SdrCrookMode eCrookMode;
@@ -220,8 +221,8 @@ public:
// persistent.
void SetAngleSnapEnabled(bool bOn) { bAngleSnapEnab=bOn; }
bool IsAngleSnapEnabled() const { return bAngleSnapEnab; }
- void SetSnapAngle(tools::Long nAngle) { nSnapAngle=nAngle; }
- tools::Long GetSnapAngle() const { return nSnapAngle; }
+ void SetSnapAngle(Degree100 nAngle) { nSnapAngle=nAngle; }
+ Degree100 GetSnapAngle() const { return nSnapAngle; }
// different effects from Ortho (depending on the context):
// - Create
@@ -280,8 +281,8 @@ public:
// if its adjacent lines are almost a solid line.
void SetEliminatePolyPoints(bool bOn) { bEliminatePolyPoints=bOn; }
bool IsEliminatePolyPoints() const { return bEliminatePolyPoints; }
- void SetEliminatePolyPointLimitAngle(tools::Long nAngle) { nEliminatePolyPointLimitAngle=nAngle; }
- tools::Long GetEliminatePolyPointLimitAngle() const { return nEliminatePolyPointLimitAngle; }
+ void SetEliminatePolyPointLimitAngle(Degree100 nAngle) { nEliminatePolyPointLimitAngle=nAngle; }
+ Degree100 GetEliminatePolyPointLimitAngle() const { return nEliminatePolyPointLimitAngle; }
};
#endif // INCLUDED_SVX_SVDSNPV_HXX
diff --git a/include/svx/svdtrans.hxx b/include/svx/svdtrans.hxx
index a5bd1e640bbf..ccc6308fc018 100644
--- a/include/svx/svdtrans.hxx
+++ b/include/svx/svdtrans.hxx
@@ -22,6 +22,7 @@
#include <rtl/ustring.hxx>
#include <svx/svxdllapi.h>
+#include <tools/degree.hxx>
#include <tools/fldunit.hxx>
#include <tools/fract.hxx>
#include <tools/gen.hxx>
@@ -43,7 +44,7 @@
// To convert it back, we use division.
// That maximum shear angle
-#define SDRMAXSHEAR 8900
+constexpr Degree100 SDRMAXSHEAR(8900);
class XPolygon;
class XPolyPolygon;
@@ -159,13 +160,13 @@ inline double GetCrookAngle(Point& rPnt, const Point& rCenter, const Point& rRad
* @return the returned value is in the range of -180.00..179.99 deg
* and is in 1/100 deg units
*/
-SVXCORE_DLLPUBLIC tools::Long GetAngle(const Point& rPnt);
+SVXCORE_DLLPUBLIC Degree100 GetAngle(const Point& rPnt);
-tools::Long NormAngle18000(tools::Long a); /// Normalize angle to -180.00..179.99
+Degree100 NormAngle18000(Degree100 a); /// Normalize angle to -180.00..179.99
-SVXCORE_DLLPUBLIC tools::Long NormAngle36000(tools::Long a); /// Normalize angle to 0.00..359.99
+SVXCORE_DLLPUBLIC Degree100 NormAngle36000(Degree100 a); /// Normalize angle to 0.00..359.99
-sal_uInt16 GetAngleSector(tools::Long nAngle); /// Determine sector within the cartesian coordinate system
+sal_uInt16 GetAngleSector(Degree100 nAngle); /// Determine sector within the cartesian coordinate system
/**
* Calculates the length of (0,0) via a^2 + b^2 = c^2
@@ -213,8 +214,8 @@ tools::Long GetLen(const Point& rPnt);
class GeoStat { // Geometric state for a rect
public:
- tools::Long nRotationAngle;
- tools::Long nShearAngle;
+ Degree100 nRotationAngle;
+ Degree100 nShearAngle;
double mfTanShearAngle; // tan(nShearAngle)
double mfSinRotationAngle; // sin(nRotationAngle)
double mfCosRotationAngle; // cos(nRotationAngle)
diff --git a/include/svx/sxciaitm.hxx b/include/svx/sxciaitm.hxx
index f14ba75288e7..9d77c18e37b3 100644
--- a/include/svx/sxciaitm.hxx
+++ b/include/svx/sxciaitm.hxx
@@ -22,12 +22,12 @@
#include <svx/svddef.hxx>
#include <svx/sdangitm.hxx>
-inline SdrAngleItem makeSdrCircStartAngleItem(tools::Long nAngle)
+inline SdrAngleItem makeSdrCircStartAngleItem(Degree100 nAngle)
{
return SdrAngleItem(SDRATTR_CIRCSTARTANGLE, nAngle);
}
-inline SdrAngleItem makeSdrCircEndAngleItem(tools::Long nAngle)
+inline SdrAngleItem makeSdrCircEndAngleItem(Degree100 nAngle)
{
return SdrAngleItem(SDRATTR_CIRCENDANGLE, nAngle);
}
diff --git a/include/svx/sxmtfitm.hxx b/include/svx/sxmtfitm.hxx
index 6591ff2eb40a..2e89ebebd127 100644
--- a/include/svx/sxmtfitm.hxx
+++ b/include/svx/sxmtfitm.hxx
@@ -42,7 +42,7 @@ public:
//Angle of the text in 1/100deg. 0=horizontal; read from left to right. (n.i.)
class SdrMeasureTextFixedAngleItem: public SdrAngleItem {
public:
- SdrMeasureTextFixedAngleItem(tools::Long nVal=0): SdrAngleItem(SDRATTR_MEASURETEXTFIXEDANGLE,nVal) {}
+ SdrMeasureTextFixedAngleItem(Degree100 nVal=0_deg100): SdrAngleItem(SDRATTR_MEASURETEXTFIXEDANGLE,nVal) {}
virtual ~SdrMeasureTextFixedAngleItem() override;
virtual SdrMeasureTextFixedAngleItem* Clone(SfxItemPool* pPool=nullptr) const override;
diff --git a/include/tools/degree.hxx b/include/tools/degree.hxx
index 27bdffaa5de1..47dc7a8d98a7 100644
--- a/include/tools/degree.hxx
+++ b/include/tools/degree.hxx
@@ -10,6 +10,7 @@
#include <sal/types.h>
#include <o3tl/strong_int.hxx>
+#include <cstdlib>
#include <math.h>
/** tenths of a Degree, normally rotation */
@@ -18,10 +19,27 @@ typedef o3tl::strong_int<sal_Int16, struct Degree10Tag> Degree10;
/** custom literal */
constexpr Degree10 operator""_deg10(unsigned long long n) { return Degree10{ n }; }
+/** hundredths of a Degree, normally rotation */
+typedef o3tl::strong_int<sal_Int32, struct Degree100Tag> Degree100;
+
+// Android has trouble calling the correct overload of std::abs
+#ifdef ANDROID
+inline Degree100 abs(Degree100 x) { return Degree100(std::abs(static_cast<int>(x.get()))); }
+#else
+inline Degree100 abs(Degree100 x) { return Degree100(std::abs(x.get())); }
+#endif
+
+/** custom literal */
+constexpr Degree100 operator""_deg100(unsigned long long n) { return Degree100{ n }; }
+
/** conversion functions */
-inline sal_Int32 toDegree100(Degree10 x) { return x.get() * 10; }
-inline double toRadians(Degree10 x) { return x.get() * M_PI / 1800.0; }
+inline Degree100 toDegree100(Degree10 x) { return Degree100(x.get() * 10); }
+inline double toRadians(Degree10 x) { return x.get() * (M_PI / 1800.0); }
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 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/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index ce30b436ffec..98ef5de040b7 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -1048,7 +1048,7 @@ Reference< XShape > const & Shape::createAndInsert(
aShapeProps.assignUsed( getShapeProperties() );
aShapeProps.assignUsed( maDefaultShapeProperties );
if(mnRotation != 0 && bIsCustomShape)
- aShapeProps.setProperty( PROP_RotateAngle, sal_Int32( NormAngle36000( mnRotation / -600 ) ));
+ aShapeProps.setProperty( PROP_RotateAngle, sal_Int32( NormAngle36000( Degree100(mnRotation / -600) ) ));
if ( bIsEmbMedia || aServiceName == "com.sun.star.drawing.GraphicObjectShape" || aServiceName == "com.sun.star.drawing.OLE2Shape" || bIsCustomShape )
mpGraphicPropertiesPtr->pushToPropMap( aShapeProps, rGraphicHelper );
if ( mpTablePropertiesPtr && aServiceName == "com.sun.star.drawing.TableShape" )
@@ -1486,7 +1486,8 @@ Reference< XShape > const & Shape::createAndInsert(
if ( !bUseRotationTransform && (mnRotation != 0 || nCameraRotation != 0) )
{
// use the same logic for rotation from VML exporter (SimpleShape::implConvertAndInsert at vmlshape.cxx)
- aPropertySet.setAnyProperty( PROP_RotateAngle, makeAny( sal_Int32( NormAngle36000( (mnRotation - nCameraRotation) / -600 ) ) ) );
+ Degree100 nAngle = NormAngle36000( Degree100((mnRotation - nCameraRotation) / -600) );
+ aPropertySet.setAnyProperty( PROP_RotateAngle, makeAny( sal_Int32( nAngle.get() ) ) );
aPropertySet.setAnyProperty( PROP_HoriOrientPosition, makeAny( maPosition.X ) );
aPropertySet.setAnyProperty( PROP_VertOrientPosition, makeAny( maPosition.Y ) );
}
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 0571aeed7d93..da3edf2169c7 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1717,8 +1717,8 @@ void DrawingML::WriteShapeTransformation( const Reference< XShape >& rXShape, sa
{
SAL_INFO("oox.shape", "write shape transformation");
- sal_Int32 nRotation = 0;
- sal_Int32 nCameraRotation = 0;
+ Degree100 nRotation;
+ Degree100 nCameraRotation;
awt::Point aPos = rXShape->getPosition();
awt::Size aSize = rXShape->getSize();
@@ -1741,22 +1741,26 @@ void DrawingML::WriteShapeTransformation( const Reference< XShape >& rXShape, sa
if (!bSuppressRotation)
{
SdrObject* pShape = GetSdrObjectFromXShape( rXShape );
- nRotation = pShape ? pShape->GetRotateAngle() : 0;
+ nRotation = pShape ? pShape->GetRotateAngle() : 0_deg100;
if ( GetDocumentType() != DOCUMENT_DOCX )
{
int faccos=bFlipV ? -1 : 1;
int facsin=bFlipH ? -1 : 1;
- aPos.X-=(1-faccos*cos(nRotation*F_PI18000))*aSize.Width/2-facsin*sin(nRotation*F_PI18000)*aSize.Height/2;
- aPos.Y-=(1-faccos*cos(nRotation*F_PI18000))*aSize.Height/2+facsin*sin(nRotation*F_PI18000)*aSize.Width/2;
+ 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;
}
// The RotateAngle property's value is independent from any flipping, and that's exactly what we need here.
uno::Reference<beans::XPropertySet> xPropertySet(rXShape, uno::UNO_QUERY);
uno::Reference<beans::XPropertySetInfo> xPropertySetInfo = xPropertySet->getPropertySetInfo();
if (xPropertySetInfo->hasPropertyByName("RotateAngle"))
- xPropertySet->getPropertyValue("RotateAngle") >>= nRotation;
+ {
+ sal_Int32 nTmp;
+ if (xPropertySet->getPropertyValue("RotateAngle") >>= nTmp)
+ nRotation = Degree100(nTmp);
+ }
// tdf#133037: restore original rotate angle before output
- if (nRotation != 0 && xPropertySetInfo->hasPropertyByName(UNO_NAME_MISC_OBJ_INTEROPGRABBAG))
+ if (nRotation && xPropertySetInfo->hasPropertyByName(UNO_NAME_MISC_OBJ_INTEROPGRABBAG))
{
uno::Sequence<beans::PropertyValue> aGrabBagProps;
xPropertySet->getPropertyValue(UNO_NAME_MISC_OBJ_INTEROPGRABBAG) >>= aGrabBagProps;
@@ -1776,8 +1780,9 @@ void DrawingML::WriteShapeTransformation( const Reference< XShape >& rXShape, sa
[](const PropertyValue& rProp) { return rProp.Name == "rotRev"; });
if (pZRotationProp != std::cend(aCameraProps))
{
- pZRotationProp->Value >>= nCameraRotation;
- nCameraRotation = NormAngle36000(nCameraRotation / -600);
+ sal_Int32 nTmp;
+ pZRotationProp->Value >>= nTmp;
+ nCameraRotation = NormAngle36000(Degree100(nTmp / -600));
}
}
}
@@ -1786,7 +1791,7 @@ void DrawingML::WriteShapeTransformation( const Reference< XShape >& rXShape, sa
// OOXML flips shapes before rotating them.
if(bFlipH != bFlipV)
- nRotation = nRotation * -1 + 36000;
+ nRotation = Degree100(nRotation.get() * -1 + 36000);
WriteTransformation(tools::Rectangle(Point(aPos.X, aPos.Y), Size(aSize.Width, aSize.Height)), nXmlNamespace,
bFlipHWrite, bFlipVWrite, ExportRotateClockwisify(nRotation + nCameraRotation), IsGroupShape( rXShape ));
@@ -4981,8 +4986,8 @@ void DrawingML::WriteFromTo(const uno::Reference<css::drawing::XShape>& rXShape,
SdrObject* pObj = SdrObject::getSdrObjectFromXShape(rXShape.get());
if (pObj)
{
- sal_Int32 nRotation = pObj->GetRotateAngle();
- if (nRotation != 0)
+ Degree100 nRotation = pObj->GetRotateAngle();
+ if (nRotation)
{
sal_Int16 nHalfWidth = aSize.Width / 2;
sal_Int16 nHalfHeight = aSize.Height / 2;
@@ -4997,7 +5002,7 @@ void DrawingML::WriteFromTo(const uno::Reference<css::drawing::XShape>& rXShape,
// MSO changes the anchor positions at these angles and that does an extra 90 degrees
// rotation on our shapes, so we output it in such position that MSO
// can draw this shape correctly.
- if ((nRotation >= 45 * 100 && nRotation < 135 * 100) || (nRotation >= 225 * 100 && nRotation < 315 * 100))
+ if ((nRotation >= 4500_deg100 && nRotation < 13500_deg100) || (nRotation >= 22500_deg100 && nRotation < 31500_deg100))
{
aTopLeft.X = aTopLeft.X - nHalfHeight + nHalfWidth;
aTopLeft.Y = aTopLeft.Y - nHalfWidth + nHalfHeight;
diff --git a/oox/source/shape/WpsContext.cxx b/oox/source/shape/WpsContext.cxx
index 5a4210572e51..834dc9f5a730 100644
--- a/oox/source/shape/WpsContext.cxx
+++ b/oox/source/shape/WpsContext.cxx
@@ -84,8 +84,8 @@ oox::core::ContextHandlerRef WpsContext::onCreateContext(sal_Int32 nElementToken
// If the text is not rotated the way the shape wants it already, set the angle.
const sal_Int32 nRotation = nVert == XML_vert270 ? -270 : -90;
- if (static_cast<tools::Long>(basegfx::rad2deg(fRotate))
- != NormAngle36000(static_cast<tools::Long>(nRotation) * 100) / 100)
+ if (static_cast<sal_Int32>(basegfx::rad2deg(fRotate))
+ != NormAngle36000(Degree100(nRotation * 100)).get() / 100)
{
comphelper::SequenceAsHashMap aCustomShapeGeometry(
xPropertySet->getPropertyValue("CustomShapeGeometry"));
diff --git a/oox/source/vml/vmlformatting.cxx b/oox/source/vml/vmlformatting.cxx
index 62da5dedf10f..60ef7f900d15 100644
--- a/oox/source/vml/vmlformatting.cxx
+++ b/oox/source/vml/vmlformatting.cxx
@@ -118,16 +118,16 @@ double ConversionHelper::decodePercent( const OUString& rValue, double fDefValue
return fDefValue;
}
-sal_Int32 ConversionHelper::decodeRotation( const OUString& rValue )
+Degree100 ConversionHelper::decodeRotation( const OUString& rValue )
{
if( rValue.isEmpty() )
- return 0;
+ return 0_deg100;
double fValue = 0.0;
double fRotation = 0.0;
sal_Int32 nEndPos = 0;
if( !lclExtractDouble(fValue, nEndPos, rValue) )
- return 0;
+ return 0_deg100;
if( nEndPos == rValue.getLength() )
fRotation = fValue;
@@ -136,10 +136,10 @@ sal_Int32 ConversionHelper::decodeRotation( const OUString& rValue )
else
{
OSL_FAIL("ConversionHelper::decodeRotation - unknown measure unit");
- return 0;
+ return 0_deg100;
}
- return NormAngle36000(fRotation * -100);
+ return NormAngle36000(Degree100(static_cast<sal_Int32>(fRotation * -100)));
}
sal_Int64 ConversionHelper::decodeMeasureToEmu( const GraphicHelper& rGraphicHelper,
diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx
index 5b081660148d..32c1ec93ed49 100644
--- a/oox/source/vml/vmlshape.cxx
+++ b/oox/source/vml/vmlshape.cxx
@@ -405,7 +405,7 @@ Reference< XShape > ShapeBase::convertAndInsert( const Reference< XShapes >& rxS
}
if(!maTypeModel.maRotation.isEmpty())
- aGrabBag.push_back(comphelper::makePropertyValue("mso-rotation-angle", ConversionHelper::decodeRotation(maTypeModel.maRotation)));
+ aGrabBag.push_back(comphelper::makePropertyValue("mso-rotation-angle", ConversionHelper::decodeRotation(maTypeModel.maRotation).get()));
propertySet->setPropertyValue("FrameInteropGrabBag", uno::makeAny(comphelper::containerToSequence(aGrabBag)));
sal_Int32 backColorTransparency = 0;
propertySet->getPropertyValue("BackColorTransparency")
@@ -685,7 +685,7 @@ static void lcl_SetAnchorType(PropertySet& rPropSet, const ShapeTypeModel& rType
Reference< XShape > SimpleShape::implConvertAndInsert( const Reference< XShapes >& rxShapes, const awt::Rectangle& rShapeRect ) const
{
awt::Rectangle aShapeRect(rShapeRect);
- std::optional<sal_Int32> oRotation;
+ std::optional<Degree100> oRotation;
bool bFlipX = false, bFlipY = false;
// tdf#137765: skip this rotation for line shapes
if (!maTypeModel.maRotation.isEmpty() && maService != "com.sun.star.drawing.LineShape")
@@ -840,7 +840,7 @@ Reference< XShape > SimpleShape::implConvertAndInsert( const Reference< XShapes
{
if (oRotation)
{
- aPropertySet.setAnyProperty(PROP_RotateAngle, makeAny(*oRotation));
+ aPropertySet.setAnyProperty(PROP_RotateAngle, makeAny((*oRotation).get()));
uno::Reference<lang::XServiceInfo> xServiceInfo(rxShapes, uno::UNO_QUERY);
if (!xServiceInfo->supportsService("com.sun.star.drawing.GroupShape"))
{
@@ -947,7 +947,7 @@ Reference< XShape > SimpleShape::createPictureObject(const Reference< XShapes >&
}
// fdo#70457: preserve rotation information
if ( !maTypeModel.maRotation.isEmpty() )
- aPropSet.setAnyProperty(PROP_RotateAngle, makeAny(ConversionHelper::decodeRotation(maTypeModel.maRotation)));
+ aPropSet.setAnyProperty(PROP_RotateAngle, makeAny(ConversionHelper::decodeRotation(maTypeModel.maRotation).get()));
const GraphicHelper& rGraphicHelper = mrDrawing.getFilter().getGraphicHelper();
lcl_SetAnchorType(aPropSet, maTypeModel, rGraphicHelper);
@@ -1082,7 +1082,7 @@ namespace
// -1 is required because the direction of MSO rotation is the opposite of ours
// 100 is required because in this part of the code the angle is in a hundredth of
// degrees.
- auto nAngle = -1 * 100.0 * rTypeModel.maRotation.toDouble();
+ Degree100 nAngle( static_cast<sal_Int32>(-1 * 100.0 * rTypeModel.maRotation.toDouble()) );
pShape->NbcRotate(pShape->GetSnapRect().Center(), nAngle);
}
}
@@ -1535,7 +1535,7 @@ Reference< XShape > GroupShape::implConvertAndInsert( const Reference< XShapes >
const GraphicHelper& rGraphicHelper = mrDrawing.getFilter().getGraphicHelper();
lcl_SetAnchorType(aPropertySet, maTypeModel, rGraphicHelper);
if (!maTypeModel.maRotation.isEmpty())
- aPropertySet.setAnyProperty(PROP_RotateAngle, makeAny(ConversionHelper::decodeRotation(maTypeModel.maRotation)));
+ aPropertySet.setAnyProperty(PROP_RotateAngle, makeAny(ConversionHelper::decodeRotation(maTypeModel.maRotation).get()));
return xGroupShape;
}
diff --git a/reportdesign/source/ui/report/ReportSection.cxx b/reportdesign/source/ui/report/ReportSection.cxx
index d0618c234c58..a1ea65141ae2 100644
--- a/reportdesign/source/ui/report/ReportSection.cxx
+++ b/reportdesign/source/ui/report/ReportSection.cxx
@@ -604,7 +604,7 @@ void OReportSection::createDefault(const OUString& _sType,SdrObject* _pObj)
EE_ITEMS_START, EE_ITEMS_END>{});
aDest.Set( rSource );
_pObj->SetMergedItemSet( aDest );
- sal_Int32 nAngle = pSourceObj->GetRotateAngle();
+ Degree100 nAngle = pSourceObj->GetRotateAngle();
if ( nAngle )
_pObj->NbcRotate( _pObj->GetSnapRect().Center(), nAngle );
bAttributesAppliedFromGallery = true;
diff --git a/sc/inc/attrib.hxx b/sc/inc/attrib.hxx
index 4c9206af40aa..63025d90de30 100644
--- a/sc/inc/attrib.hxx
+++ b/sc/inc/attrib.hxx
@@ -288,7 +288,7 @@ private:
class SC_DLLPUBLIC ScRotateValueItem final : public SdrAngleItem
{
public:
- ScRotateValueItem(sal_Int32 nAngle);
+ ScRotateValueItem(Degree100 nAngle);
virtual ScRotateValueItem* Clone(SfxItemPool* pPool=nullptr) const override;
virtual bool GetPresentation( SfxItemPresentation ePresentation,
diff --git a/sc/inc/patattr.hxx b/sc/inc/patattr.hxx
index 63e854edffbb..bfc162bfb657 100644
--- a/sc/inc/patattr.hxx
+++ b/sc/inc/patattr.hxx
@@ -23,6 +23,7 @@
#include <svl/poolitem.hxx>
#include <svl/itemset.hxx>
#include <svl/languageoptions.hxx>
+#include <tools/degree.hxx>
#include <editeng/svxenum.hxx>
#include "scdllapi.h"
#include "fonthelper.hxx"
@@ -139,7 +140,7 @@ public:
sal_uInt32 GetNumberFormat( SvNumberFormatter* pFormatter,
const SfxItemSet* pCondSet ) const;
- tools::Long GetRotateVal( const SfxItemSet* pCondSet ) const;
+ Degree100 GetRotateVal( const SfxItemSet* pCondSet ) const;
ScRotateDir GetRotateDir( const SfxItemSet* pCondSet ) const;
void SetKey(sal_uInt64 nKey);
diff --git a/sc/qa/unit/scshapetest.cxx b/sc/qa/unit/scshapetest.cxx
index 14dc129e6951..344a26e28901 100644
--- a/sc/qa/unit/scshapetest.cxx
+++ b/sc/qa/unit/scshapetest.cxx
@@ -234,16 +234,17 @@ void ScShapeTest::testTdf137033_RotShear_ResizeHide()
// Verify hiding has changed shape geometry as expected
tools::Rectangle aSnapRect(pObj->GetSnapRect());
- tools::Long aRotateAngle(pObj->GetRotateAngle());
- tools::Long aShearAngle(pObj->GetShearAngle());
+ Degree100 aRotateAngle(pObj->GetRotateAngle());
+ Degree100 aShearAngle(pObj->GetShearAngle());
// mathematical exact would be Point(3868, 4795), Size(9763, 1909)
// current values as of LO 7.2
const tools::Rectangle aExpectRect(Point(3871, 4796), Size(9764, 1910));
- const tools::Long aExpectRotateAngle(20923);
- const tools::Long aExpectShearAngle(-6572);
- CPPUNIT_ASSERT_MESSAGE("Hide rows, shear angle: ", abs(aShearAngle - aExpectShearAngle) <= 1);
+ const Degree100 aExpectRotateAngle(20923_deg100);
+ const Degree100 aExpectShearAngle(-6572_deg100);
+ CPPUNIT_ASSERT_MESSAGE("Hide rows, shear angle: ",
+ abs(aShearAngle - aExpectShearAngle) <= 1_deg100);
CPPUNIT_ASSERT_MESSAGE("Hide rows, rotate angle: ",
- abs(aRotateAngle - aExpectRotateAngle) <= 1);
+ abs(aRotateAngle - aExpectRotateAngle) <= 1_deg100);
lcl_AssertRectEqualWithTolerance("Reload: wrong pos or size", aExpectRect, aSnapRect, 1);
// Save and reload.
@@ -269,8 +270,10 @@ void ScShapeTest::testTdf137033_RotShear_ResizeHide()
aSnapRect = pObj->GetSnapRect();
aRotateAngle = pObj->GetRotateAngle();
aShearAngle = pObj->GetShearAngle();
- CPPUNIT_ASSERT_MESSAGE("Reload, shear angle: ", abs(aShearAngle - aExpectShearAngle) <= 3);
- CPPUNIT_ASSERT_MESSAGE("Reload, rotate angle: ", abs(aRotateAngle - aExpectRotateAngle) <= 3);
+ CPPUNIT_ASSERT_MESSAGE("Reload, shear angle: ",
+ abs(aShearAngle - aExpectShearAngle) <= 3_deg100);
+ CPPUNIT_ASSERT_MESSAGE("Reload, rotate angle: ",
+ abs(aRotateAngle - aExpectRotateAngle) <= 3_deg100);
lcl_AssertRectEqualWithTolerance("Reload: wrong pos or size", aExpectRect, aSnapRect, 4);
pDocSh->DoClose();
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 774f3eb7069a..cbf2267ce07e 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5715,9 +5715,9 @@ void Test::testAnchoredRotatedShape()
SdrRectObj *pObj = new SdrRectObj(*pDrawLayer, aRect);
pPage->InsertObject(pObj);
Point aRef1(pObj->GetSnapRect().Center());
- int nAngle = 9000; //90 deg.
- double nSin = sin(nAngle * F_PI18000);
- double nCos = cos(nAngle * F_PI18000);
+ Degree100 nAngle = 9000_deg100; //90 deg.
+ double nSin = sin(nAngle.get() * F_PI18000);
+ double nCos = cos(nAngle.get() * F_PI18000);
pObj->Rotate(aRef1,nAngle,nSin,nCos);
ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, true);
diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx
index a44f00243ce4..da8490b72f99 100644
--- a/sc/source/core/data/attarray.cxx
+++ b/sc/source/core/data/attarray.cxx
@@ -1355,8 +1355,8 @@ bool ScAttrArray::HasAttrib_Impl(const ScPatternAttr* pPattern, HasAttrFlags nMa
const ScRotateValueItem* pRotate = &pPattern->GetItem( ATTR_ROTATE_VALUE );
// 90 or 270 degrees is former SvxOrientationItem - only look for other values
// (see ScPatternAttr::GetCellOrientation)
- sal_Int32 nAngle = pRotate->GetValue();
- if ( nAngle != 0 && nAngle != 9000 && nAngle != 27000 )
+ Degree100 nAngle = pRotate->GetValue();
+ if ( nAngle && nAngle != 9000_deg100 && nAngle != 27000_deg100 )
bFound = true;
}
if ( nMask & HasAttrFlags::NeedHeight )
diff --git a/sc/source/core/data/attrib.cxx b/sc/source/core/data/attrib.cxx
index 1a155a8fa13d..cb39fec0b2f0 100644
--- a/sc/source/core/data/attrib.cxx
+++ b/sc/source/core/data/attrib.cxx
@@ -729,7 +729,7 @@ void ScCondFormatItem::dumpAsXml(xmlTextWriterPtr pWriter) const
xmlTextWriterEndElement(pWriter);
}
-ScRotateValueItem::ScRotateValueItem(sal_Int32 nAngle)
+ScRotateValueItem::ScRotateValueItem(Degree100 nAngle)
: SdrAngleItem(ATTR_ROTATE_VALUE, nAngle)
{
}
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index d3d9910d9326..22d5a16de895 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -211,7 +211,7 @@ tools::Long ScColumn::GetNeededSize(
if ( bWidth && bBreak ) // after determining bAsianVertical (bBreak may be reset)
return 0;
- tools::Long nRotate = 0;
+ Degree100 nRotate(0);
SvxRotateMode eRotMode = SVX_ROTATE_MODE_STANDARD;
if ( eOrient == SvxCellOrientation::Standard )
{
@@ -228,7 +228,7 @@ tools::Long ScColumn::GetNeededSize(
else
eRotMode = pPattern->GetItem(ATTR_ROTATE_MODE).GetValue();
- if ( nRotate == 18000 )
+ if ( nRotate == 18000_deg100 )
eRotMode = SVX_ROTATE_MODE_STANDARD; // no overflow
}
}
@@ -237,7 +237,7 @@ tools::Long ScColumn::GetNeededSize(
{
// ignore orientation/rotation if "repeat" is active
eOrient = SvxCellOrientation::Standard;
- nRotate = 0;
+ nRotate = 0_deg100;
bAsianVertical = false;
}
@@ -301,7 +301,7 @@ tools::Long ScColumn::GetNeededSize(
{
//TODO: take different X/Y scaling into consideration
- double nRealOrient = nRotate * F_PI18000; // nRotate is in 1/100 Grad
+ double nRealOrient = nRotate.get() * F_PI18000; // nRotate is in 1/100 Grad
double nCosAbs = fabs( cos( nRealOrient ) );
double nSinAbs = fabs( sin( nRealOrient ) );
tools::Long nHeight = static_cast<tools::Long>( 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 * F_PI18000; // nRotate is in 1/100 Grad
+ double nRealOrient = nRotate.get() * F_PI18000; // nRotate is in 1/100 Grad
double nCosAbs = fabs( cos( nRealOrient ) );
double nSinAbs = fabs( sin( nRealOrient ) );
tools::Long nHeight = static_cast<tools::Long>( aSize.Height() * nCosAbs + aSize.Width() * nSinAbs );
diff --git a/sc/source/core/data/docpool.cxx b/sc/source/core/data/docpool.cxx
index 011b59613689..0a96c3b4ee5d 100644
--- a/sc/source/core/data/docpool.cxx
+++ b/sc/source/core/data/docpool.cxx
@@ -249,7 +249,7 @@ ScDocumentPool::ScDocumentPool()
mvPoolDefaults[ ATTR_VER_JUSTIFY - ATTR_STARTINDEX ] = new SvxVerJustifyItem( SvxCellVerJustify::Standard, ATTR_VER_JUSTIFY);
mvPoolDefaults[ ATTR_VER_JUSTIFY_METHOD - ATTR_STARTINDEX ] = new SvxJustifyMethodItem( SvxCellJustifyMethod::Auto, ATTR_VER_JUSTIFY_METHOD);
mvPoolDefaults[ ATTR_STACKED - ATTR_STARTINDEX ] = new ScVerticalStackCell(false);
- mvPoolDefaults[ ATTR_ROTATE_VALUE - ATTR_STARTINDEX ] = new ScRotateValueItem( 0 );
+ mvPoolDefaults[ ATTR_ROTATE_VALUE - ATTR_STARTINDEX ] = new ScRotateValueItem( 0_deg100 );
mvPoolDefaults[ ATTR_ROTATE_MODE - ATTR_STARTINDEX ] = new SvxRotateModeItem( SVX_ROTATE_MODE_BOTTOM, ATTR_ROTATE_MODE );
mvPoolDefaults[ ATTR_VERTICAL_ASIAN - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_VERTICAL_ASIAN );
// The default for the ATTR_WRITINGDIR cell attribute must by SvxFrameDirection::Environment,
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index cb3212ece075..5bbdd06266ee 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -5184,8 +5184,8 @@ bool ScDocument::HasAttrib( SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
{
// 90 or 270 degrees is former SvxOrientationItem - only look for other values
// (see ScPatternAttr::GetCellOrientation)
- sal_Int32 nAngle = static_cast<const ScRotateValueItem*>(pItem)->GetValue();
- if ( nAngle != 0 && nAngle != 9000 && nAngle != 27000 )
+ Degree100 nAngle = static_cast<const ScRotateValueItem*>(pItem)->GetValue();
+ if ( nAngle && nAngle != 9000_deg100 && nAngle != 27000_deg100 )
{
bAnyItem = true;
break;
diff --git a/sc/source/core/data/patattr.cxx b/sc/source/core/data/patattr.cxx
index 0a3433ba3d25..2f77588165d2 100644
--- a/sc/source/core/data/patattr.cxx
+++ b/sc/source/core/data/patattr.cxx
@@ -165,10 +165,10 @@ SvxCellOrientation ScPatternAttr::GetCellOrientation( const SfxItemSet& rItemSet
}
else
{
- sal_Int32 nAngle = GetItem( ATTR_ROTATE_VALUE, rItemSet, pCondSet ).GetValue();
- if( nAngle == 9000 )
+ Degree100 nAngle = GetItem( ATTR_ROTATE_VALUE, rItemSet, pCondSet ).GetValue();
+ if( nAngle == 9000_deg100 )
eOrient = SvxCellOrientation::BottomUp;
- else if( nAngle == 27000 )
+ else if( nAngle == 27000_deg100 )
eOrient = SvxCellOrientation::TopBottom;
}
@@ -1312,9 +1312,9 @@ const SfxPoolItem& ScPatternAttr::GetItem( sal_uInt16 nSubWhich, const SfxItemSe
// GetRotateVal is tested before ATTR_ORIENTATION
-tools::Long ScPatternAttr::GetRotateVal( const SfxItemSet* pCondSet ) const
+Degree100 ScPatternAttr::GetRotateVal( const SfxItemSet* pCondSet ) const
{
- tools::Long nAttrRotate = 0;
+ Degree100 nAttrRotate(0);
if ( GetCellOrientation() == SvxCellOrientation::Standard )
{
bool bRepeat = ( GetItem(ATTR_HOR_JUSTIFY, pCondSet).
@@ -1330,22 +1330,22 @@ ScRotateDir ScPatternAttr::GetRotateDir( const SfxItemSet* pCondSet ) const
{
ScRotateDir nRet = ScRotateDir::NONE;
- tools::Long nAttrRotate = GetRotateVal( pCondSet );
+ Degree100 nAttrRotate = GetRotateVal( pCondSet );
if ( nAttrRotate )
{
SvxRotateMode eRotMode = GetItem(ATTR_ROTATE_MODE, pCondSet).GetValue();
- if ( eRotMode == SVX_ROTATE_MODE_STANDARD || nAttrRotate == 18000 )
+ if ( eRotMode == SVX_ROTATE_MODE_STANDARD || nAttrRotate == 18000_deg100 )
nRet = ScRotateDir::Standard;
else if ( eRotMode == SVX_ROTATE_MODE_CENTER )
nRet = ScRotateDir::Center;
else if ( eRotMode == SVX_ROTATE_MODE_TOP || eRotMode == SVX_ROTATE_MODE_BOTTOM )
{
- tools::Long nRot180 = nAttrRotate % 18000; // 1/100 degrees
- if ( nRot180 == 9000 )
+ Degree100 nRot180 = nAttrRotate % 18000_deg100; // 1/100 degrees
+ if ( nRot180 == 9000_deg100 )
nRet = ScRotateDir::Center;
- else if ( ( eRotMode == SVX_ROTATE_MODE_TOP && nRot180 < 9000 ) ||
- ( eRotMode == SVX_ROTATE_MODE_BOTTOM && nRot180 > 9000 ) )
+ else if ( ( eRotMode == SVX_ROTATE_MODE_TOP && nRot180 < 9000_deg100 ) ||
+ ( eRotMode == SVX_ROTATE_MODE_BOTTOM && nRot180 > 9000_deg100 ) )
nRet = ScRotateDir::Left;
else
nRet = ScRotateDir::Right;
diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx
index d8fb7fac5b0f..1ddf2993b170 100644
--- a/sc/source/core/data/table2.cxx
+++ b/sc/source/core/data/table2.cxx
@@ -2172,9 +2172,9 @@ SCSIZE ScTable::FillMaxRot( RowInfo* pRowInfo, SCSIZE nArrCount, SCCOL nX1, SCCO
double nFactor = 0.0;
if ( nCol > nX2+1 )
{
- tools::Long nRotVal = pPattern->
+ Degree100 nRotVal = pPattern->
GetItem( ATTR_ROTATE_VALUE, pCondSet ).GetValue();
- double nRealOrient = nRotVal * F_PI18000; // 1/100 degree
+ double nRealOrient = nRotVal.get() * F_PI18000; // 1/100 degree
double nCos = cos( nRealOrient );
double nSin = sin( nRealOrient );
//TODO: limit !!!
diff --git a/sc/source/core/tool/autoform.cxx b/sc/source/core/tool/autoform.cxx
index f8bb63325318..c7d70f4ac82e 100644
--- a/sc/source/core/tool/autoform.cxx
+++ b/sc/source/core/tool/autoform.cxx
@@ -189,7 +189,7 @@ ScAutoFormatDataField::ScAutoFormatDataField()
m_aStacked = std::make_unique<ScVerticalStackCell>();
m_aMargin = std::make_unique<SvxMarginItem>(ATTR_MARGIN);
m_aLinebreak = std::make_unique<ScLineBreakCell>();
- m_aRotateAngle = std::make_unique<ScRotateValueItem>(0);
+ m_aRotateAngle = std::make_unique<ScRotateValueItem>(0_deg100);
m_aRotateMode = std::make_unique<SvxRotateModeItem>(SVX_ROTATE_MODE_STANDARD, ATTR_ROTATE_MODE);
}
diff --git a/sc/source/filter/excel/xestyle.cxx b/sc/source/filter/excel/xestyle.cxx
index 48bc5df23dc9..7a5626047c99 100644
--- a/sc/source/filter/excel/xestyle.cxx
+++ b/sc/source/filter/excel/xestyle.cxx
@@ -1489,7 +1489,7 @@ bool XclExpCellAlign::FillFromItemSet(
else
{
// rotation
- sal_Int32 nScRot = rItemSet.Get( ATTR_ROTATE_VALUE ).GetValue();
+ Degree100 nScRot = rItemSet.Get( ATTR_ROTATE_VALUE ).GetValue();
mnRotation = XclTools::GetXclRotation( nScRot );
bUsed |= ScfTools::CheckItem( rItemSet, ATTR_ROTATE_VALUE, bStyle );
}
diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx
index 16b64c8f2e0c..81cee0d9df63 100644
--- a/sc/source/filter/excel/xichart.cxx
+++ b/sc/source/filter/excel/xichart.cxx
@@ -1202,18 +1202,18 @@ void XclImpChText::ConvertTitlePosition( const XclChTextKey& rTitleKey ) const
// the call to XShape.getSize() may recalc the chart view
css::awt::Size aTitleSize = xTitleShape->getSize();
// rotated titles need special handling...
- sal_Int32 nScRot = XclTools::GetScRotation( GetRotation(), 0 );
- double fRad = nScRot * F_PI18000;
+ Degree100 nScRot = XclTools::GetScRotation( GetRotation(), 0_deg100 );
+ double fRad = nScRot.get() * F_PI18000;
double fSin = fabs( sin( fRad ) );
// calculate the title position from the values in the CHTEXT record
css::awt::Point aTitlePos(
CalcHmmFromChartX( maData.maRect.mnX ),
CalcHmmFromChartY( maData.maRect.mnY ) );
// add part of height to X direction, if title is rotated down (clockwise)
- if( nScRot > 18000 )
+ if( nScRot > 18000_deg100 )
aTitlePos.X += static_cast< sal_Int32 >( fSin * aTitleSize.Height + 0.5 );
// add part of width to Y direction, if title is rotated up (counterclockwise)
- else if( nScRot > 0 )
+ else if( nScRot > 0_deg100 )
aTitlePos.Y += static_cast< sal_Int32 >( fSin * aTitleSize.Width + 0.5 );
// set the resulting position at the title shape
xTitleShape->setPosition( aTitlePos );
diff --git a/sc/source/filter/excel/xiescher.cxx b/sc/source/filter/excel/xiescher.cxx
index a4ceae554be5..0e46318a6838 100644
--- a/sc/source/filter/excel/xiescher.cxx
+++ b/sc/source/filter/excel/xiescher.cxx
@@ -1289,32 +1289,32 @@ void XclImpArcObj::DoReadObj5( XclImpStream& rStrm, sal_uInt16 nNameLen, sal_uIn
SdrObjectUniquePtr XclImpArcObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, const tools::Rectangle& rAnchorRect ) const
{
tools::Rectangle aNewRect = rAnchorRect;
- tools::Long nStartAngle = 0;
- tools::Long nEndAngle = 0;
+ Degree100 nStartAngle;
+ Degree100 nEndAngle;
switch( mnQuadrant )
{
default:
case EXC_OBJ_ARC_TR:
- nStartAngle = 0;
- nEndAngle = 9000;
+ nStartAngle = 0_deg100;
+ nEndAngle = 9000_deg100;
aNewRect.AdjustLeft( -(rAnchorRect.GetWidth()) );
aNewRect.AdjustBottom(rAnchorRect.GetHeight() );
break;
case EXC_OBJ_ARC_TL:
- nStartAngle = 9000;
- nEndAngle = 18000;
+ nStartAngle = 9000_deg100;
+ nEndAngle = 18000_deg100;
aNewRect.AdjustRight(rAnchorRect.GetWidth() );
aNewRect.AdjustBottom(rAnchorRect.GetHeight() );
break;
case EXC_OBJ_ARC_BL:
- nStartAngle = 18000;
- nEndAngle = 27000;
+ nStartAngle = 18000_deg100;
+ nEndAngle = 27000_deg100;
aNewRect.AdjustRight(rAnchorRect.GetWidth() );
aNewRect.AdjustTop( -(rAnchorRect.GetHeight()) );
break;
case EXC_OBJ_ARC_BR:
- nStartAngle = 27000;
- nEndAngle = 0;
+ nStartAngle = 27000_deg100;
+ nEndAngle = 0_deg100;
aNewRect.AdjustLeft( -(rAnchorRect.GetWidth()) );
aNewRect.AdjustTop( -(rAnchorRect.GetHeight()) );
break;
diff --git a/sc/source/filter/excel/xistyle.cxx b/sc/source/filter/excel/xistyle.cxx
index 7a263bc9ed21..5a0ca78592d3 100644
--- a/sc/source/filter/excel/xistyle.cxx
+++ b/sc/source/filter/excel/xistyle.cxx
@@ -834,7 +834,7 @@ void XclImpCellAlign::FillToItemSet( SfxItemSet& rItemSet, const XclImpFont* pFo
bool bStacked = (nXclRot == EXC_ROT_STACKED);
ScfTools::PutItem( rItemSet, ScVerticalStackCell( bStacked ), bSkipPoolDefs );
// set an angle in the range from -90 to 90 degrees
- sal_Int32 nAngle = XclTools::GetScRotation( nXclRot, 0 );
+ Degree100 nAngle = XclTools::GetScRotation( nXclRot, 0_deg100 );
ScfTools::PutItem( rItemSet, ScRotateValueItem( nAngle ), bSkipPoolDefs );
// set "Use asian vertical layout", if cell is stacked and font contains CKJ characters
bool bAsianVert = bStacked && pFont && pFont->HasAsianChars();
diff --git a/sc/source/filter/excel/xlchart.cxx b/sc/source/filter/excel/xlchart.cxx
index 0355a56afafd..3503ba9567fe 100644
--- a/sc/source/filter/excel/xlchart.cxx
+++ b/sc/source/filter/excel/xlchart.cxx
@@ -897,7 +897,7 @@ sal_uInt16 XclChPropSetHelper::ReadRotationProperties( const ScfPropertySet& rPr
rPropSet.GetProperty( fAngle, EXC_CHPROP_TEXTROTATION );
bool bStacked = bSupportsStacked && rPropSet.GetBoolProperty( EXC_CHPROP_STACKCHARACTERS );
return bStacked ? EXC_ROT_STACKED :
- XclTools::GetXclRotation( static_cast< sal_Int32 >( fAngle * 100.0 + 0.5 ) );
+ XclTools::GetXclRotation( Degree100(static_cast< sal_Int32 >( fAngle * 100.0 + 0.5 )) );
}
// write properties -----------------------------------------------------------
@@ -1097,7 +1097,7 @@ void XclChPropSetHelper::WriteRotationProperties(
if( nRotation != EXC_CHART_AUTOROTATION )
{
// chart2 handles rotation as double in the range [0,360)
- double fAngle = XclTools::GetScRotation( nRotation, 0 ) / 100.0;
+ double fAngle = XclTools::GetScRotation( nRotation, 0_deg100 ).get() / 100.0;
rPropSet.SetProperty( EXC_CHPROP_TEXTROTATION, fAngle );
if( bSupportsStacked )
rPropSet.SetProperty( EXC_CHPROP_STACKCHARACTERS, nRotation == EXC_ROT_STACKED );
diff --git a/sc/source/filter/excel/xltools.cxx b/sc/source/filter/excel/xltools.cxx
index ca0aeb278e1b..1c56279cdd63 100644
--- a/sc/source/filter/excel/xltools.cxx
+++ b/sc/source/filter/excel/xltools.cxx
@@ -150,17 +150,17 @@ bool XclTools::GetRKFromDouble( sal_Int32& rnRKValue, double fValue )
return false;
}
-sal_Int32 XclTools::GetScRotation( sal_uInt16 nXclRot, sal_Int32 nRotForStacked )
+Degree100 XclTools::GetScRotation( sal_uInt16 nXclRot, Degree100 nRotForStacked )
{
if( nXclRot == EXC_ROT_STACKED )
return nRotForStacked;
OSL_ENSURE( nXclRot <= 180, "XclTools::GetScRotation - illegal rotation angle" );
- return static_cast< sal_Int32 >( (nXclRot <= 180) ? (100 * ((nXclRot > 90) ? (450 - nXclRot) : nXclRot)) : 0 );
+ return Degree100(static_cast< sal_Int32 >( (nXclRot <= 180) ? (100 * ((nXclRot > 90) ? (450 - nXclRot) : nXclRot)) : 0 ));
}
-sal_uInt8 XclTools::GetXclRotation( sal_Int32 nScRot )
+sal_uInt8 XclTools::GetXclRotation( Degree100 nScRot )
{
- sal_Int32 nXclRot = nScRot / 100;
+ sal_Int32 nXclRot = nScRot.get() / 100;
if( (0 <= nXclRot) && (nXclRot <= 90) )
return static_cast< sal_uInt8 >( nXclRot );
if( nXclRot < 180 )
diff --git a/sc/source/filter/html/htmlexp2.cxx b/sc/source/filter/html/htmlexp2.cxx
index af00eddd462d..3ec4796e102b 100644
--- a/sc/source/filter/html/htmlexp2.cxx
+++ b/sc/source/filter/html/htmlexp2.cxx
@@ -133,7 +133,7 @@ void ScHTMLExport::WriteGraphEntry( ScHTMLGraphEntry* pE )
{
const SdrGrafObj* pSGO = static_cast<SdrGrafObj*>(pObject);
const SdrGrafObjGeoData* pGeo = static_cast<SdrGrafObjGeoData*>(pSGO->GetGeoData());
- sal_uInt16 nMirrorCase = (pGeo->aGeo.nRotationAngle == 18000 ?
+ sal_uInt16 nMirrorCase = (pGeo->aGeo.nRotationAngle == 18000_deg100 ?
( pGeo->bMirrored ? 3 : 4 ) : ( pGeo->bMirrored ? 2 : 1 ));
bool bHMirr = ( ( nMirrorCase == 2 ) || ( nMirrorCase == 4 ) );
bool bVMirr = ( ( nMirrorCase == 3 ) || ( nMirrorCase == 4 ) );
diff --git a/sc/source/filter/inc/stylesbuffer.hxx b/sc/source/filter/inc/stylesbuffer.hxx
index f52cad55f863..bb786d0963b6 100644
--- a/sc/source/filter/inc/stylesbuffer.hxx
+++ b/sc/source/filter/inc/stylesbuffer.hxx
@@ -290,7 +290,7 @@ struct ApiAlignmentData
sal_Int32 mnVerJustify; /// Vertical alignment.
sal_Int32 mnVerJustifyMethod;
css::table::CellOrientation meOrientation; /// Normal or stacked text.
- sal_Int32 mnRotation; /// Text rotation angle.
+ Degree100 mnRotation; /// Text rotation angle.
sal_Int16 mnWritingMode; /// CTL text direction.
sal_Int16 mnIndent; /// Indentation.
bool mbWrapText; /// True = multi-line text.
diff --git a/sc/source/filter/inc/xltools.hxx b/sc/source/filter/inc/xltools.hxx
index 51f86fe8c44b..9b77c88e636f 100644
--- a/sc/source/filter/inc/xltools.hxx
+++ b/sc/source/filter/inc/xltools.hxx
@@ -24,6 +24,7 @@
#include "ftools.hxx"
#include <tools/long.hxx>
+#include <tools/degree.hxx>
class SfxObjectShell;
enum class FormulaError : sal_uInt16;
@@ -108,9 +109,9 @@ public:
/** Calculates an angle (in 1/100 of degrees) from an Excel angle value.
@param nRotForStacked This value will be returned, if nXclRot contains 'stacked'. */
- static sal_Int32 GetScRotation( sal_uInt16 nXclRot, sal_Int32 nRotForStacked );
+ static Degree100 GetScRotation( sal_uInt16 nXclRot, Degree100 nRotForStacked );
/** Calculates the Excel angle value from an angle in 1/100 of degrees. */
- static sal_uInt8 GetXclRotation( sal_Int32 nScRot );
+ static sal_uInt8 GetXclRotation( Degree100 nScRot );
/** Calculates BIFF8 rotation angle from BIFF2-BIFF5 text orientation. */
static sal_uInt8 GetXclRotFromOrient( sal_uInt8 nXclOrient );
diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx
index 21fef5944e61..e688a5221e48 100644
--- a/sc/source/filter/oox/stylesbuffer.cxx
+++ b/sc/source/filter/oox/stylesbuffer.cxx
@@ -1196,9 +1196,9 @@ void Alignment::finalizeImport()
// rotation: 0-90 means 0 to 90 degrees ccw, 91-180 means 1 to 90 degrees cw, 255 means stacked
sal_Int32 nOoxRot = maModel.mnRotation;
- maApiData.mnRotation = ((0 <= nOoxRot) && (nOoxRot <= 90)) ?
+ maApiData.mnRotation = Degree100(((0 <= nOoxRot) && (nOoxRot <= 90)) ?
(100 * nOoxRot) :
- (((91 <= nOoxRot) && (nOoxRot <= 180)) ? (100 * (450 - nOoxRot)) : 0);
+ (((91 <= nOoxRot) && (nOoxRot <= 180)) ? (100 * (450 - nOoxRot)) : 0));
// "Orientation" property used for character stacking
maApiData.meOrientation = (nOoxRot == OOX_XF_ROTATION_STACKED) ?
@@ -2203,7 +2203,7 @@ Xf::createPattern( bool bSkipPoolDefs )
sal_Int32 nBorderId = maModel.mbBorderUsed ? maModel.mnBorderId : (pStyleXf ? pStyleXf->maModel.mnBorderId : -1);
if( const Border* pBorder = rStyles.getBorder( nBorderId ).get() )
{
- if( (pAlignment->getApiData().mnRotation != 0) && pBorder->getApiData().hasAnyOuterBorder() )
+ if( (pAlignment->getApiData().mnRotation) && pBorder->getApiData().hasAnyOuterBorder() )
{
meRotationRef = css::table::CellVertJustify2::BOTTOM;
eRotateMode = SVX_ROTATE_MODE_BOTTOM;
diff --git a/sc/source/filter/xcl97/xcl97rec.cxx b/sc/source/filter/xcl97/xcl97rec.cxx
index da087a93c2f4..fa374c486ac2 100644
--- a/sc/source/filter/xcl97/xcl97rec.cxx
+++ b/sc/source/filter/xcl97/xcl97rec.cxx
@@ -866,10 +866,10 @@ XclTxo::XclTxo( const XclExpRoot& rRoot, const SdrTextObj& rTextObj ) :
SetVerAlign( lcl_GetVerAlignFromItemSet( rItemSet ) );
// rotation
- tools::Long nAngle = rTextObj.GetRotateAngle();
- if( (4500 < nAngle) && (nAngle < 13500) )
+ Degree100 nAngle = rTextObj.GetRotateAngle();
+ if( (4500_deg100 < nAngle) && (nAngle < 13500_deg100) )
mnRotation = EXC_OBJ_ORIENT_90CCW;
- else if( (22500 < nAngle) && (nAngle < 31500) )
+ else if( (22500_deg100 < nAngle) && (nAngle < 31500_deg100) )
mnRotation = EXC_OBJ_ORIENT_90CW;
else
mnRotation = EXC_OBJ_ORIENT_NONE;
@@ -1095,8 +1095,8 @@ void XclObjAny::WriteFromTo( XclExpXmlStream& rStrm, const Reference< XShape >&
SdrObject* pObj = SdrObject::getSdrObjectFromXShape(rShape.get());
if (pObj)
{
- sal_Int32 nRotation = pObj->GetRotateAngle();
- if (nRotation != 0)
+ Degree100 nRotation = pObj->GetRotateAngle();
+ if (nRotation)
{
sal_Int16 nHalfWidth = aSize.Width / 2;
sal_Int16 nHalfHeight = aSize.Height / 2;
@@ -1111,7 +1111,7 @@ void XclObjAny::WriteFromTo( XclExpXmlStream& rStrm, const Reference< XShape >&
// MSO changes the anchor positions at these angles and that does an extra 90 degrees
// rotation on our shapes, so we output it in such position that MSO
// can draw this shape correctly.
- if ((nRotation >= 45 * 100 && nRotation < 135 * 100) || (nRotation >= 225 * 100 && nRotation < 315 * 100))
+ if ((nRotation >= 4500_deg100 && nRotation < 13500_deg100) || (nRotation >= 22500_deg100 && nRotation < 31500_deg100))
{
aTopLeft.X = aTopLeft.X - nHalfHeight + nHalfWidth;
aTopLeft.Y = aTopLeft.Y - nHalfWidth + nHalfHeight;
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index 5bc1ff24f0e8..768e42d4e279 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -3511,7 +3511,7 @@ void ScXMLExport::WriteShapes(const ScMyCell& rMyCell)
if (pObj)
{
pObjData = ScDrawLayer::GetObjData(pObj);
- bIsShapeTransformed = pObj->GetRotateAngle() != 0 || pObj->GetShearAngle() != 0;
+ bIsShapeTransformed = pObj->GetRotateAngle() != 0_deg100 || pObj->GetShearAngle() != 0_deg100;
}
if (bIsShapeTransformed && pObjData)
aSnapStartAddress = pObjData->maStart;
diff --git a/sc/source/ui/Accessibility/AccessibleCell.cxx b/sc/source/ui/Accessibility/AccessibleCell.cxx
index 0f6fd86a20ba..734e9e085302 100644
--- a/sc/source/ui/Accessibility/AccessibleCell.cxx
+++ b/sc/source/ui/Accessibility/AccessibleCell.cxx
@@ -190,7 +190,7 @@ tools::Rectangle ScAccessibleCell::GetBoundingBox() const
if (mpDoc)
{
const ScRotateValueItem* pItem = mpDoc->GetAttr( maCellAddress, ATTR_ROTATE_VALUE );
- if( pItem && (pItem->GetValue() != 0) )
+ if( pItem && (pItem->GetValue() != 0_deg100) )
{
tools::Rectangle aParaRect = GetParagraphBoundingBox();
if( !aParaRect.IsEmpty() && (aCellRect.GetWidth() < aParaRect.GetWidth()) )
diff --git a/sc/source/ui/Accessibility/AccessibleText.cxx b/sc/source/ui/Accessibility/AccessibleText.cxx
index 3166fbd513a4..31f8586e1054 100644
--- a/sc/source/ui/Accessibility/AccessibleText.cxx
+++ b/sc/source/ui/Accessibility/AccessibleText.cxx
@@ -536,7 +536,7 @@ SvxTextForwarder* ScAccessibleCellTextData::GetTextForwarder()
the cell bounding box in ScAccessibleCell::GetBoundingBox()
(see sc/source/ui/Accessibility/AccessibleCell.cxx). */
const ScRotateValueItem* pItem = rDoc.GetAttr( aCellPos, ATTR_ROTATE_VALUE );
- if( pItem && (pItem->GetValue() != 0) )
+ if( pItem && (pItem->GetValue() != 0_deg100) )
{
pEditEngine->SetPaperSize( Size( LONG_MAX, aSize.getHeight() ) );
tools::Long nTxtWidth = static_cast< tools::Long >( pEditEngine->CalcTextWidth() );
diff --git a/sc/source/ui/drawfunc/fuconarc.cxx b/sc/source/ui/drawfunc/fuconarc.cxx
index 368a1fd68c06..5d85181eb300 100644
--- a/sc/source/ui/drawfunc/fuconarc.cxx
+++ b/sc/source/ui/drawfunc/fuconarc.cxx
@@ -136,8 +136,8 @@ SdrObjectUniquePtr FuConstArc::CreateDefaultObject(const sal_uInt16 nID, const t
pObj->SetLogicRect(aRect);
SfxItemSet aAttr(pDrDoc->GetItemPool());
- aAttr.Put(makeSdrCircStartAngleItem(9000));
- aAttr.Put(makeSdrCircEndAngleItem(0));
+ aAttr.Put(makeSdrCircStartAngleItem(9000_deg100));
+ aAttr.Put(makeSdrCircEndAngleItem(0_deg100));
pObj->SetMergedItemSet(aAttr);
}
diff --git a/sc/source/ui/drawfunc/fuconcustomshape.cxx b/sc/source/ui/drawfunc/fuconcustomshape.cxx
index 75edd8be6a6f..e73c6d99327e 100644
--- a/sc/source/ui/drawfunc/fuconcustomshape.cxx
+++ b/sc/source/ui/drawfunc/fuconcustomshape.cxx
@@ -180,7 +180,7 @@ void FuConstCustomShape::SetAttributes( SdrObject* pObj )
EE_ITEMS_START, EE_ITEMS_END>{});
aDest.Set( rSource );
pObj->SetMergedItemSet( aDest );
- sal_Int32 nAngle = pSourceObj->GetRotateAngle();
+ Degree100 nAngle = pSourceObj->GetRotateAngle();
if ( nAngle )
pObj->NbcRotate( pObj->GetSnapRect().Center(), nAngle );
bAttributesAppliedFromGallery = true;
diff --git a/sc/source/ui/inc/output.hxx b/sc/source/ui/inc/output.hxx
index 528b4ef770f4..f278d257552f 100644
--- a/sc/source/ui/inc/output.hxx
+++ b/sc/source/ui/inc/output.hxx
@@ -27,6 +27,7 @@
#include <tools/gen.hxx>
#include <editeng/svxenum.hxx>
#include <vcl/outdev.hxx>
+#include <tools/degree.hxx>
#include <o3tl/deleter.hxx>
#include <optional>
@@ -256,7 +257,7 @@ private:
void ShrinkEditEngine( EditEngine& rEngine, const tools::Rectangle& rAlignRect,
tools::Long nLeftM, tools::Long nTopM, tools::Long nRightM, tools::Long nBottomM,
- bool bWidth, SvxCellOrientation nOrient, tools::Long nAttrRotate, bool bPixelToLogic,
+ bool bWidth, SvxCellOrientation nOrient, Degree100 nAttrRotate, bool bPixelToLogic,
tools::Long& rEngineWidth, tools::Long& rEngineHeight, tools::Long& rNeededPixel,
bool& rLeftClip, bool& rRightClip );
diff --git a/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx b/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx
index 7c51f5db9a2c..24396c7c6ae6 100644
--- a/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx
+++ b/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx
@@ -155,7 +155,7 @@ IMPL_LINK(AlignmentPropertyPanel, ReferenceEdgeHdl, weld::ToggleButton&, rToggle
IMPL_LINK_NOARG( AlignmentPropertyPanel, AngleModifiedHdl, weld::MetricSpinButton&, void )
{
- sal_uInt32 nAngle = mxMtrAngle->get_value(FieldUnit::DEGREE) * 100;
+ Degree100 nAngle(mxMtrAngle->get_value(FieldUnit::DEGREE) * 100);
ScRotateValueItem aAngleItem(nAngle);
GetBindings()->GetDispatcher()->ExecuteList(
@@ -345,8 +345,8 @@ void AlignmentPropertyPanel::NotifyItemUpdate(
case SID_ATTR_ALIGN_DEGREES:
if (eState >= SfxItemState::DEFAULT)
{
- tools::Long nTmp = static_cast<const ScRotateValueItem*>(pState)->GetValue();
- mxMtrAngle->set_value(nTmp / 100, FieldUnit::DEGREE);
+ Degree100 nTmp = static_cast<const ScRotateValueItem*>(pState)->GetValue();
+ mxMtrAngle->set_value(nTmp.get() / 100, FieldUnit::DEGREE);
}
else
{
diff --git a/sc/source/ui/unoobj/afmtuno.cxx b/sc/source/ui/unoobj/afmtuno.cxx
index 6dbf2c5e82d6..d56c6d545d0c 100644
--- a/sc/source/ui/unoobj/afmtuno.cxx
+++ b/sc/source/ui/unoobj/afmtuno.cxx
@@ -594,11 +594,11 @@ void SAL_CALL ScAutoFormatFieldObj::setPropertyValue(
break;
case table::CellOrientation_TOPBOTTOM:
pData->PutItem( nFieldIndex, ScVerticalStackCell( false ) );
- pData->PutItem( nFieldIndex, ScRotateValueItem( 27000 ) );
+ pData->PutItem( nFieldIndex, ScRotateValueItem( 27000_deg100 ) );
break;
case table::CellOrientation_BOTTOMTOP:
pData->PutItem( nFieldIndex, ScVerticalStackCell( false ) );
- pData->PutItem( nFieldIndex, ScRotateValueItem( 9000 ) );
+ pData->PutItem( nFieldIndex, ScRotateValueItem( 9000_deg100 ) );
break;
case table::CellOrientation_STACKED:
pData->PutItem( nFieldIndex, ScVerticalStackCell( true ) );
@@ -684,7 +684,7 @@ uno::Any SAL_CALL ScAutoFormatFieldObj::getPropertyValue( const OUString& aPrope
case ATTR_STACKED:
{
const ScRotateValueItem* pRotItem = pData->GetItem( nFieldIndex, ATTR_ROTATE_VALUE );
- sal_Int32 nRot = pRotItem ? pRotItem->GetValue() : 0;
+ Degree100 nRot = pRotItem ? pRotItem->GetValue() : 0_deg100;
bool bStacked = static_cast<const ScVerticalStackCell*>(pItem)->GetValue();
SvxOrientationItem( nRot, bStacked, 0 ).QueryValue( aVal );
}
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index 5ab47983f385..4647b2bd3b4e 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -2109,7 +2109,7 @@ static void lcl_SetCellProperty( const SfxItemPropertySimpleEntry& rEntry, const
if ( nRotVal < 0 )
nRotVal += 36000;
- rSet.Put( ScRotateValueItem( nRotVal ) );
+ rSet.Put( ScRotateValueItem( Degree100(nRotVal) ) );
}
break;
@@ -2125,12 +2125,12 @@ static void lcl_SetCellProperty( const SfxItemPropertySimpleEntry& rEntry, const
break;
case table::CellOrientation_TOPBOTTOM:
rSet.Put( ScVerticalStackCell( false ) );
- rSet.Put( ScRotateValueItem( 27000 ) );
+ rSet.Put( ScRotateValueItem( 27000_deg100 ) );
rSecondItemId = ATTR_ROTATE_VALUE;
break;
case table::CellOrientation_BOTTOMTOP:
rSet.Put( ScVerticalStackCell( false ) );
- rSet.Put( ScRotateValueItem( 9000 ) );
+ rSet.Put( ScRotateValueItem( 9000_deg100 ) );
rSecondItemId = ATTR_ROTATE_VALUE;
break;
case table::CellOrientation_STACKED:
@@ -2412,7 +2412,7 @@ void ScCellRangesBase::GetOnePropertyValue( const SfxItemPropertySimpleEntry* pE
break;
case ATTR_STACKED:
{
- sal_Int32 nRot = pDataSet->Get(ATTR_ROTATE_VALUE).GetValue();
+ Degree100 nRot = pDataSet->Get(ATTR_ROTATE_VALUE).GetValue();
bool bStacked = static_cast<const ScVerticalStackCell&>(pDataSet->Get(pEntry->nWID)).GetValue();
SvxOrientationItem( nRot, bStacked, 0 ).QueryValue( rAny );
}
diff --git a/sc/source/ui/unoobj/styleuno.cxx b/sc/source/ui/unoobj/styleuno.cxx
index 81db396a5f6f..8df4b3518314 100644
--- a/sc/source/ui/unoobj/styleuno.cxx
+++ b/sc/source/ui/unoobj/styleuno.cxx
@@ -1551,7 +1551,7 @@ void ScStyleObj::setPropertyValue_Impl( std::u16string_view rPropertyName, const
nRotVal %= 36000;
if (nRotVal < 0)
nRotVal += 36000;
- rSet.Put(ScRotateValueItem(nRotVal));
+ rSet.Put(ScRotateValueItem(Degree100(nRotVal)));
}
}
break;
@@ -1567,11 +1567,11 @@ void ScStyleObj::setPropertyValue_Impl( std::u16string_view rPropertyName, const
break;
case table::CellOrientation_TOPBOTTOM:
rSet.Put(ScVerticalStackCell(false));
- rSet.Put(ScRotateValueItem(27000));
+ rSet.Put(ScRotateValueItem(27000_deg100));
break;
case table::CellOrientation_BOTTOMTOP:
rSet.Put(ScVerticalStackCell(false));
- rSet.Put(ScRotateValueItem(9000));
+ rSet.Put(ScRotateValueItem(9000_deg100));
break;
case table::CellOrientation_STACKED:
rSet.Put(ScVerticalStackCell(true));
@@ -1811,7 +1811,7 @@ uno::Any ScStyleObj::getPropertyValue_Impl( std::u16string_view aPropertyName )
break;
case ATTR_STACKED:
{
- sal_Int32 nRot = pItemSet->Get(ATTR_ROTATE_VALUE).GetValue();
+ Degree100 nRot = pItemSet->Get(ATTR_ROTATE_VALUE).GetValue();
bool bStacked = static_cast<const ScVerticalStackCell&>(pItemSet->Get(nWhich)).GetValue();
SvxOrientationItem( nRot, bStacked, 0 ).QueryValue( aAny );
}
diff --git a/sc/source/ui/view/output.cxx b/sc/source/ui/view/output.cxx
index d46c996a4bd1..1da5dff9a3f8 100644
--- a/sc/source/ui/view/output.cxx
+++ b/sc/source/ui/view/output.cxx
@@ -650,9 +650,9 @@ void ScOutputData::SetCellRotations()
if(nTargetX >= 0 && nTargetY >= 0)
{
// add rotation info to Array information
- const tools::Long nAttrRotate(pPattern->GetRotateVal(pCondSet));
+ const Degree100 nAttrRotate(pPattern->GetRotateVal(pCondSet));
const SvxRotateMode eRotMode(pPattern->GetItem(ATTR_ROTATE_MODE, pCondSet).GetValue());
- const double fOrient((bLayoutRTL ? -1.0 : 1.0) * nAttrRotate * F_PI18000); // 1/100th degrees -> [0..2PI]
+ const double fOrient((bLayoutRTL ? -1.0 : 1.0) * toRadians(nAttrRotate)); // 1/100th degrees -> [0..2PI]
svx::frame::Array& rArray = mrTabInfo.maArray;
rArray.SetCellRotation(nTargetX, nTargetY, eRotMode, fOrient);
@@ -671,7 +671,7 @@ static ScRotateDir lcl_GetRotateDir( const ScDocument* pDoc, SCCOL nCol, SCROW n
ScRotateDir nRet = ScRotateDir::NONE;
- tools::Long nAttrRotate = pPattern->GetRotateVal( pCondSet );
+ Degree100 nAttrRotate = pPattern->GetRotateVal( pCondSet );
if ( nAttrRotate )
{
SvxRotateMode eRotMode =
@@ -683,7 +683,7 @@ static ScRotateDir lcl_GetRotateDir( const ScDocument* pDoc, SCCOL nCol, SCROW n
nRet = ScRotateDir::Center;
else if ( eRotMode == SVX_ROTATE_MODE_TOP || eRotMode == SVX_ROTATE_MODE_BOTTOM )
{
- tools::Long nRot180 = nAttrRotate % 18000; // 1/100 degree
+ tools::Long nRot180 = nAttrRotate.get() % 18000; // 1/100 degree
if ( nRot180 == 9000 )
nRet = ScRotateDir::Center;
else if ( ( eRotMode == SVX_ROTATE_MODE_TOP && nRot180 < 9000 ) ||
@@ -1549,7 +1549,7 @@ void ScOutputData::DrawRotatedFrame(vcl::RenderContext& rRenderContext)
//! LastPattern etc.
- tools::Long nAttrRotate = pPattern->GetRotateVal( pCondSet );
+ Degree100 nAttrRotate = pPattern->GetRotateVal( pCondSet );
SvxRotateMode eRotMode =
pPattern->GetItem(ATTR_ROTATE_MODE, pCondSet).GetValue();
@@ -1578,7 +1578,7 @@ void ScOutputData::DrawRotatedFrame(vcl::RenderContext& rRenderContext)
// inclusion of the sign here hasn't been decided yet
// (if not, the extension of the non-rotated background must also be changed)
- double nRealOrient = nLayoutSign * nAttrRotate * F_PI18000; // 1/100th degrees
+ double nRealOrient = nLayoutSign * toRadians(nAttrRotate); // 1/100th degrees
double nCos = cos(nRealOrient);
double nSin = sin(nRealOrient);
//! restrict !!!
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index a790cb8c4a17..764919b9d37a 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -360,7 +360,7 @@ void ScDrawStringsVars::SetPattern(
{
case SvxCellOrientation::Standard:
nRot = 0;
- bRotated = pPattern->GetItem( ATTR_ROTATE_VALUE, pCondSet ).GetValue() != 0 &&
+ bRotated = pPattern->GetItem( ATTR_ROTATE_VALUE, pCondSet ).GetValue() != 0_deg100 &&
!bRepeat;
break;
case SvxCellOrientation::Stacked:
@@ -2209,7 +2209,7 @@ static void lcl_ScaleFonts( EditEngine& rEngine, tools::Long nPercent )
rEngine.SetUpdateMode( true );
}
-static tools::Long lcl_GetEditSize( EditEngine& rEngine, bool bWidth, bool bSwap, tools::Long nAttrRotate )
+static tools::Long lcl_GetEditSize( EditEngine& rEngine, bool bWidth, bool bSwap, Degree100 nAttrRotate )
{
if ( bSwap )
bWidth = !bWidth;
@@ -2221,7 +2221,7 @@ static tools::Long lcl_GetEditSize( EditEngine& rEngine, bool bWidth, bool bSwap
// assuming standard mode, otherwise width isn't used
- double nRealOrient = nAttrRotate * F_PI18000; // 1/100th degrees
+ double nRealOrient = toRadians(nAttrRotate); // 1/100th degrees
double nAbsCos = fabs( cos( nRealOrient ) );
double nAbsSin = fabs( sin( nRealOrient ) );
if ( bWidth )
@@ -2237,7 +2237,7 @@ static tools::Long lcl_GetEditSize( EditEngine& rEngine, bool bWidth, bool bSwap
void ScOutputData::ShrinkEditEngine( EditEngine& rEngine, const tools::Rectangle& rAlignRect,
tools::Long nLeftM, tools::Long nTopM, tools::Long nRightM, tools::Long nBottomM,
- bool bWidth, SvxCellOrientation nOrient, tools::Long nAttrRotate, bool bPixelToLogic,
+ bool bWidth, SvxCellOrientation nOrient, Degree100 nAttrRotate, bool bPixelToLogic,
tools::Long& rEngineWidth, tools::Long& rEngineHeight, tools::Long& rNeededPixel, bool& rLeftClip, bool& rRightClip )
{
if ( !bWidth )
@@ -2815,13 +2815,13 @@ void ScOutputData::DrawEditStandard(DrawEditParam& rParam)
bool bRepeat = (rParam.meHorJustAttr == SvxCellHorJustify::Repeat && !rParam.mbBreak);
bool bShrink = !rParam.mbBreak && !bRepeat && lcl_GetBoolValue(*rParam.mpPattern, ATTR_SHRINKTOFIT, rParam.mpCondSet);
- tools::Long nAttrRotate = lcl_GetValue<ScRotateValueItem, long>(*rParam.mpPattern, ATTR_ROTATE_VALUE, rParam.mpCondSet);
+ Degree100 nAttrRotate = lcl_GetValue<ScRotateValueItem, Degree100>(*rParam.mpPattern, ATTR_ROTATE_VALUE, rParam.mpCondSet);
if ( rParam.meHorJustAttr == SvxCellHorJustify::Repeat )
{
// ignore orientation/rotation if "repeat" is active
rParam.meOrient = SvxCellOrientation::Standard;
- nAttrRotate = 0;
+ nAttrRotate = 0_deg100;
// #i31843# "repeat" with "line breaks" is treated as default alignment
// (but rotation is still disabled).
@@ -2937,7 +2937,7 @@ void ScOutputData::DrawEditStandard(DrawEditParam& rParam)
{
ShrinkEditEngine( *rParam.mpEngine, aAreaParam.maAlignRect,
nLeftM, nTopM, nRightM, nBottomM, true,
- rParam.meOrient, 0, rParam.mbPixelToLogic,
+ rParam.meOrient, 0_deg100, rParam.mbPixelToLogic,
nEngineWidth, nEngineHeight, nNeededPixel,
aAreaParam.mbLeftClip, aAreaParam.mbRightClip );
}
@@ -3307,7 +3307,7 @@ void ScOutputData::DrawEditBottomTop(DrawEditParam& rParam)
{
ShrinkEditEngine( *rParam.mpEngine, aAreaParam.maAlignRect,
nLeftM, nTopM, nRightM, nBottomM, false,
- (rParam.meOrient), 0, rParam.mbPixelToLogic,
+ (rParam.meOrient), 0_deg100, rParam.mbPixelToLogic,
nEngineWidth, nEngineHeight, nNeededPixel,
aAreaParam.mbLeftClip, aAreaParam.mbRightClip );
}
@@ -3550,7 +3550,7 @@ void ScOutputData::DrawEditTopBottom(DrawEditParam& rParam)
{
ShrinkEditEngine( *rParam.mpEngine, aAreaParam.maAlignRect,
nLeftM, nTopM, nRightM, nBottomM, false,
- rParam.meOrient, 0, rParam.mbPixelToLogic,
+ rParam.meOrient, 0_deg100, rParam.mbPixelToLogic,
nEngineWidth, nEngineHeight, nNeededPixel,
aAreaParam.mbLeftClip, aAreaParam.mbRightClip );
}
@@ -3805,7 +3805,7 @@ void ScOutputData::DrawEditStacked(DrawEditParam& rParam)
ShrinkEditEngine( *rParam.mpEngine, aAreaParam.maAlignRect,
nLeftM, nTopM, nRightM, nBottomM, true,
- rParam.meOrient, 0, rParam.mbPixelToLogic,
+ rParam.meOrient, 0_deg100, rParam.mbPixelToLogic,
nEngineWidth, nEngineHeight, nNeededPixel,
aAreaParam.mbLeftClip, aAreaParam.mbRightClip );
@@ -3990,7 +3990,7 @@ void ScOutputData::DrawEditAsianVertical(DrawEditParam& rParam)
bool bHidden = false;
bool bShrink = !rParam.mbBreak && lcl_GetBoolValue(*rParam.mpPattern, ATTR_SHRINKTOFIT, rParam.mpCondSet);
- tools::Long nAttrRotate = lcl_GetValue<ScRotateValueItem, long>(*rParam.mpPattern, ATTR_ROTATE_VALUE, rParam.mpCondSet);
+ Degree100 nAttrRotate = lcl_GetValue<ScRotateValueItem, Degree100>(*rParam.mpPattern, ATTR_ROTATE_VALUE, rParam.mpCondSet);
if (nAttrRotate)
{
@@ -4104,7 +4104,7 @@ void ScOutputData::DrawEditAsianVertical(DrawEditParam& rParam)
{
ShrinkEditEngine( *rParam.mpEngine, aAreaParam.maAlignRect,
nLeftM, nTopM, nRightM, nBottomM, false,
- rParam.meOrient, 0, rParam.mbPixelToLogic,
+ rParam.meOrient, 0_deg100, rParam.mbPixelToLogic,
nEngineWidth, nEngineHeight, nNeededPixel,
aAreaParam.mbLeftClip, aAreaParam.mbRightClip );
}
@@ -4633,7 +4633,7 @@ void ScOutputData::DrawRotated(bool bPixelToLogic)
nOutHeight -= nTopM + nBottomM;
// rotate here already, to adjust paper size for page breaks
- tools::Long nAttrRotate = 0;
+ Degree100 nAttrRotate;
double nSin = 0.0;
double nCos = 1.0;
SvxRotateMode eRotMode = SVX_ROTATE_MODE_STANDARD;
@@ -4645,13 +4645,13 @@ void ScOutputData::DrawRotated(bool bPixelToLogic)
{
eRotMode = pPattern->GetItem(ATTR_ROTATE_MODE, pCondSet).GetValue();
- if ( nAttrRotate == 18000 )
+ if ( nAttrRotate == 18000_deg100 )
eRotMode = SVX_ROTATE_MODE_STANDARD; // no overflow
if ( bLayoutRTL )
nAttrRotate = -nAttrRotate;
- double nRealOrient = nAttrRotate * F_PI18000; // 1/100 degree
+ double nRealOrient = toRadians(nAttrRotate); // 1/100 degree
nCos = cos( nRealOrient );
nSin = sin( nRealOrient );
}
@@ -4998,11 +4998,11 @@ void ScOutputData::DrawRotated(bool bPixelToLogic)
OSL_ENSURE( eOrient == SvxCellOrientation::Standard && nAttrRotate,
"DrawRotated: no rotation" );
- sal_Int16 nOriVal = 0;
+ Degree10 nOriVal = 0_deg10;
if ( nAttrRotate )
{
// attribute is 1/100, Font 1/10 degrees
- nOriVal = nAttrRotate / 10;
+ nOriVal = toDegree10(nAttrRotate);
double nAddX = 0.0;
double nAddY = 0.0;
@@ -5054,7 +5054,7 @@ void ScOutputData::DrawRotated(bool bPixelToLogic)
// bSimClip is not used here (because nOriVal is set)
- pEngine->Draw( mpDev, aLogicStart, Degree10(nOriVal) );
+ pEngine->Draw( mpDev, aLogicStart, nOriVal );
if (bMetaFile)
mpDev->Pop();
diff --git a/sd/qa/unit/uiimpress.cxx b/sd/qa/unit/uiimpress.cxx
index 56165d350009..ce2ca269e56c 100644
--- a/sd/qa/unit/uiimpress.cxx
+++ b/sd/qa/unit/uiimpress.cxx
@@ -122,7 +122,7 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testTdf111522)
// Rotate the shape in window 2 & undo.
pView2->MarkObj(pShape2, pView2->GetSdrPageView());
- pView2->RotateMarkedObj(pShape2->GetLastBoundRect().Center(), /*nAngle=*/45);
+ pView2->RotateMarkedObj(pShape2->GetLastBoundRect().Center(), /*nAngle=*/45_deg100);
// Without the accompanying fix in place, this test would have failed with an assertion failure
// in SdrObjEditView::SdrEndTextEdit() as mpOldTextEditUndoManager was not nullptr.
pViewShell2->GetViewFrame()->GetDispatcher()->Execute(SID_UNDO, SfxCallMode::SYNCHRON);
diff --git a/sd/source/ui/app/optsitem.cxx b/sd/source/ui/app/optsitem.cxx
index 7944bf5c93e6..d70e79c517d6 100644
--- a/sd/source/ui/app/optsitem.cxx
+++ b/sd/source/ui/app/optsitem.cxx
@@ -847,8 +847,8 @@ SdOptionsSnapItem::SdOptionsSnapItem( SdOptions const * pOpts, ::sd::FrameView c
maOptionsSnap.SetBigOrtho( pView->IsBigOrtho() );
maOptionsSnap.SetRotate( pView->IsAngleSnapEnabled() );
maOptionsSnap.SetSnapArea( pView->GetSnapMagneticPixel() );
- maOptionsSnap.SetAngle( Degree10(pView->GetSnapAngle() / 10) );
- maOptionsSnap.SetEliminatePolyPointLimitAngle( Degree10(pView->GetEliminatePolyPointLimitAngle() / 10) );
+ maOptionsSnap.SetAngle( toDegree10(pView->GetSnapAngle()) );
+ maOptionsSnap.SetEliminatePolyPointLimitAngle( toDegree10(pView->GetEliminatePolyPointLimitAngle()) );
}
else if( pOpts )
{
diff --git a/sd/source/ui/dlg/copydlg.cxx b/sd/source/ui/dlg/copydlg.cxx
index e1e26a542767..5de5d71bcd8d 100644
--- a/sd/source/ui/dlg/copydlg.cxx
+++ b/sd/source/ui/dlg/copydlg.cxx
@@ -132,7 +132,7 @@ void CopyDlg::Reset()
SetMetricValue( *m_xMtrFldMoveY, tools::Long(nMoveY / maUIScale), MapUnit::Map100thMM);
if( SfxItemState::SET == mrOutAttrs.GetItemState( ATTR_COPY_ANGLE, true, &pPoolItem ) )
- m_xMtrFldAngle->set_value(static_cast<const SdrAngleItem*>( pPoolItem )->GetValue(), FieldUnit::NONE);
+ m_xMtrFldAngle->set_value(static_cast<const SdrAngleItem*>( pPoolItem )->GetValue().get(), FieldUnit::NONE);
else
m_xMtrFldAngle->set_value(0, FieldUnit::NONE);
@@ -188,7 +188,7 @@ void CopyDlg::GetAttr( SfxItemSet& rOutAttrs )
rOutAttrs.Put( SfxUInt16Item( ATTR_COPY_NUMBER, static_cast<sal_uInt16>(m_xNumFldCopies->get_value()) ) );
rOutAttrs.Put( SfxInt32Item( ATTR_COPY_MOVE_X, nMoveX ) );
rOutAttrs.Put( SfxInt32Item( ATTR_COPY_MOVE_Y, nMoveY ) );
- rOutAttrs.Put( SdrAngleItem( ATTR_COPY_ANGLE, static_cast<sal_Int32>(m_xMtrFldAngle->get_value(FieldUnit::DEGREE)) ) );
+ rOutAttrs.Put( SdrAngleItem( ATTR_COPY_ANGLE, Degree100(static_cast<sal_Int32>(m_xMtrFldAngle->get_value(FieldUnit::DEGREE))) ) );
rOutAttrs.Put( SfxInt32Item( ATTR_COPY_WIDTH, nWidth ) );
rOutAttrs.Put( SfxInt32Item( ATTR_COPY_HEIGHT, nHeight ) );
diff --git a/sd/source/ui/dlg/tpoption.cxx b/sd/source/ui/dlg/tpoption.cxx
index 4c647eaf9ea8..e0d43be48569 100644
--- a/sd/source/ui/dlg/tpoption.cxx
+++ b/sd/source/ui/dlg/tpoption.cxx
@@ -89,8 +89,8 @@ void SdTpOptionsSnap::Reset( const SfxItemSet* rAttrs )
m_xCbxBigOrtho->set_active( aOptsItem.GetOptionsSnap().IsBigOrtho() );
m_xCbxRotate->set_active( aOptsItem.GetOptionsSnap().IsRotate() );
m_xMtrFldSnapArea->set_value(aOptsItem.GetOptionsSnap().GetSnapArea(), FieldUnit::PIXEL);
- m_xMtrFldAngle->set_value(aOptsItem.GetOptionsSnap().GetAngle().get() / 10, FieldUnit::DEGREE);
- m_xMtrFldBezAngle->set_value(aOptsItem.GetOptionsSnap().GetEliminatePolyPointLimitAngle().get() / 10, FieldUnit::DEGREE);
+ m_xMtrFldAngle->set_value(aOptsItem.GetOptionsSnap().GetAngle().get(), FieldUnit::DEGREE);
+ m_xMtrFldBezAngle->set_value(aOptsItem.GetOptionsSnap().GetEliminatePolyPointLimitAngle().get(), FieldUnit::DEGREE);
ClickRotateHdl_Impl(*m_xCbxRotate);
}
diff --git a/sd/source/ui/func/fuconarc.cxx b/sd/source/ui/func/fuconarc.cxx
index 2671f4e2fa76..1ced022927ac 100644
--- a/sd/source/ui/func/fuconarc.cxx
+++ b/sd/source/ui/func/fuconarc.cxx
@@ -94,8 +94,8 @@ void FuConstructArc::DoExecute( SfxRequest& rReq )
mpView->getSdrModelFromSdrView(),
ToSdrCircKind(mpView->GetCurrentObjIdentifier()),
aNewRectangle,
- static_cast<::tools::Long>(pPhiStart->GetValue () * 10.0),
- static_cast<::tools::Long>(pPhiEnd->GetValue () * 10.0));
+ pPhiStart->GetValue(),
+ pPhiEnd->GetValue());
SdrPageView *pPV = mpView->GetSdrPageView();
mpView->InsertObjectAtView(pNewCircle, *pPV, SdrInsertFlags::SETDEFLAYER);
@@ -226,8 +226,8 @@ SdrObjectUniquePtr FuConstructArc::CreateDefaultObject(const sal_uInt16 nID, con
pObj->SetLogicRect(aRect);
SfxItemSet aAttr(mpDoc->GetPool());
- aAttr.Put(makeSdrCircStartAngleItem(9000));
- aAttr.Put(makeSdrCircEndAngleItem(0));
+ aAttr.Put(makeSdrCircStartAngleItem(9000_deg100));
+ aAttr.Put(makeSdrCircEndAngleItem(0_deg100));
if(SID_DRAW_PIE_NOFILL == nID ||
SID_DRAW_CIRCLEPIE_NOFILL == nID ||
diff --git a/sd/source/ui/func/fuconcs.cxx b/sd/source/ui/func/fuconcs.cxx
index 844bd824fc74..d1fcf0f3e36e 100644
--- a/sd/source/ui/func/fuconcs.cxx
+++ b/sd/source/ui/func/fuconcs.cxx
@@ -183,7 +183,7 @@ void FuConstructCustomShape::SetAttributes( SdrObject* pObj )
EE_ITEMS_START, EE_ITEMS_END>{});
aDest.Set( rSource );
pObj->SetMergedItemSet( aDest );
- sal_Int32 nAngle = pSourceObj->GetRotateAngle();
+ Degree100 nAngle = pSourceObj->GetRotateAngle();
if ( nAngle )
pObj->NbcRotate( pObj->GetSnapRect().Center(), nAngle );
bAttributesAppliedFromGallery = true;
diff --git a/sd/source/ui/func/fucopy.cxx b/sd/source/ui/func/fucopy.cxx
index ba50612dce3d..c291e3468349 100644
--- a/sd/source/ui/func/fucopy.cxx
+++ b/sd/source/ui/func/fucopy.cxx
@@ -120,7 +120,8 @@ void FuCopy::DoExecute( SfxRequest& rReq )
}
::tools::Rectangle aRect;
- sal_Int32 lWidth = 0, lHeight = 0, lSizeX = 0, lSizeY = 0, lAngle = 0;
+ sal_Int32 lWidth = 0, lHeight = 0, lSizeX = 0, lSizeY = 0;
+ Degree100 lAngle(0);
sal_uInt16 nNumber = 0;
Color aStartColor, aEndColor;
bool bColor = false;
diff --git a/sd/source/ui/func/fusel.cxx b/sd/source/ui/func/fusel.cxx
index 904696bb063a..fbcd7ada5c53 100644
--- a/sd/source/ui/func/fusel.cxx
+++ b/sd/source/ui/func/fusel.cxx
@@ -169,10 +169,10 @@ bool FuSelection::MouseButtonDown(const MouseEvent& rMEvt)
mpWindow->CaptureMouse();
pHdl = mpView->PickHandle(aMDPos);
- ::tools::Long nAngle0 = GetAngle(aMDPos - mpView->GetRef1());
- nAngle0 -= 27000;
+ Degree100 nAngle0 = GetAngle(aMDPos - mpView->GetRef1());
+ nAngle0 -= 27000_deg100;
nAngle0 = NormAngle36000(nAngle0);
- bMirrorSide0 = nAngle0 < 18000;
+ bMirrorSide0 = nAngle0 < 18000_deg100;
if (!pHdl && mpView->Is3DRotationCreationActive())
{
@@ -742,10 +742,10 @@ bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt)
* If 3D-rotation bodies are about to be created,
* end creation now
**********************************************************/
- ::tools::Long nAngle1 = GetAngle(aPnt - mpView->GetRef1());
- nAngle1 -= 27000;
+ Degree100 nAngle1 = GetAngle(aPnt - mpView->GetRef1());
+ nAngle1 -= 27000_deg100;
nAngle1 = NormAngle36000(nAngle1);
- bool bMirrorSide1 = nAngle1 < 18000;
+ bool bMirrorSide1 = nAngle1 < 18000_deg100;
if (bMirrorSide0 != bMirrorSide1)
{
diff --git a/sd/source/ui/inc/optsitem.hxx b/sd/source/ui/inc/optsitem.hxx
index 2c8350946f9c..2e03490950ff 100644
--- a/sd/source/ui/inc/optsitem.hxx
+++ b/sd/source/ui/inc/optsitem.hxx
@@ -23,6 +23,7 @@
#include <unotools/configitem.hxx>
#include <sfx2/module.hxx>
#include <svx/optgrid.hxx>
+#include <tools/degree.hxx>
#include <sddllapi.h>
#include <memory>
diff --git a/sd/source/ui/view/frmview.cxx b/sd/source/ui/view/frmview.cxx
index 88b04b035a3b..5b873f5aaef6 100644
--- a/sd/source/ui/view/frmview.cxx
+++ b/sd/source/ui/view/frmview.cxx
@@ -280,7 +280,7 @@ void FrameView::Update(SdOptions const * pOptions)
mbRuler = pOptions->IsRulerVisible();
SetGridVisible( pOptions->IsGridVisible() );
- SetSnapAngle( pOptions->GetAngle().get() * 10 ); // convert to hundredths of a degree
+ SetSnapAngle( toDegree100(pOptions->GetAngle()) );
SetGridSnap( pOptions->IsUseGridSnap() );
SetBordSnap( pOptions->IsSnapBorder() );
SetHlplSnap( pOptions->IsSnapHelplines() );
@@ -298,7 +298,7 @@ void FrameView::Update(SdOptions const * pOptions)
SetAngleSnapEnabled( pOptions->IsRotate() );
SetBigOrtho( pOptions->IsBigOrtho() );
SetOrtho( pOptions->IsOrtho() );
- SetEliminatePolyPointLimitAngle( pOptions->GetEliminatePolyPointLimitAngle().get() * 10 ); // convert to degree100
+ SetEliminatePolyPointLimitAngle( toDegree100(pOptions->GetEliminatePolyPointLimitAngle()) );
GetModel()->SetPickThroughTransparentTextFrames( pOptions->IsPickThrough() );
SetSolidDragging( pOptions->IsSolidDragging() );
@@ -770,7 +770,7 @@ void FrameView::ReadUserDataSequence ( const css::uno::Sequence < css::beans::Pr
{
if( rValue.Value >>= nInt32 )
{
- SetEliminatePolyPointLimitAngle( nInt32 );
+ SetEliminatePolyPointLimitAngle( Degree100(nInt32) );
}
}
else if ( rValue.Name == sUNO_View_IsEliminatePolyPoints )
@@ -844,7 +844,7 @@ void FrameView::ReadUserDataSequence ( const css::uno::Sequence < css::beans::Pr
{
if( rValue.Value >>= nInt32 )
{
- SetSnapAngle( nInt32 );
+ SetSnapAngle( Degree100(nInt32) );
}
}
else if ( rValue.Name == sUNO_View_GridSnapWidthXNumerator )
diff --git a/svx/inc/dragmt3d.hxx b/svx/inc/dragmt3d.hxx
index d174d966c062..79402d0defce 100644
--- a/svx/inc/dragmt3d.hxx
+++ b/svx/inc/dragmt3d.hxx
@@ -36,8 +36,8 @@ public:
basegfx::B3DHomMatrix maInvDisplayTransform;
basegfx::B3DHomMatrix maInitTransform;
basegfx::B3DHomMatrix maTransform;
- sal_Int32 mnStartAngle;
- sal_Int32 mnLastAngle;
+ Degree100 mnStartAngle;
+ Degree100 mnLastAngle;
E3dDragMethodUnit(E3dObject& r3DObj)
: mr3DObj(r3DObj),
diff --git a/svx/inc/sxcaitm.hxx b/svx/inc/sxcaitm.hxx
index d6e216bf5493..26d4a3194329 100644
--- a/svx/inc/sxcaitm.hxx
+++ b/svx/inc/sxcaitm.hxx
@@ -35,7 +35,7 @@
class SdrCaptionAngleItem final : public SdrAngleItem
{
public:
- SdrCaptionAngleItem(tools::Long nAngle = 0)
+ SdrCaptionAngleItem(Degree100 nAngle = 0_deg100)
: SdrAngleItem(SDRATTR_CAPTIONANGLE, nAngle)
{
}
diff --git a/svx/inc/sxmtaitm.hxx b/svx/inc/sxmtaitm.hxx
index ed2c3f440829..8798b05e13de 100644
--- a/svx/inc/sxmtaitm.hxx
+++ b/svx/inc/sxmtaitm.hxx
@@ -38,7 +38,7 @@ public:
// Angle in 1/100deg from viewpoint of the user.
class SdrMeasureTextAutoAngleViewItem final : public SdrAngleItem {
public:
- SdrMeasureTextAutoAngleViewItem(tools::Long nVal=31500): SdrAngleItem(SDRATTR_MEASURETEXTAUTOANGLEVIEW,nVal) {}
+ SdrMeasureTextAutoAngleViewItem(Degree100 nVal=31500_deg100): SdrAngleItem(SDRATTR_MEASURETEXTAUTOANGLEVIEW,nVal) {}
virtual SdrMeasureTextAutoAngleViewItem* Clone(SfxItemPool*) const override
{
return new SdrMeasureTextAutoAngleViewItem(*this);
diff --git a/svx/inc/sxroaitm.hxx b/svx/inc/sxroaitm.hxx
index 66785c68af7e..7f1aec1c54e5 100644
--- a/svx/inc/sxroaitm.hxx
+++ b/svx/inc/sxroaitm.hxx
@@ -26,7 +26,7 @@ class SdrRotateAllItem final : public SdrAngleItem
{
public:
SdrRotateAllItem()
- : SdrAngleItem(SDRATTR_ROTATEALL, 0)
+ : SdrAngleItem(SDRATTR_ROTATEALL, 0_deg100)
{
}
virtual SdrRotateAllItem* Clone(SfxItemPool*) const override
diff --git a/svx/inc/sxrooitm.hxx b/svx/inc/sxrooitm.hxx
index 28ceadafd90a..39cef3d4b1d2 100644
--- a/svx/inc/sxrooitm.hxx
+++ b/svx/inc/sxrooitm.hxx
@@ -24,7 +24,7 @@
class SdrRotateOneItem: public SdrAngleItem {
public:
- SdrRotateOneItem(): SdrAngleItem(SDRATTR_ROTATEONE,0) {}
+ SdrRotateOneItem(): SdrAngleItem(SDRATTR_ROTATEONE,0_deg100) {}
SdrRotateOneItem* Clone(SfxItemPool*) const override
{
return new SdrRotateOneItem(*this);
diff --git a/svx/inc/sxsaitm.hxx b/svx/inc/sxsaitm.hxx
index 1591dfa4938f..01824ef9e4a1 100644
--- a/svx/inc/sxsaitm.hxx
+++ b/svx/inc/sxsaitm.hxx
@@ -25,7 +25,7 @@
class SdrShearAngleItem : public SdrAngleItem
{
public:
- SdrShearAngleItem(tools::Long nAngle = 0)
+ SdrShearAngleItem(Degree100 nAngle = 0_deg100)
: SdrAngleItem(SDRATTR_SHEARANGLE, nAngle)
{
}
diff --git a/svx/inc/sxsalitm.hxx b/svx/inc/sxsalitm.hxx
index f73b460a9800..6e0cb2b38f70 100644
--- a/svx/inc/sxsalitm.hxx
+++ b/svx/inc/sxsalitm.hxx
@@ -24,7 +24,7 @@
class SdrHorzShearAllItem: public SdrAngleItem {
public:
- SdrHorzShearAllItem(): SdrAngleItem(SDRATTR_HORZSHEARALL,0) {}
+ SdrHorzShearAllItem(): SdrAngleItem(SDRATTR_HORZSHEARALL,0_deg100) {}
virtual SdrHorzShearAllItem* Clone(SfxItemPool*) const override
{
return new SdrHorzShearAllItem(*this);
@@ -33,7 +33,7 @@ public:
class SdrVertShearAllItem: public SdrAngleItem {
public:
- SdrVertShearAllItem(): SdrAngleItem(SDRATTR_VERTSHEARALL,0) {}
+ SdrVertShearAllItem(): SdrAngleItem(SDRATTR_VERTSHEARALL,0_deg100) {}
virtual SdrVertShearAllItem* Clone(SfxItemPool*) const override
{
return new SdrVertShearAllItem(*this);
diff --git a/svx/inc/sxsoitm.hxx b/svx/inc/sxsoitm.hxx
index 2c5273a5bda7..75faab3f1d66 100644
--- a/svx/inc/sxsoitm.hxx
+++ b/svx/inc/sxsoitm.hxx
@@ -24,7 +24,7 @@
class SdrHorzShearOneItem: public SdrAngleItem {
public:
- SdrHorzShearOneItem(): SdrAngleItem(SDRATTR_HORZSHEARONE,0) {}
+ SdrHorzShearOneItem(): SdrAngleItem(SDRATTR_HORZSHEARONE,0_deg100) {}
SdrHorzShearOneItem* Clone(SfxItemPool*) const override
{
return new SdrHorzShearOneItem(*this);
@@ -33,7 +33,7 @@ public:
class SdrVertShearOneItem: public SdrAngleItem {
public:
- SdrVertShearOneItem(): SdrAngleItem(SDRATTR_VERTSHEARONE,0) {}
+ SdrVertShearOneItem(): SdrAngleItem(SDRATTR_VERTSHEARONE,0_deg100) {}
SdrVertShearOneItem* Clone(SfxItemPool*) const override
{
return new SdrVertShearOneItem(*this);
diff --git a/svx/qa/unit/customshapes.cxx b/svx/qa/unit/customshapes.cxx
index fe4e22f0a909..d0d4ac3d3e6d 100644
--- a/svx/qa/unit/customshapes.cxx
+++ b/svx/qa/unit/customshapes.cxx
@@ -863,7 +863,7 @@ CPPUNIT_TEST_FIXTURE(CustomshapesTest, testTdf136176)
static_cast<SdrObjCustomShape&>(*GetSdrObjectFromXShape(xShape)));
// apply shearing 20deg
const Point aCenter = rSdrObjCustomShape.GetSnapRect().Center();
- rSdrObjCustomShape.Shear(aCenter, 2000, tan(basegfx::deg2rad(20.0)), false);
+ rSdrObjCustomShape.Shear(aCenter, 2000_deg100, tan(basegfx::deg2rad(20.0)), false);
}
// Save and reload
diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx b/svx/source/customshapes/EnhancedCustomShape2d.cxx
index fb8fce63bc61..57d622eb6acc 100644
--- a/svx/source/customshapes/EnhancedCustomShape2d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx
@@ -749,7 +749,7 @@ EnhancedCustomShape2d::EnhancedCustomShape2d(SdrObjCustomShape& rSdrObjCustomSha
if ( pAny )
*pAny >>= bFlipV;
- nRotateAngle = static_cast<sal_Int32>(mrSdrObjCustomShape.GetObjectRotation() * 100.0);
+ nRotateAngle = Degree100(static_cast<sal_Int32>(mrSdrObjCustomShape.GetObjectRotation() * 100.0));
/*const sal_Int32* pDefData =*/ ApplyShapeAttributes( rGeometryItem );
SetPathSize();
@@ -1174,7 +1174,7 @@ bool EnhancedCustomShape2d::GetHandlePosition( const sal_uInt32 nIndex, Point& r
}
if ( nRotateAngle )
{
- double a = nRotateAngle * F_PI18000;
+ double a = toRadians(nRotateAngle);
RotatePoint( rReturnPosition, Point( aLogicRect.GetWidth() / 2, aLogicRect.GetHeight() / 2 ), sin( a ), cos( a ) );
}
if ( bFlipH )
@@ -1488,7 +1488,7 @@ bool EnhancedCustomShape2d::SetHandleControllerPosition( const sal_uInt32 nIndex
aP.setY( aLogicRect.GetHeight() - aP.Y() );
if ( nRotateAngle )
{
- double a = -nRotateAngle * F_PI18000;
+ double a = -toRadians(nRotateAngle);
RotatePoint( aP, Point( aLogicRect.GetWidth() / 2, aLogicRect.GetHeight() / 2 ), sin( a ), cos( a ) );
}
const GeoStat aGeoStat(mrSdrObjCustomShape.GetGeoStat());
diff --git a/svx/source/customshapes/EnhancedCustomShape3d.cxx b/svx/source/customshapes/EnhancedCustomShape3d.cxx
index f83be9f8e817..651d176f6076 100644
--- a/svx/source/customshapes/EnhancedCustomShape3d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape3d.cxx
@@ -271,10 +271,10 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
bool bIsMirroredX(rSdrObjCustomShape.IsMirroredX());
bool bIsMirroredY(rSdrObjCustomShape.IsMirroredY());
tools::Rectangle aSnapRect(rSdrObjCustomShape.GetLogicRect());
- tools::Long nObjectRotation(rSdrObjCustomShape.GetRotateAngle());
+ Degree100 nObjectRotation(rSdrObjCustomShape.GetRotateAngle());
if ( nObjectRotation )
{
- double a = (36000 - nObjectRotation) * F_PI18000;
+ double a = (36000 - nObjectRotation.get()) * F_PI18000;
tools::Long dx = aSnapRect.Right() - aSnapRect.Left();
tools::Long dy = aSnapRect.Bottom()- aSnapRect.Top();
Point aP( aSnapRect.TopLeft() );
diff --git a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
index 11f26ff775b2..d4635c4e0ddd 100644
--- a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
+++ b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
@@ -282,7 +282,7 @@ Reference< drawing::XShape > SAL_CALL EnhancedCustomShapeEngine::render()
*pAny >>= bTextPathOn;
EnhancedCustomShape2d aCustomShape2d(rSdrObjCustomShape);
- sal_Int32 nRotateAngle = aCustomShape2d.GetRotateAngle();
+ Degree100 nRotateAngle = aCustomShape2d.GetRotateAngle();
bool bFlipV = aCustomShape2d.IsFlipVert();
bool bFlipH = aCustomShape2d.IsFlipHorz();
@@ -307,7 +307,7 @@ Reference< drawing::XShape > SAL_CALL EnhancedCustomShapeEngine::render()
if (xRenderedShape3d)
{
bFlipV = bFlipH = false;
- nRotateAngle = 0;
+ nRotateAngle = 0_deg100;
xRenderedShape = std::move(xRenderedShape3d);
}
@@ -316,7 +316,7 @@ Reference< drawing::XShape > SAL_CALL EnhancedCustomShapeEngine::render()
if ( rGeoStat.nShearAngle )
{
- tools::Long nShearAngle = rGeoStat.nShearAngle;
+ Degree100 nShearAngle = rGeoStat.nShearAngle;
double nTan = rGeoStat.mfTanShearAngle;
if (bFlipV != bFlipH)
{
@@ -413,7 +413,7 @@ drawing::PolyPolygonBezierCoords SAL_CALL EnhancedCustomShapeEngine::getLineGeom
if ( rGeoStat.nShearAngle )
{
- tools::Long nShearAngle = rGeoStat.nShearAngle;
+ Degree100 nShearAngle = rGeoStat.nShearAngle;
double nTan = rGeoStat.mfTanShearAngle;
if (bFlipV != bFlipH)
{
@@ -422,7 +422,7 @@ drawing::PolyPolygonBezierCoords SAL_CALL EnhancedCustomShapeEngine::getLineGeom
}
pObj->Shear( aRect.Center(), nShearAngle, nTan, false);
}
- sal_Int32 nRotateAngle = aCustomShape2d.GetRotateAngle();
+ Degree100 nRotateAngle = aCustomShape2d.GetRotateAngle();
if( nRotateAngle )
pObj->NbcRotate( aRect.Center(), nRotateAngle );
if ( bFlipH )
diff --git a/svx/source/dialog/dialcontrol.cxx b/svx/source/dialog/dialcontrol.cxx
index 9052d439bd26..ff8f0eee1529 100644
--- a/svx/source/dialog/dialcontrol.cxx
+++ b/svx/source/dialog/dialcontrol.cxx
@@ -63,9 +63,9 @@ void DialControlBmp::DrawBackground( const Size& rSize, bool bEnabled )
DrawBackground();
}
-void DialControlBmp::DrawElements( const OUString& rText, sal_Int32 nAngle )
+void DialControlBmp::DrawElements( const OUString& rText, Degree100 nAngle )
{
- double fAngle = basegfx::deg2rad(nAngle) / 100.0;
+ double fAngle = toRadians(nAngle);
double fSin = sin( fAngle );
double fCos = cos( fAngle );
double fWidth = GetTextWidth( rText ) / 2.0;
@@ -76,7 +76,7 @@ void DialControlBmp::DrawElements( const OUString& rText, sal_Int32 nAngle )
// rotated text
vcl::Font aFont( GetFont() );
aFont.SetColor( GetTextColor() );
- aFont.SetOrientation( Degree10(static_cast< sal_Int16 >( (nAngle + 5) / 10 )) ); // Font uses 1/10 degrees
+ aFont.SetOrientation( toDegree10(nAngle) ); // Font uses 1/10 degrees
aFont.SetWeight( WEIGHT_BOLD );
SetFont( aFont );
@@ -99,7 +99,7 @@ void DialControlBmp::DrawElements( const OUString& rText, sal_Int32 nAngle )
// *** drag button ***
- bool bMain = (nAngle % 4500) != 0;
+ bool bMain = (nAngle % 4500_deg100) != 0_deg100;
SetLineColor( GetButtonLineColor() );
SetFillColor( GetButtonFillColor( bMain ) );
@@ -348,12 +348,12 @@ void DialControl::SetNoRotation()
}
}
-sal_Int32 DialControl::GetRotation() const
+Degree100 DialControl::GetRotation() const
{
return mpImpl->mnAngle;
}
-void DialControl::SetRotation(sal_Int32 nAngle)
+void DialControl::SetRotation(Degree100 nAngle)
{
SetRotation(nAngle, false);
}
@@ -380,7 +380,7 @@ void DialControl::SetLinkedField(weld::MetricSpinButton* pField, sal_Int32 nDeci
IMPL_LINK_NOARG(DialControl, LinkedFieldModifyHdl, weld::MetricSpinButton&, void)
{
- SetRotation(mpImpl->mpLinkField->get_value(FieldUnit::DEGREE) * mpImpl->mnLinkedFieldValueMultiplyer, true);
+ SetRotation(Degree100(mpImpl->mpLinkField->get_value(FieldUnit::DEGREE) * mpImpl->mnLinkedFieldValueMultiplyer), true);
}
void DialControl::SaveValue()
@@ -420,20 +420,19 @@ void DialControl::InvalidateControl()
Invalidate();
}
-void DialControl::SetRotation(sal_Int32 nAngle, bool bBroadcast)
+void DialControl::SetRotation(Degree100 nAngle, bool bBroadcast)
{
bool bOldSel = mpImpl->mbNoRot;
mpImpl->mbNoRot = false;
- while (nAngle < 0)
- nAngle += 36000;
+ nAngle = NormAngle36000(nAngle);
if (!bOldSel || (mpImpl->mnAngle != nAngle))
{
mpImpl->mnAngle = nAngle;
InvalidateControl();
if( mpImpl->mpLinkField )
- mpImpl->mpLinkField->set_value(GetRotation() / mpImpl->mnLinkedFieldValueMultiplyer, FieldUnit::DEGREE);
+ mpImpl->mpLinkField->set_value(GetRotation().get() / mpImpl->mnLinkedFieldValueMultiplyer, FieldUnit::DEGREE);
if( bBroadcast )
mpImpl->maModifyHdl.Call(*this);
}
@@ -459,7 +458,7 @@ void DialControl::HandleMouseEvent( const Point& rPos, bool bInitial )
nAngle = ((nAngle + 750) / 1500) * 1500;
// Round up to 1 degree
nAngle = (((nAngle + 50) / 100) * 100) % 36000;
- SetRotation(nAngle, true);
+ SetRotation(Degree100(nAngle), true);
}
}
diff --git a/svx/source/dialog/imapwnd.cxx b/svx/source/dialog/imapwnd.cxx
index 14345a5cdaff..6a2c5ef91048 100644
--- a/svx/source/dialog/imapwnd.cxx
+++ b/svx/source/dialog/imapwnd.cxx
@@ -210,8 +210,8 @@ SdrObject* IMapWindow::CreateObj( const IMapObject* pIMapObj )
*pModel,
SdrCircKind::Full,
aCircle,
- 0,
- 36000);
+ 0_deg100,
+ 36000_deg100);
pCloneIMapObj.reset(static_cast<IMapObject*>(new IMapCircleObject( *pIMapCircleObj )));
}
break;
@@ -232,8 +232,8 @@ SdrObject* IMapWindow::CreateObj( const IMapObject* pIMapObj )
*pModel,
SdrCircKind::Full,
aDrawRect,
- 0,
- 36000);
+ 0_deg100,
+ 36000_deg100);
}
else
{
diff --git a/svx/source/engine3d/dragmt3d.cxx b/svx/source/engine3d/dragmt3d.cxx
index bffd2e533684..c27d9559875b 100644
--- a/svx/source/engine3d/dragmt3d.cxx
+++ b/svx/source/engine3d/dragmt3d.cxx
@@ -122,7 +122,7 @@ bool E3dDragMethod::BeginSdrDrag()
{
E3dDragMethodUnit& rCandidate = maGrp[nOb];
rCandidate.mnStartAngle = GetAngle(DragStat().GetStart() - DragStat().GetRef1());
- rCandidate.mnLastAngle = 0;
+ rCandidate.mnLastAngle = 0_deg100;
}
}
else
@@ -355,10 +355,10 @@ void E3dDragRotate::MoveSdrDrag(const Point& rPnt)
if(E3dDragConstraint::Z == meConstraint)
{
- fWAngle = NormAngle36000(GetAngle(rPnt - DragStat().GetRef1()) -
+ Degree100 lastAngle = NormAngle36000(GetAngle(rPnt - DragStat().GetRef1()) -
rCandidate.mnStartAngle) - rCandidate.mnLastAngle;
- rCandidate.mnLastAngle = static_cast<tools::Long>(fWAngle) + rCandidate.mnLastAngle;
- fWAngle /= 100.0;
+ rCandidate.mnLastAngle = lastAngle + rCandidate.mnLastAngle;
+ fWAngle = toDegrees(lastAngle);
fHAngle = 0.0;
}
else
diff --git a/svx/source/engine3d/obj3d.cxx b/svx/source/engine3d/obj3d.cxx
index 8d813176ced4..dac98b2d0fd6 100644
--- a/svx/source/engine3d/obj3d.cxx
+++ b/svx/source/engine3d/obj3d.cxx
@@ -432,13 +432,13 @@ void E3dObject::RestGeoData(const SdrObjGeoData& rGeo)
// This is however a correct implementation, because everything that has
// happened is a rotation around the axis perpendicular to the screen and that
// is regardless of how the scene has been rotated up until now.
-void E3dObject::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void E3dObject::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
// So currently the glue points are defined relative to the scene aOutRect.
// Before turning the glue points are defined relative to the page. They
// take no part in the rotation of the scene. To ensure this, there is the
// SetGlueReallyAbsolute(sal_True);
- double fAngleInRad = basegfx::deg2rad(nAngle/100.0);
+ double fAngleInRad = toRadians(nAngle);
basegfx::B3DHomMatrix aRotateZ;
aRotateZ.rotate(0.0, 0.0, fAngleInRad);
diff --git a/svx/source/engine3d/scene3d.cxx b/svx/source/engine3d/scene3d.cxx
index 5c9989320695..0b6632a56a8a 100644
--- a/svx/source/engine3d/scene3d.cxx
+++ b/svx/source/engine3d/scene3d.cxx
@@ -614,7 +614,7 @@ void E3dScene::SetTransform(const basegfx::B3DHomMatrix& rMatrix)
}
}
-void E3dScene::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void E3dScene::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
// So currently the glue points are defined relative to the scene aOutRect.
// Before turning the glue points are defined relative to the page. They
@@ -628,7 +628,7 @@ void E3dScene::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, doubl
// through the enter of aOutRect's (Steiner's theorem), so RotateZ
RotateScene (rRef, sn, cs); // Rotates the scene
- double fAngleInRad = basegfx::deg2rad(nAngle/100.0);
+ double fAngleInRad = toRadians(nAngle);
basegfx::B3DHomMatrix aRotation;
aRotation.rotate(0.0, 0.0, fAngleInRad);
diff --git a/svx/source/items/algitem.cxx b/svx/source/items/algitem.cxx
index 58a71f11594c..d432963f4b3d 100644
--- a/svx/source/items/algitem.cxx
+++ b/svx/source/items/algitem.cxx
@@ -42,14 +42,14 @@ SvxOrientationItem::SvxOrientationItem( const SvxCellOrientation eOrientation,
{
}
-SvxOrientationItem::SvxOrientationItem( sal_Int32 nRotation, bool bStacked, const sal_uInt16 nId ) :
+SvxOrientationItem::SvxOrientationItem( Degree100 nRotation, bool bStacked, const sal_uInt16 nId ) :
SfxEnumItem( nId, SvxCellOrientation::Standard )
{
if( bStacked )
{
SetValue( SvxCellOrientation::Stacked );
}
- else switch( nRotation )
+ else switch( nRotation.get() )
{
case 9000: SetValue( SvxCellOrientation::BottomUp ); break;
case 27000: SetValue( SvxCellOrientation::TopBottom ); break;
@@ -128,13 +128,13 @@ bool SvxOrientationItem::IsStacked() const
return GetValue() == SvxCellOrientation::Stacked;
}
-sal_Int32 SvxOrientationItem::GetRotation( sal_Int32 nStdAngle ) const
+Degree100 SvxOrientationItem::GetRotation( Degree100 nStdAngle ) const
{
- sal_Int32 nAngle = nStdAngle;
+ Degree100 nAngle = nStdAngle;
switch( GetValue() )
{
- case SvxCellOrientation::BottomUp: nAngle = 9000;break;
- case SvxCellOrientation::TopBottom: nAngle = 27000;break;
+ case SvxCellOrientation::BottomUp: nAngle = 9000_deg100; break;
+ case SvxCellOrientation::TopBottom: nAngle = 27000_deg100; break;
default: ; //prevent warning
}
return nAngle;
diff --git a/svx/source/items/autoformathelper.cxx b/svx/source/items/autoformathelper.cxx
index a15af6d6a3e4..1148fa7d12aa 100644
--- a/svx/source/items/autoformathelper.cxx
+++ b/svx/source/items/autoformathelper.cxx
@@ -361,7 +361,7 @@ bool AutoFormatBase::LoadBlockB( SvStream& rStream, const AutoFormatVersions& rV
}
m_aStacked->SetValue( aOrientation.IsStacked() );
- m_aRotateAngle->SetValue( aOrientation.GetRotation( m_aRotateAngle->GetValue() ) );
+ m_aRotateAngle->SetValue( aOrientation.GetRotation( Degree100(m_aRotateAngle->GetValue()) ).get() );
return ERRCODE_NONE == rStream.GetError();
}
@@ -407,7 +407,7 @@ bool AutoFormatBase::SaveBlockB( SvStream& rStream, sal_uInt16 fileVersion ) con
{
legacy::SvxHorJustify::Store(*m_aHorJustify, rStream, legacy::SvxHorJustify::GetVersion(fileVersion));
legacy::SvxVerJustify::Store(*m_aVerJustify, rStream, legacy::SvxVerJustify::GetVersion(fileVersion));
- SvxOrientationItem aOrientation( m_aRotateAngle->GetValue(), m_aStacked->GetValue(), 0 );
+ SvxOrientationItem aOrientation( Degree100(m_aRotateAngle->GetValue()), m_aStacked->GetValue(), 0 );
legacy::SvxOrientation::Store(aOrientation, rStream, legacy::SvxOrientation::GetVersion(fileVersion));
legacy::SvxMargin::Store(*m_aMargin, rStream, legacy::SvxMargin::GetVersion(fileVersion));
legacy::SfxBool::Store(*m_aLinebreak, rStream, legacy::SfxBool::GetVersion(fileVersion));
diff --git a/svx/source/sdr/contact/viewcontactofgraphic.cxx b/svx/source/sdr/contact/viewcontactofgraphic.cxx
index 80140953d91b..e2e0b452a296 100644
--- a/svx/source/sdr/contact/viewcontactofgraphic.cxx
+++ b/svx/source/sdr/contact/viewcontactofgraphic.cxx
@@ -315,8 +315,8 @@ namespace sdr::contact
// look for mirroring
const GeoStat& rGeoStat(GetGrafObject().GetGeoStat());
- const sal_Int32 nRotationAngle(rGeoStat.nRotationAngle);
- const bool bRota180(18000 == nRotationAngle);
+ const Degree100 nRotationAngle(rGeoStat.nRotationAngle);
+ const bool bRota180(18000_deg100 == nRotationAngle);
const bool bMirrored(GetGrafObject().IsMirrored());
const sal_uInt16 nMirrorCase(bRota180 ? (bMirrored ? 3 : 4) : (bMirrored ? 2 : 1));
bool bHMirr((2 == nMirrorCase ) || (4 == nMirrorCase));
@@ -341,7 +341,7 @@ namespace sdr::contact
// fill object matrix
const double fShearX(-rGeoStat.mfTanShearAngle);
- const double fRotate(nRotationAngle ? (36000 - nRotationAngle) * F_PI18000 : 0.0);
+ const double fRotate(nRotationAngle ? (36000 - nRotationAngle.get()) * F_PI18000 : 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 3e14a74d7516..d3198802a706 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) * F_PI18000 : 0.0,
+ rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 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 beafebfb7dd3..7462c1080a2e 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) * F_PI18000 : 0.0,
+ rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0,
aObjectRange.getMinX(), aObjectRange.getMinY()));
// create primitive data
diff --git a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
index 1ad9b8a0e44d..f676bd89b739 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) * F_PI18000);
+ aRotMatrix.rotate((36000 - rGeoStat.nRotationAngle.get()) * F_PI18000);
}
aRotMatrix.translate(aObjectRange.getMinimum().getX(), aObjectRange.getMinimum().getY());
@@ -202,7 +202,7 @@ namespace sdr::contact
if(rGeoStat.nRotationAngle)
{
- aTextBoxMatrix.rotate((36000 - rGeoStat.nRotationAngle) * F_PI18000);
+ aTextBoxMatrix.rotate((36000 - rGeoStat.nRotationAngle.get()) * F_PI18000);
}
// give text it's target position
diff --git a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
index ab7a93f421cb..db65802718c3 100644
--- a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
@@ -63,7 +63,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) * F_PI18000 : 0.0);
+ const double fRotate(rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 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 bae0147ae241..5d2b0f1a4494 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) * F_PI18000 : 0.0,
+ rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 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 370c1e8a1a07..e2c3db4b08b2 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) * F_PI18000 : 0.0,
+ rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0,
aObjectRange.getMinX(), aObjectRange.getMinY()));
// calculate corner radius
diff --git a/svx/source/sdr/properties/circleproperties.cxx b/svx/source/sdr/properties/circleproperties.cxx
index 895029ca7939..b6965fd235bb 100644
--- a/svx/source/sdr/properties/circleproperties.cxx
+++ b/svx/source/sdr/properties/circleproperties.cxx
@@ -106,7 +106,7 @@ namespace sdr::properties
mpItemSet->Put(makeSdrCircStartAngleItem(rObj.GetStartAngle()));
}
- if(rObj.GetEndAngle() != 36000)
+ if(rObj.GetEndAngle() != 36000_deg100)
{
mpItemSet->Put(makeSdrCircEndAngleItem(rObj.GetEndAngle()));
}
diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
index 8f34d7051889..69e0d42f0808 100644
--- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
+++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
@@ -449,11 +449,11 @@ IMPL_LINK_NOARG( PosSizePropertyPanel, ClickAutoHdl, weld::ToggleButton&, void )
IMPL_LINK_NOARG( PosSizePropertyPanel, RotationHdl, DialControl&, void )
{
- sal_Int32 nTmp = mxCtrlDial->GetRotation();
+ Degree100 nTmp = mxCtrlDial->GetRotation();
// #i123993# Need to take UIScale into account when executing rotations
const double fUIScale(mpView && mpView->GetModel() ? double(mpView->GetModel()->GetUIScale()) : 1.0);
- SdrAngleItem aAngleItem( SID_ATTR_TRANSFORM_ANGLE,static_cast<sal_uInt32>(nTmp));
+ SdrAngleItem aAngleItem( SID_ATTR_TRANSFORM_ANGLE, nTmp);
SfxInt32Item aRotXItem( SID_ATTR_TRANSFORM_ROT_X, basegfx::fround(mlRotX * fUIScale));
SfxInt32Item aRotYItem( SID_ATTR_TRANSFORM_ROT_Y, basegfx::fround(mlRotY * fUIScale));
@@ -680,10 +680,9 @@ void PosSizePropertyPanel::NotifyItemUpdate(
if(pItem)
{
- tools::Long nTmp = pItem->GetValue();
- nTmp = nTmp < 0 ? 36000+nTmp : nTmp;
+ Degree100 nTmp = NormAngle36000(pItem->GetValue());
- mxMtrAngle->set_value(nTmp, FieldUnit::DEGREE);
+ mxMtrAngle->set_value(nTmp.get(), FieldUnit::DEGREE);
mxCtrlDial->SetRotation(nTmp);
break;
@@ -691,7 +690,7 @@ void PosSizePropertyPanel::NotifyItemUpdate(
}
mxMtrAngle->set_text( "" );
- mxCtrlDial->SetRotation( 0 );
+ mxCtrlDial->SetRotation( 0_deg100 );
break;
case SID_ATTR_METRIC:
diff --git a/svx/source/svdraw/svdattr.cxx b/svx/source/svdraw/svdattr.cxx
index 5f6411804d06..0342f65c2760 100644
--- a/svx/source/svdraw/svdattr.cxx
+++ b/svx/source/svdraw/svdattr.cxx
@@ -203,8 +203,8 @@ SdrItemPool::SdrItemPool(
rPoolDefaults[SDRATTR_MEASURETEXTFIXEDANGLE -SDRATTR_START]=new SdrMeasureTextFixedAngleItem();
rPoolDefaults[SDRATTR_MEASUREDECIMALPLACES -SDRATTR_START]=new SdrMeasureDecimalPlacesItem();
rPoolDefaults[SDRATTR_CIRCKIND -SDRATTR_START]=new SdrCircKindItem;
- rPoolDefaults[SDRATTR_CIRCSTARTANGLE-SDRATTR_START]=new SdrAngleItem(SDRATTR_CIRCSTARTANGLE, 0);
- rPoolDefaults[SDRATTR_CIRCENDANGLE -SDRATTR_START]=new SdrAngleItem(SDRATTR_CIRCENDANGLE, 36000);
+ rPoolDefaults[SDRATTR_CIRCSTARTANGLE-SDRATTR_START]=new SdrAngleItem(SDRATTR_CIRCSTARTANGLE, 0_deg100);
+ rPoolDefaults[SDRATTR_CIRCENDANGLE -SDRATTR_START]=new SdrAngleItem(SDRATTR_CIRCENDANGLE, 36000_deg100);
rPoolDefaults[SDRATTR_OBJMOVEPROTECT -SDRATTR_START]=new SdrYesNoItem(SDRATTR_OBJMOVEPROTECT, false);
rPoolDefaults[SDRATTR_OBJSIZEPROTECT -SDRATTR_START]=new SdrYesNoItem(SDRATTR_OBJSIZEPROTECT, false);
rPoolDefaults[SDRATTR_OBJPRINTABLE -SDRATTR_START]=new SdrObjPrintableItem;
@@ -222,7 +222,7 @@ SdrItemPool::SdrItemPool(
rPoolDefaults[SDRATTR_ONESIZEHEIGHT -SDRATTR_START]=new SdrOneSizeHeightItem;
rPoolDefaults[SDRATTR_LOGICSIZEWIDTH -SDRATTR_START]=new SdrLogicSizeWidthItem;
rPoolDefaults[SDRATTR_LOGICSIZEHEIGHT-SDRATTR_START]=new SdrLogicSizeHeightItem;
- rPoolDefaults[SDRATTR_ROTATEANGLE -SDRATTR_START]=new SdrAngleItem(SDRATTR_ROTATEANGLE, 0);
+ rPoolDefaults[SDRATTR_ROTATEANGLE -SDRATTR_START]=new SdrAngleItem(SDRATTR_ROTATEANGLE, 0_deg100);
rPoolDefaults[SDRATTR_SHEARANGLE -SDRATTR_START]=new SdrShearAngleItem;
rPoolDefaults[SDRATTR_MOVEX -SDRATTR_START]=new SdrMoveXItem;
rPoolDefaults[SDRATTR_MOVEY -SDRATTR_START]=new SdrMoveYItem;
diff --git a/svx/source/svdraw/svddrgm1.hxx b/svx/source/svdraw/svddrgm1.hxx
index 25c1a5af126a..b8aa2280964b 100644
--- a/svx/source/svdraw/svddrgm1.hxx
+++ b/svx/source/svdraw/svddrgm1.hxx
@@ -49,8 +49,8 @@ class SdrDragRotate : public SdrDragMethod
private:
double nSin;
double nCos;
- tools::Long nAngle0;
- tools::Long nAngle;
+ Degree100 nAngle0;
+ Degree100 nAngle;
bool bRight;
public:
@@ -70,8 +70,8 @@ class SdrDragShear : public SdrDragMethod
{
private:
Fraction aFact;
- tools::Long nAngle0;
- tools::Long nAngle;
+ Degree100 nAngle0;
+ Degree100 nAngle;
double nTan;
bool bVertical; // contort vertically
bool bResize; // shear and resize
@@ -95,7 +95,7 @@ class SdrDragMirror : public SdrDragMethod
{
private:
Point aDif;
- tools::Long nAngle;
+ Degree100 nAngle;
bool bMirrored;
bool bSide0;
@@ -159,7 +159,7 @@ private:
bool bUpr;
bool bLwr;
bool bAtCenter;
- tools::Long nAngle;
+ Degree100 nAngle;
tools::Long nMarkSize;
SdrCrookMode eMode;
diff --git a/svx/source/svdraw/svddrgmt.cxx b/svx/source/svdraw/svddrgmt.cxx
index 0915dfc274c1..59381718eb22 100644
--- a/svx/source/svdraw/svddrgmt.cxx
+++ b/svx/source/svdraw/svddrgmt.cxx
@@ -1042,21 +1042,21 @@ void SdrDragMovHdl::MoveSdrDrag(const Point& rNoSnapPnt)
else
{
if (!DragStat().IsNoSnap()) SnapPos(aPnt);
- tools::Long nSA=0;
+ Degree100 nSA(0);
if (getSdrDragView().IsAngleSnapEnabled())
nSA=getSdrDragView().GetSnapAngle();
if (getSdrDragView().IsMirrorAllowed(true,true))
{ // limited
- if (!getSdrDragView().IsMirrorAllowed()) nSA=4500;
- if (!getSdrDragView().IsMirrorAllowed(true)) nSA=9000;
+ if (!getSdrDragView().IsMirrorAllowed()) nSA=4500_deg100;
+ if (!getSdrDragView().IsMirrorAllowed(true)) nSA=9000_deg100;
}
- if (getSdrDragView().IsOrtho() && nSA!=9000)
- nSA=4500;
+ if (getSdrDragView().IsOrtho() && nSA!=9000_deg100)
+ nSA=4500_deg100;
- if (nSA!=0)
+ if (nSA!=0_deg100)
{ // angle snapping
SdrHdlKind eRef=SdrHdlKind::Ref1;
@@ -1068,25 +1068,25 @@ void SdrDragMovHdl::MoveSdrDrag(const Point& rNoSnapPnt)
if (pH!=nullptr)
{
Point aRef(pH->GetPos());
- tools::Long nAngle=NormAngle36000(GetAngle(aPnt-aRef));
- tools::Long nNewAngle=nAngle;
- nNewAngle+=nSA/2;
+ Degree100 nAngle=NormAngle36000(GetAngle(aPnt-aRef));
+ Degree100 nNewAngle=nAngle;
+ nNewAngle+=nSA/2_deg100;
nNewAngle/=nSA;
nNewAngle*=nSA;
nNewAngle=NormAngle36000(nNewAngle);
- double a=(nNewAngle-nAngle)*F_PI18000;
+ double a=(nNewAngle-nAngle).get()*F_PI18000;
double nSin=sin(a);
double nCos=cos(a);
RotatePoint(aPnt,aRef,nSin,nCos);
// eliminate rounding errors for certain values
- if (nSA==9000)
+ if (nSA==9000_deg100)
{
- if (nNewAngle==0 || nNewAngle==18000) aPnt.setY(aRef.Y() );
- if (nNewAngle==9000 || nNewAngle==27000) aPnt.setX(aRef.X() );
+ if (nNewAngle==0_deg100 || nNewAngle==18000_deg100) aPnt.setY(aRef.Y() );
+ if (nNewAngle==9000_deg100 || nNewAngle==27000_deg100) aPnt.setX(aRef.X() );
}
- if (nSA==4500)
+ if (nSA==4500_deg100)
OrthoDistance8(aRef,aPnt,true);
}
}
@@ -2062,11 +2062,11 @@ OUString SdrDragRotate::GetSdrDragComment() const
{
OUString aStr = ImpGetDescriptionStr(STR_DragMethRotate) +
" (";
- sal_Int32 nTmpAngle(NormAngle36000(nAngle));
+ Degree100 nTmpAngle(NormAngle36000(nAngle));
if(bRight && nAngle)
{
- nTmpAngle -= 36000;
+ nTmpAngle -= 36000_deg100;
}
aStr += SdrModel::GetAngleString(nTmpAngle) + ")";
@@ -2117,20 +2117,20 @@ void SdrDragRotate::MoveSdrDrag(const Point& rPnt_)
if (!DragStat().CheckMinMoved(aPnt))
return;
- tools::Long nNewAngle=NormAngle36000(GetAngle(aPnt-DragStat().GetRef1())-nAngle0);
- tools::Long nSA=0;
+ Degree100 nNewAngle=NormAngle36000(GetAngle(aPnt-DragStat().GetRef1())-nAngle0);
+ Degree100 nSA(0);
if (getSdrDragView().IsAngleSnapEnabled())
nSA=getSdrDragView().GetSnapAngle();
if (!getSdrDragView().IsRotateAllowed())
- nSA=9000;
+ nSA=9000_deg100;
- if (nSA!=0)
+ if (nSA!=0_deg100)
{ // angle snapping
- nNewAngle+=nSA/2;
- nNewAngle/=nSA;
- nNewAngle*=nSA;
+ nNewAngle += nSA / 2_deg100;
+ nNewAngle /= nSA;
+ nNewAngle *= nSA;
}
nNewAngle=NormAngle18000(nNewAngle);
@@ -2148,7 +2148,7 @@ void SdrDragRotate::MoveSdrDrag(const Point& rPnt_)
bRight=false;
nAngle=nNewAngle;
- double a = nAngle * F_PI18000;
+ double a = nAngle.get() * F_PI18000;
double nSin1=sin(a); // calculate now, so as little time as possible
double nCos1=cos(a); // passes between Hide() and Show()
Hide();
@@ -2162,7 +2162,7 @@ bool SdrDragRotate::EndSdrDrag(bool bCopy)
{
Hide();
- if (nAngle!=0)
+ if (nAngle!=0_deg100)
{
if (IsDraggingPoints())
{
@@ -2204,10 +2204,10 @@ OUString SdrDragShear::GetSdrDragComment() const
OUString aStr = ImpGetDescriptionStr(STR_DragMethShear) +
" (";
- sal_Int32 nTmpAngle(nAngle);
+ Degree100 nTmpAngle(nAngle);
if(bUpSideDown)
- nTmpAngle += 18000;
+ nTmpAngle += 18000_deg100;
nTmpAngle = NormAngle18000(nTmpAngle);
@@ -2280,7 +2280,7 @@ void SdrDragShear::MoveSdrDrag(const Point& rPnt)
return;
bResize=!getSdrDragView().IsOrtho();
- tools::Long nSA=0;
+ Degree100 nSA(0);
if (getSdrDragView().IsAngleSnapEnabled())
nSA=getSdrDragView().GetSnapAngle();
@@ -2290,7 +2290,7 @@ void SdrDragShear::MoveSdrDrag(const Point& rPnt)
Fraction aNewFract(1,1);
// if angle snapping not activated, snap to raster (except when using slant)
- if (nSA==0 && !bSlant)
+ if (nSA==0_deg100 && !bSlant)
aPnt=GetSnapPos(aPnt);
if (!bSlant && !bResize)
@@ -2304,7 +2304,7 @@ void SdrDragShear::MoveSdrDrag(const Point& rPnt)
Point aRef(DragStat().GetRef1());
Point aDif(aPnt-aRef);
- tools::Long nNewAngle=0;
+ Degree100 nNewAngle(0);
if (bSlant)
{
@@ -2318,16 +2318,16 @@ void SdrDragShear::MoveSdrDrag(const Point& rPnt)
if (bVertical)
nNewAngle=NormAngle18000(GetAngle(aDif));
else
- nNewAngle=NormAngle18000(-(GetAngle(aDif)-9000));
+ nNewAngle=NormAngle18000(-(GetAngle(aDif)-9000_deg100));
- if (nNewAngle<-9000 || nNewAngle>9000)
- nNewAngle=NormAngle18000(nNewAngle+18000);
+ if (nNewAngle<Degree100(-9000) || nNewAngle>9000_deg100)
+ nNewAngle=NormAngle18000(nNewAngle+18000_deg100);
if (bResize)
{
Point aPt2(aPnt);
- if (nSA!=0)
+ if (nSA!=0_deg100)
aPt2=GetSnapPos(aPnt); // snap this one in any case
if (bVertical)
@@ -2341,34 +2341,34 @@ void SdrDragShear::MoveSdrDrag(const Point& rPnt)
}
}
- bool bNeg=nNewAngle<0;
+ bool bNeg=nNewAngle<0_deg100;
if (bNeg)
nNewAngle=-nNewAngle;
- if (nSA!=0)
+ if (nSA!=0_deg100)
{ // angle snapping
- nNewAngle+=nSA/2;
- nNewAngle/=nSA;
- nNewAngle*=nSA;
+ nNewAngle += nSA / 2_deg100;
+ nNewAngle /= nSA;
+ nNewAngle *= nSA;
}
nNewAngle=NormAngle36000(nNewAngle);
- bUpSideDown=nNewAngle>9000 && nNewAngle<27000;
+ bUpSideDown=nNewAngle>9000_deg100 && nNewAngle<27000_deg100;
if (bSlant)
{ // calculate resize for slant
// when angle snapping is activated, disable 89 degree limit
- tools::Long nTmpAngle=nNewAngle;
- if (bUpSideDown) nNewAngle-=18000;
+ Degree100 nTmpAngle=nNewAngle;
+ if (bUpSideDown) nNewAngle -= 18000_deg100;
if (bNeg) nTmpAngle=-nTmpAngle;
bResize=true;
- aNewFract = cos(nTmpAngle * F_PI18000);
+ aNewFract = cos(nTmpAngle.get() * F_PI18000);
aFact.ReduceInaccurate(10); // three decimals should be enough
}
- if (nNewAngle>8900)
- nNewAngle=8900;
+ if (nNewAngle > 8900_deg100)
+ nNewAngle = 8900_deg100;
if (bNeg)
nNewAngle=-nNewAngle;
@@ -2377,7 +2377,7 @@ void SdrDragShear::MoveSdrDrag(const Point& rPnt)
{
nAngle=nNewAngle;
aFact=aNewFract;
- double a = nAngle * F_PI18000;
+ double a = nAngle.get() * F_PI18000;
double nTan1=tan(a); // calculate now, so as little time as possible passes between Hide() and Show()
Hide();
nTan=nTan1;
@@ -2400,7 +2400,7 @@ void SdrDragShear::applyCurrentTransformationToSdrObject(SdrObject& rTarget)
}
}
- if (nAngle!=0)
+ if (nAngle)
{
rTarget.Shear(DragStat().GetRef1(), nAngle, nTan, bVertical);
}
@@ -2413,9 +2413,9 @@ bool SdrDragShear::EndSdrDrag(bool bCopy)
if (bResize && aFact==Fraction(1,1))
bResize=false;
- if (nAngle!=0 || bResize)
+ if (nAngle || bResize)
{
- if (nAngle!=0 && bResize)
+ if (nAngle && bResize)
{
OUString aStr = ImpGetDescriptionStr(STR_EditShear);
@@ -2439,12 +2439,12 @@ bool SdrDragShear::EndSdrDrag(bool bCopy)
bCopy=false;
}
- if (nAngle!=0)
+ if (nAngle)
{
getSdrDragView().ShearMarkedObj(DragStat().GetRef1(),nAngle,bVertical,bCopy);
}
- if (nAngle!=0 && bResize)
+ if (nAngle && bResize)
getSdrDragView().EndUndo();
return true;
@@ -2480,11 +2480,11 @@ SdrDragMirror::SdrDragMirror(SdrDragView& rNewView)
bool SdrDragMirror::ImpCheckSide(const Point& rPnt) const
{
- tools::Long nAngle1=GetAngle(rPnt-DragStat().GetRef1());
+ Degree100 nAngle1=GetAngle(rPnt-DragStat().GetRef1());
nAngle1-=nAngle;
nAngle1=NormAngle36000(nAngle1);
- return nAngle1<18000;
+ return nAngle1<18000_deg100;
}
OUString SdrDragMirror::GetSdrDragComment() const
@@ -2787,7 +2787,7 @@ OUString SdrDragCrook::GetSdrDragComment() const
nVal *= 2;
nVal = std::abs(nVal);
- aStr += SdrModel::GetAngleString(nVal) + ")";
+ aStr += SdrModel::GetAngleString(Degree100(nVal)) + ")";
}
if(getSdrDragView().IsDragWithCopy())
@@ -3131,12 +3131,12 @@ void SdrDragCrook::MoveSdrDrag(const Point& rPnt)
}
tools::Long nNewRad=0;
- nAngle=0;
+ nAngle=0_deg100;
if (bValid)
{
double a=0; // slope of the radius
- tools::Long nPntWink=0;
+ Degree100 nPntWink(0);
if (bVertical)
{
@@ -3150,39 +3150,39 @@ void SdrDragCrook::MoveSdrDrag(const Point& rPnt)
a=static_cast<double>(dx1)/static_cast<double>(dy1); // slope of the radius
nNewRad=(static_cast<tools::Long>(dx1*a)+dy1) /2;
aNewCenter.AdjustY(nNewRad );
- nPntWink=GetAngle(aPnt-aNewCenter)-9000;
+ nPntWink=GetAngle(aPnt-aNewCenter)-9000_deg100;
}
if (!bAtCenter)
{
if (nNewRad<0)
{
- if (bRgt) nPntWink+=18000;
- if (bLft) nPntWink=18000-nPntWink;
- if (bLwr) nPntWink=-nPntWink;
+ if (bRgt) nPntWink += 18000_deg100;
+ if (bLft) nPntWink = 18000_deg100 - nPntWink;
+ if (bLwr) nPntWink =- nPntWink;
}
else
{
- if (bRgt) nPntWink=-nPntWink;
- if (bUpr) nPntWink=18000-nPntWink;
- if (bLwr) nPntWink+=18000;
+ if (bRgt) nPntWink = -nPntWink;
+ if (bUpr) nPntWink = 18000_deg100 - nPntWink;
+ if (bLwr) nPntWink += 18000_deg100;
}
nPntWink=NormAngle36000(nPntWink);
}
else
{
- if (nNewRad<0) nPntWink+=18000;
- if (bVertical) nPntWink=18000-nPntWink;
- nPntWink=NormAngle18000(nPntWink);
- nPntWink = std::abs(nPntWink);
+ if (nNewRad<0) nPntWink += 18000_deg100;
+ if (bVertical) nPntWink = 18000_deg100 - nPntWink;
+ nPntWink = NormAngle18000(nPntWink);
+ nPntWink = abs(nPntWink);
}
- double nUmfang = 2 * std::abs(nNewRad) * M_PI;
+ double nCircumference = 2 * std::abs(nNewRad) * M_PI;
if (bResize)
{
- tools::Long nMul=static_cast<tools::Long>(nUmfang*NormAngle36000(nPntWink)/36000);
+ tools::Long nMul=static_cast<tools::Long>(nCircumference * NormAngle36000(nPntWink).get() / 36000.0);
if (bAtCenter)
nMul*=2;
@@ -3192,14 +3192,14 @@ void SdrDragCrook::MoveSdrDrag(const Point& rPnt)
}
else
{
- nAngle=static_cast<tools::Long>((nMarkSize*360/nUmfang)*100)/2;
+ nAngle = Degree100(static_cast<tools::Long>((nMarkSize*360/nCircumference)*100)/2);
- if (nAngle==0)
+ if (nAngle==0_deg100)
bValid=false;
}
}
- if (nAngle==0 || nNewRad==0)
+ if (nAngle==0_deg100 || nNewRad==0)
bValid=false;
if (!bValid)
diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx
index 9136ed35d83c..f2128824b6fa 100644
--- a/svx/source/svdraw/svdedtv1.cxx
+++ b/svx/source/svdraw/svdedtv1.cxx
@@ -280,9 +280,9 @@ void SdrEditView::ResizeMultMarkedObj(const Point& rRef,
EndUndo();
}
-tools::Long SdrEditView::GetMarkedObjRotate() const
+Degree100 SdrEditView::GetMarkedObjRotate() const
{
- tools::Long nRetval(0);
+ Degree100 nRetval(0);
if(GetMarkedObjectCount())
{
@@ -295,7 +295,7 @@ tools::Long SdrEditView::GetMarkedObjRotate() const
return nRetval;
}
-void SdrEditView::RotateMarkedObj(const Point& rRef, tools::Long nAngle, bool bCopy)
+void SdrEditView::RotateMarkedObj(const Point& rRef, Degree100 nAngle, bool bCopy)
{
const bool bUndo = IsUndoEnabled();
if( bUndo )
@@ -309,8 +309,8 @@ void SdrEditView::RotateMarkedObj(const Point& rRef, tools::Long nAngle, bool bC
if (bCopy)
CopyMarkedObj();
- double nSin = sin(nAngle * F_PI18000);
- double nCos = cos(nAngle * F_PI18000);
+ double nSin = sin(nAngle.get() * F_PI18000);
+ double nCos = cos(nAngle.get() * F_PI18000);
const size_t nMarkCount(GetMarkedObjectCount());
if(nMarkCount)
@@ -431,27 +431,27 @@ void SdrEditView::MirrorMarkedObjVertical()
MirrorMarkedObj(aCenter,aPt2);
}
-tools::Long SdrEditView::GetMarkedObjShear() const
+Degree100 SdrEditView::GetMarkedObjShear() const
{
bool b1st=true;
bool bOk=true;
- tools::Long nAngle=0;
+ Degree100 nAngle(0);
const size_t nMarkCount=GetMarkedObjectCount();
for (size_t nm=0; nm<nMarkCount && bOk; ++nm) {
SdrMark* pM=GetSdrMarkByIndex(nm);
SdrObject* pO=pM->GetMarkedSdrObj();
- tools::Long nAngle2=pO->GetShearAngle();
+ Degree100 nAngle2=pO->GetShearAngle();
if (b1st) nAngle=nAngle2;
else if (nAngle2!=nAngle) bOk=false;
b1st=false;
}
if (nAngle>SDRMAXSHEAR) nAngle=SDRMAXSHEAR;
if (nAngle<-SDRMAXSHEAR) nAngle=-SDRMAXSHEAR;
- if (!bOk) nAngle=0;
+ if (!bOk) nAngle=0_deg100;
return nAngle;
}
-void SdrEditView::ShearMarkedObj(const Point& rRef, tools::Long nAngle, bool bVShear, bool bCopy)
+void SdrEditView::ShearMarkedObj(const Point& rRef, Degree100 nAngle, bool bVShear, bool bCopy)
{
const bool bUndo = IsUndoEnabled();
@@ -467,7 +467,7 @@ void SdrEditView::ShearMarkedObj(const Point& rRef, tools::Long nAngle, bool bVS
if (bCopy)
CopyMarkedObj();
- double nTan = tan(nAngle * F_PI18000);
+ double nTan = tan(nAngle.get() * F_PI18000);
const size_t nMarkCount=GetMarkedObjectCount();
for (size_t nm=0; nm<nMarkCount; ++nm)
{
@@ -558,7 +558,7 @@ void SdrEditView::ImpCrookObj(SdrObject* pO, const Point& rRef, const Point& rRa
aCtr1 -= aCtr0;
if(bRotOk)
- pO->Rotate(aCtr0, FRound(nAngle / F_PI18000), nSin, nCos);
+ pO->Rotate(aCtr0, Degree100(FRound(nAngle / F_PI18000)), nSin, nCos);
pO->Move(Size(aCtr1.X(),aCtr1.Y()));
}
@@ -741,15 +741,15 @@ void SdrEditView::SetNotPersistAttrToMarked(const SfxItemSet& rAttr)
ResizeMarkedObj(aAllSnapRect.TopLeft(),Fraction(1,1),aYFact);
}
if (rAttr.GetItemState(SDRATTR_ROTATEALL,true,&pPoolItem)==SfxItemState::SET) {
- tools::Long nAngle=static_cast<const SdrRotateAllItem*>(pPoolItem)->GetValue();
+ Degree100 nAngle=static_cast<const SdrRotateAllItem*>(pPoolItem)->GetValue();
RotateMarkedObj(aAllSnapRect.Center(),nAngle);
}
if (rAttr.GetItemState(SDRATTR_HORZSHEARALL,true,&pPoolItem)==SfxItemState::SET) {
- tools::Long nAngle=static_cast<const SdrHorzShearAllItem*>(pPoolItem)->GetValue();
+ Degree100 nAngle=static_cast<const SdrHorzShearAllItem*>(pPoolItem)->GetValue();
ShearMarkedObj(aAllSnapRect.Center(),nAngle);
}
if (rAttr.GetItemState(SDRATTR_VERTSHEARALL,true,&pPoolItem)==SfxItemState::SET) {
- tools::Long nAngle=static_cast<const SdrVertShearAllItem*>(pPoolItem)->GetValue();
+ Degree100 nAngle=static_cast<const SdrVertShearAllItem*>(pPoolItem)->GetValue();
ShearMarkedObj(aAllSnapRect.Center(),nAngle,true);
}
@@ -789,8 +789,8 @@ void SdrEditView::MergeNotPersistAttrFromMarked(SfxItemSet& rAttr) const
tools::Long nSnapHgt=0; bool bSnapHgtDC=false;
tools::Long nLogicWdt=0; bool bLogicWdtDC=false,bLogicWdtDiff=false;
tools::Long nLogicHgt=0; bool bLogicHgtDC=false,bLogicHgtDiff=false;
- tools::Long nRotAngle=0; bool bRotAngleDC=false;
- tools::Long nShrAngle=0; bool bShrAngleDC=false;
+ Degree100 nRotAngle(0); bool bRotAngleDC=false;
+ Degree100 nShrAngle(0); bool bShrAngleDC=false;
tools::Rectangle aSnapRect;
tools::Rectangle aLogicRect;
const size_t nMarkCount=GetMarkedObjectCount();
@@ -1523,8 +1523,8 @@ void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr)
GetSdrPageView()->LogicToPagePos(aRect);
}
- tools::Long nOldRotateAngle=GetMarkedObjRotate();
- tools::Long nOldShearAngle=GetMarkedObjShear();
+ Degree100 nOldRotateAngle=GetMarkedObjRotate();
+ Degree100 nOldShearAngle=GetMarkedObjShear();
const SdrMarkList& rMarkList=GetMarkedObjectList();
const size_t nMarkCount=rMarkList.GetMarkCount();
SdrObject* pObj=nullptr;
@@ -1534,7 +1534,7 @@ void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr)
tools::Long nPosDY=0;
tools::Long nSizX=0;
tools::Long nSizY=0;
- tools::Long nRotateAngle=0;
+ Degree100 nRotateAngle(0);
bool bModeIsRotate(meDragMode == SdrDragMode::Rotate);
tools::Long nRotateX(0);
@@ -1554,7 +1554,7 @@ void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr)
nRotateY = nOldRotateY = aRotateAxe.Y();
}
- tools::Long nShearAngle=0;
+ Degree100 nShearAngle(0);
tools::Long nShearX=0;
tools::Long nShearY=0;
bool bShearVert=false;
@@ -1601,13 +1601,13 @@ void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr)
// rotation
if (SfxItemState::SET == rAttr.GetItemState(SID_ATTR_TRANSFORM_DELTA_ANGLE, true, &pPoolItem)) {
nRotateAngle = static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
- bRotate = (nRotateAngle != 0);
+ bRotate = (nRotateAngle != 0_deg100);
}
// rotation
if (SfxItemState::SET == rAttr.GetItemState(SID_ATTR_TRANSFORM_ANGLE, true, &pPoolItem)) {
nRotateAngle = static_cast<const SdrAngleItem*>(pPoolItem)->GetValue() - nOldRotateAngle;
- bRotate = (nRotateAngle != 0);
+ bRotate = (nRotateAngle != 0_deg100);
}
// position rotation point x
@@ -1620,7 +1620,7 @@ void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr)
// shearing
if (SfxItemState::SET==rAttr.GetItemState(SID_ATTR_TRANSFORM_SHEAR,true,&pPoolItem)) {
- tools::Long nNewShearAngle=static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
+ Degree100 nNewShearAngle=static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
if (nNewShearAngle>SDRMAXSHEAR) nNewShearAngle=SDRMAXSHEAR;
if (nNewShearAngle<-SDRMAXSHEAR) nNewShearAngle=-SDRMAXSHEAR;
if (nNewShearAngle!=nOldShearAngle) {
@@ -1628,18 +1628,18 @@ void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr)
if (bShearVert) {
nShearAngle=nNewShearAngle;
} else {
- if (nNewShearAngle!=0 && nOldShearAngle!=0) {
+ if (nNewShearAngle!=0_deg100 && nOldShearAngle!=0_deg100) {
// bug fix
- double nOld = tan(static_cast<double>(nOldShearAngle) * F_PI18000);
- double nNew = tan(static_cast<double>(nNewShearAngle) * F_PI18000);
+ double nOld = tan(static_cast<double>(nOldShearAngle.get()) * F_PI18000);
+ double nNew = tan(static_cast<double>(nNewShearAngle.get()) * F_PI18000);
nNew-=nOld;
nNew = atan(nNew) / F_PI18000;
- nShearAngle=FRound(nNew);
+ nShearAngle=Degree100(FRound(nNew));
} else {
nShearAngle=nNewShearAngle-nOldShearAngle;
}
}
- bShear=nShearAngle!=0;
+ bShear=nShearAngle!=0_deg100;
if (bShear) {
nShearX=static_cast<const SfxInt32Item&>(rAttr.Get(SID_ATTR_TRANSFORM_SHEAR_X)).GetValue();
nShearY=static_cast<const SfxInt32Item&>(rAttr.Get(SID_ATTR_TRANSFORM_SHEAR_Y)).GetValue();
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index d761998f540c..5106702a4502 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -1521,7 +1521,7 @@ SdrEndTextEditKind SdrObjEditView::SdrEndTextEdit(bool bDontDeleteReally)
pTEObj->EndTextEdit(*pTEOutliner);
- if ((pTEObj->GetRotateAngle() != 0)
+ if ((pTEObj->GetRotateAngle() != 0_deg100)
|| (dynamic_cast<const SdrTextObj*>(pTEObj) != nullptr && pTEObj->IsFontwork()))
{
pTEObj->ActionChanged();
diff --git a/svx/source/svdraw/svdfmtf.cxx b/svx/source/svdraw/svdfmtf.cxx
index 31624873f234..34a491211bf6 100644
--- a/svx/source/svdraw/svdfmtf.cxx
+++ b/svx/source/svdraw/svdfmtf.cxx
@@ -742,8 +742,8 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaEllipseAction const & rAct)
void ImpSdrGDIMetaFileImport::DoAction(MetaArcAction const & rAct)
{
Point aCenter(rAct.GetRect().Center());
- tools::Long nStart=GetAngle(rAct.GetStartPoint()-aCenter);
- tools::Long nEnd=GetAngle(rAct.GetEndPoint()-aCenter);
+ Degree100 nStart=GetAngle(rAct.GetStartPoint()-aCenter);
+ Degree100 nEnd=GetAngle(rAct.GetEndPoint()-aCenter);
SdrCircObj* pCirc = new SdrCircObj(
*mpModel,
SdrCircKind::Arc,
@@ -755,8 +755,8 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaArcAction const & rAct)
void ImpSdrGDIMetaFileImport::DoAction(MetaPieAction const & rAct)
{
Point aCenter(rAct.GetRect().Center());
- tools::Long nStart=GetAngle(rAct.GetStartPoint()-aCenter);
- tools::Long nEnd=GetAngle(rAct.GetEndPoint()-aCenter);
+ Degree100 nStart=GetAngle(rAct.GetStartPoint()-aCenter);
+ Degree100 nEnd=GetAngle(rAct.GetEndPoint()-aCenter);
SdrCircObj* pCirc = new SdrCircObj(
*mpModel,
SdrCircKind::Section,
@@ -770,8 +770,8 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaPieAction const & rAct)
void ImpSdrGDIMetaFileImport::DoAction(MetaChordAction const & rAct)
{
Point aCenter(rAct.GetRect().Center());
- tools::Long nStart=GetAngle(rAct.GetStartPoint()-aCenter);
- tools::Long nEnd=GetAngle(rAct.GetEndPoint()-aCenter);
+ Degree100 nStart=GetAngle(rAct.GetStartPoint()-aCenter);
+ Degree100 nEnd=GetAngle(rAct.GetEndPoint()-aCenter);
SdrCircObj* pCirc = new SdrCircObj(
*mpModel,
SdrCircKind::Cut,
@@ -1053,12 +1053,9 @@ void ImpSdrGDIMetaFileImport::ImportText( const Point& rPos, const OUString& rSt
aAttr.Put(XFillColorItem(OUString(), aFnt.GetFillColor()));
pText->SetMergedItemSet(aAttr);
}
- sal_Int32 nAngle = aFnt.GetOrientation().get();
+ Degree100 nAngle = toDegree100(aFnt.GetOrientation());
if ( nAngle )
- {
- nAngle*=10;
pText->SdrAttrObj::NbcRotate(aPos,nAngle);
- }
InsertObj( pText, false );
}
diff --git a/svx/source/svdraw/svdglev.cxx b/svx/source/svdraw/svdglev.cxx
index 370563d8be87..78c92f778840 100644
--- a/svx/source/svdraw/svdglev.cxx
+++ b/svx/source/svdraw/svdglev.cxx
@@ -383,15 +383,15 @@ static void ImpRotate(Point& rPt, const void* p1, const void* /*p2*/, const void
RotatePoint(rPt,*static_cast<const Point*>(p1),*static_cast<const double*>(p3),*static_cast<const double*>(p4));
}
-void SdrGlueEditView::RotateMarkedGluePoints(const Point& rRef, tools::Long nAngle, bool bCopy)
+void SdrGlueEditView::RotateMarkedGluePoints(const Point& rRef, Degree100 nAngle, bool bCopy)
{
ForceUndirtyMrkPnt();
OUString aStr(SvxResId(STR_EditRotate));
if (bCopy) aStr+=SvxResId(STR_EditWithCopy);
BegUndo(aStr,GetDescriptionOfMarkedGluePoints(),SdrRepeatFunc::Rotate);
if (bCopy) ImpCopyMarkedGluePoints();
- double nSin = sin(nAngle * F_PI18000);
- double nCos = cos(nAngle * F_PI18000);
+ double nSin = sin(nAngle.get() * F_PI18000);
+ double nCos = cos(nAngle.get() * F_PI18000);
ImpTransformMarkedGluePoints(ImpRotate,&rRef,&nAngle,&nSin,&nCos);
EndUndo();
AdjustMarkHdl();
diff --git a/svx/source/svdraw/svdglue.cxx b/svx/source/svdraw/svdglue.cxx
index 0d3db7f8d57d..4cce1a58ad26 100644
--- a/svx/source/svdraw/svdglue.cxx
+++ b/svx/source/svdraw/svdglue.cxx
@@ -125,68 +125,68 @@ void SdrGluePoint::SetAbsolutePos(const Point& rNewPos, const SdrObject& rObj)
aPos=aPt;
}
-tools::Long SdrGluePoint::GetAlignAngle() const
+Degree100 SdrGluePoint::GetAlignAngle() const
{
if (nAlign == (SdrAlign::HORZ_CENTER|SdrAlign::VERT_CENTER))
- return 0; // Invalid!
+ return 0_deg100; // Invalid!
else if (nAlign == (SdrAlign::HORZ_RIGHT |SdrAlign::VERT_CENTER))
- return 0;
+ return 0_deg100;
else if (nAlign == (SdrAlign::HORZ_RIGHT |SdrAlign::VERT_TOP))
- return 4500;
+ return 4500_deg100;
else if (nAlign == (SdrAlign::HORZ_CENTER|SdrAlign::VERT_TOP))
- return 9000;
+ return 9000_deg100;
else if (nAlign == (SdrAlign::HORZ_LEFT |SdrAlign::VERT_TOP))
- return 13500;
+ return 13500_deg100;
else if (nAlign == (SdrAlign::HORZ_LEFT |SdrAlign::VERT_CENTER))
- return 18000;
+ return 18000_deg100;
else if (nAlign == (SdrAlign::HORZ_LEFT |SdrAlign::VERT_BOTTOM))
- return 22500;
+ return 22500_deg100;
else if (nAlign == (SdrAlign::HORZ_CENTER|SdrAlign::VERT_BOTTOM))
- return 27000;
+ return 27000_deg100;
else if (nAlign == (SdrAlign::HORZ_RIGHT |SdrAlign::VERT_BOTTOM))
- return 31500;
- return 0;
+ return 31500_deg100;
+ return 0_deg100;
}
-void SdrGluePoint::SetAlignAngle(tools::Long nAngle)
+void SdrGluePoint::SetAlignAngle(Degree100 nAngle)
{
nAngle=NormAngle36000(nAngle);
- if (nAngle>=33750 || nAngle<2250) nAlign=SdrAlign::HORZ_RIGHT |SdrAlign::VERT_CENTER;
- else if (nAngle< 6750) nAlign=SdrAlign::HORZ_RIGHT |SdrAlign::VERT_TOP ;
- else if (nAngle<11250) nAlign=SdrAlign::HORZ_CENTER|SdrAlign::VERT_TOP ;
- else if (nAngle<15750) nAlign=SdrAlign::HORZ_LEFT |SdrAlign::VERT_TOP ;
- else if (nAngle<20250) nAlign=SdrAlign::HORZ_LEFT |SdrAlign::VERT_CENTER;
- else if (nAngle<24750) nAlign=SdrAlign::HORZ_LEFT |SdrAlign::VERT_BOTTOM;
- else if (nAngle<29250) nAlign=SdrAlign::HORZ_CENTER|SdrAlign::VERT_BOTTOM;
- else if (nAngle<33750) nAlign=SdrAlign::HORZ_RIGHT |SdrAlign::VERT_BOTTOM;
+ if (nAngle>=33750_deg100 || nAngle<2250_deg100) nAlign=SdrAlign::HORZ_RIGHT |SdrAlign::VERT_CENTER;
+ else if (nAngle< 6750_deg100) nAlign=SdrAlign::HORZ_RIGHT |SdrAlign::VERT_TOP ;
+ else if (nAngle<11250_deg100) nAlign=SdrAlign::HORZ_CENTER|SdrAlign::VERT_TOP ;
+ else if (nAngle<15750_deg100) nAlign=SdrAlign::HORZ_LEFT |SdrAlign::VERT_TOP ;
+ else if (nAngle<20250_deg100) nAlign=SdrAlign::HORZ_LEFT |SdrAlign::VERT_CENTER;
+ else if (nAngle<24750_deg100) nAlign=SdrAlign::HORZ_LEFT |SdrAlign::VERT_BOTTOM;
+ else if (nAngle<29250_deg100) nAlign=SdrAlign::HORZ_CENTER|SdrAlign::VERT_BOTTOM;
+ else if (nAngle<33750_deg100) nAlign=SdrAlign::HORZ_RIGHT |SdrAlign::VERT_BOTTOM;
}
-tools::Long SdrGluePoint::EscDirToAngle(SdrEscapeDirection nEsc)
+Degree100 SdrGluePoint::EscDirToAngle(SdrEscapeDirection nEsc)
{
switch (nEsc) {
- case SdrEscapeDirection::RIGHT : return 0;
- case SdrEscapeDirection::TOP : return 9000;
- case SdrEscapeDirection::LEFT : return 18000;
- case SdrEscapeDirection::BOTTOM: return 27000;
+ case SdrEscapeDirection::RIGHT : return 0_deg100;
+ case SdrEscapeDirection::TOP : return 9000_deg100;
+ case SdrEscapeDirection::LEFT : return 18000_deg100;
+ case SdrEscapeDirection::BOTTOM: return 27000_deg100;
default: break;
} // switch
- return 0;
+ return 0_deg100;
}
-SdrEscapeDirection SdrGluePoint::EscAngleToDir(tools::Long nAngle)
+SdrEscapeDirection SdrGluePoint::EscAngleToDir(Degree100 nAngle)
{
nAngle=NormAngle36000(nAngle);
- if (nAngle>=31500 || nAngle<4500)
+ if (nAngle>=31500_deg100 || nAngle<4500_deg100)
return SdrEscapeDirection::RIGHT;
- if (nAngle<13500)
+ if (nAngle<13500_deg100)
return SdrEscapeDirection::TOP;
- if (nAngle<22500)
+ if (nAngle<22500_deg100)
return SdrEscapeDirection::LEFT;
/* (nAngle<31500)*/
return SdrEscapeDirection::BOTTOM;
}
-void SdrGluePoint::Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs, const SdrObject* pObj)
+void SdrGluePoint::Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs, const SdrObject* pObj)
{
Point aPt(pObj!=nullptr ? GetAbsolutePos(*pObj) : GetPos());
RotatePoint(aPt,rRef,sn,cs);
@@ -206,38 +206,38 @@ void SdrGluePoint::Rotate(const Point& rRef, tools::Long nAngle, double sn, doub
if (pObj!=nullptr) SetAbsolutePos(aPt,*pObj); else SetPos(aPt);
}
-void SdrGluePoint::Mirror(const Point& rRef1, const Point& rRef2, tools::Long nAngle, const SdrObject* pObj)
+void SdrGluePoint::Mirror(const Point& rRef1, const Point& rRef2, Degree100 nAngle, const SdrObject* pObj)
{
Point aPt(pObj!=nullptr ? GetAbsolutePos(*pObj) : GetPos());
MirrorPoint(aPt,rRef1,rRef2);
// mirror reference edge
if(nAlign != (SdrAlign::HORZ_CENTER|SdrAlign::VERT_CENTER))
{
- tools::Long nAW=GetAlignAngle();
- nAW+=2*(nAngle-nAW);
+ Degree100 nAW=GetAlignAngle();
+ nAW+=2_deg100*(nAngle-nAW);
SetAlignAngle(nAW);
}
// mirror exit directions
SdrEscapeDirection nEscDir0=nEscDir;
SdrEscapeDirection nEscDir1=SdrEscapeDirection::SMART;
if (nEscDir0&SdrEscapeDirection::LEFT) {
- tools::Long nEW=EscDirToAngle(SdrEscapeDirection::LEFT);
- nEW+=2*(nAngle-nEW);
+ Degree100 nEW=EscDirToAngle(SdrEscapeDirection::LEFT);
+ nEW+=2_deg100*(nAngle-nEW);
nEscDir1|=EscAngleToDir(nEW);
}
if (nEscDir0&SdrEscapeDirection::TOP) {
- tools::Long nEW=EscDirToAngle(SdrEscapeDirection::TOP);
- nEW+=2*(nAngle-nEW);
+ Degree100 nEW=EscDirToAngle(SdrEscapeDirection::TOP);
+ nEW+=2_deg100*(nAngle-nEW);
nEscDir1|=EscAngleToDir(nEW);
}
if (nEscDir0&SdrEscapeDirection::RIGHT) {
- tools::Long nEW=EscDirToAngle(SdrEscapeDirection::RIGHT);
- nEW+=2*(nAngle-nEW);
+ Degree100 nEW=EscDirToAngle(SdrEscapeDirection::RIGHT);
+ nEW+=2_deg100*(nAngle-nEW);
nEscDir1|=EscAngleToDir(nEW);
}
if (nEscDir0&SdrEscapeDirection::BOTTOM) {
- tools::Long nEW=EscDirToAngle(SdrEscapeDirection::BOTTOM);
- nEW+=2*(nAngle-nEW);
+ Degree100 nEW=EscDirToAngle(SdrEscapeDirection::BOTTOM);
+ nEW+=2_deg100*(nAngle-nEW);
nEscDir1|=EscAngleToDir(nEW);
}
nEscDir=nEscDir1;
@@ -361,7 +361,7 @@ void SdrGluePointList::SetReallyAbsolute(bool bOn, const SdrObject& rObj)
xGP->SetReallyAbsolute(bOn,rObj);
}
-void SdrGluePointList::Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs, const SdrObject* pObj)
+void SdrGluePointList::Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs, const SdrObject* pObj)
{
for (auto& xGP : aList)
xGP->Rotate(rRef,nAngle,sn,cs,pObj);
@@ -370,11 +370,11 @@ void SdrGluePointList::Rotate(const Point& rRef, tools::Long nAngle, double sn,
void SdrGluePointList::Mirror(const Point& rRef1, const Point& rRef2, const SdrObject* pObj)
{
Point aPt(rRef2); aPt-=rRef1;
- tools::Long nAngle=GetAngle(aPt);
+ Degree100 nAngle=GetAngle(aPt);
Mirror(rRef1,rRef2,nAngle,pObj);
}
-void SdrGluePointList::Mirror(const Point& rRef1, const Point& rRef2, tools::Long nAngle, const SdrObject* pObj)
+void SdrGluePointList::Mirror(const Point& rRef1, const Point& rRef2, Degree100 nAngle, const SdrObject* pObj)
{
for (auto& xGP : aList)
xGP->Mirror(rRef1,rRef2,nAngle,pObj);
diff --git a/svx/source/svdraw/svdhdl.cxx b/svx/source/svdraw/svdhdl.cxx
index 99aae2aeddd9..33df3e759c7c 100644
--- a/svx/source/svdraw/svdhdl.cxx
+++ b/svx/source/svdraw/svdhdl.cxx
@@ -327,7 +327,7 @@ void SdrHdl::SetMoveOutside( bool bMoveOutside )
}
}
-void SdrHdl::SetRotationAngle(tools::Long n)
+void SdrHdl::SetRotationAngle(Degree100 n)
{
if(nRotationAngle != n)
{
@@ -965,24 +965,24 @@ PointerStyle SdrHdl::GetPointer() const
}
} else {
// When resizing rotated rectangles, rotate the mouse cursor slightly, too
- if (bSize && nRotationAngle!=0) {
- tools::Long nHdlAngle=0;
+ if (bSize && nRotationAngle!=0_deg100) {
+ Degree100 nHdlAngle(0);
switch (eKind) {
- case SdrHdlKind::LowerRight: nHdlAngle=31500; break;
- case SdrHdlKind::Lower: nHdlAngle=27000; break;
- case SdrHdlKind::LowerLeft: nHdlAngle=22500; break;
- case SdrHdlKind::Left : nHdlAngle=18000; break;
- case SdrHdlKind::UpperLeft: nHdlAngle=13500; break;
- case SdrHdlKind::Upper: nHdlAngle=9000; break;
- case SdrHdlKind::UpperRight: nHdlAngle=4500; break;
- case SdrHdlKind::Right: nHdlAngle=0; break;
+ case SdrHdlKind::LowerRight: nHdlAngle=31500_deg100; break;
+ case SdrHdlKind::Lower: nHdlAngle=27000_deg100; break;
+ case SdrHdlKind::LowerLeft: nHdlAngle=22500_deg100; break;
+ case SdrHdlKind::Left : nHdlAngle=18000_deg100; break;
+ case SdrHdlKind::UpperLeft: nHdlAngle=13500_deg100; break;
+ case SdrHdlKind::Upper: nHdlAngle=9000_deg100; break;
+ case SdrHdlKind::UpperRight: nHdlAngle=4500_deg100; break;
+ case SdrHdlKind::Right: nHdlAngle=0_deg100; break;
default:
break;
}
// a little bit more (for rounding)
- nHdlAngle = NormAngle36000(nHdlAngle + nRotationAngle + 2249);
- nHdlAngle/=4500;
- switch (static_cast<sal_uInt8>(nHdlAngle)) {
+ nHdlAngle = NormAngle36000(nHdlAngle + nRotationAngle + 2249_deg100);
+ nHdlAngle/=4500_deg100;
+ switch (static_cast<sal_uInt8>(nHdlAngle.get())) {
case 0: ePtr=PointerStyle::ESize; break;
case 1: ePtr=PointerStyle::NESize; break;
case 2: ePtr=PointerStyle::NSize; break;
@@ -1831,7 +1831,7 @@ void ImpTextframeHdl::CreateB2dIAObject()
fTransparence,
3.0,
3.0,
- nRotationAngle * -F_PI18000,
+ nRotationAngle.get() * -F_PI18000,
true)); // allow animation; the Handle is not shown at text edit time
pNewOverlayObject->setHittable(false);
diff --git a/svx/source/svdraw/svdmodel.cxx b/svx/source/svdraw/svdmodel.cxx
index e45aacaca197..1e95644654aa 100644
--- a/svx/source/svdraw/svdmodel.cxx
+++ b/svx/source/svdraw/svdmodel.cxx
@@ -1202,9 +1202,9 @@ OUString SdrModel::GetMetricString(tools::Long nVal, bool bNoUnitChars, sal_Int3
return aBuf.makeStringAndClear();
}
-OUString SdrModel::GetAngleString(tools::Long nAngle)
+OUString SdrModel::GetAngleString(Degree100 nAngle)
{
- bool bNeg = nAngle < 0;
+ bool bNeg = nAngle < 0_deg100;
if(bNeg)
nAngle = -nAngle;
diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx
index 0d6911e71a1d..dcb8c6037f1b 100644
--- a/svx/source/svdraw/svdmrkv.cxx
+++ b/svx/source/svdraw/svdmrkv.cxx
@@ -738,7 +738,7 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle const & rRect, const S
{
SdrMark* pM = GetSdrMarkByIndex(0);
SdrObject* pO = pM->GetMarkedSdrObj();
- tools::Long nRotAngle = pO->GetRotateAngle();
+ Degree100 nRotAngle = pO->GetRotateAngle();
// true if we are dealing with a RotGrfFlyFrame
// (SwVirtFlyDrawObj with a SwGrfNode)
bool bWriterGraphic = pO->HasLimitedRotation();
@@ -883,7 +883,7 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle const & rRect, const S
aExtraInfo.append("}");
sSelectionText = aSelection.toString() +
- ", " + OString::number(nRotAngle);
+ ", " + OString::number(nRotAngle.get());
if (!aExtraInfo.isEmpty())
{
sSelectionText += ", " + aExtraInfo.makeStringAndClear();
diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx
index c935ca6f9093..835d4f139caf 100644
--- a/svx/source/svdraw/svdoashp.cxx
+++ b/svx/source/svdraw/svdoashp.cxx
@@ -1527,9 +1527,8 @@ void SdrObjCustomShape::NbcResize( const Point& rRef, const Fraction& rxFact, co
}
// updating fObjectRotation
- tools::Long nTextObjRotation = aGeo.nRotationAngle;
- double fAngle = nTextObjRotation;
- fAngle /= 100.0;
+ Degree100 nTextObjRotation = aGeo.nRotationAngle;
+ double fAngle = toDegrees(nTextObjRotation);
if (IsMirroredX())
{
if (IsMirroredY())
@@ -1552,7 +1551,7 @@ void SdrObjCustomShape::NbcResize( const Point& rRef, const Fraction& rxFact, co
InvalidateRenderGeometry();
}
-void SdrObjCustomShape::NbcRotate( const Point& rRef, tools::Long nAngle, double sn, double cs )
+void SdrObjCustomShape::NbcRotate( const Point& rRef, Degree100 nAngle, double sn, double cs )
{
bool bMirroredX = IsMirroredX();
bool bMirroredY = IsMirroredY();
@@ -1566,7 +1565,7 @@ void SdrObjCustomShape::NbcRotate( const Point& rRef, tools::Long nAngle, double
SdrTextObj::NbcRotate( maRect.TopLeft(), -aGeo.nRotationAngle, // retrieving the unrotated text object
-aGeo.mfSinRotationAngle,
aGeo.mfCosRotationAngle );
- aGeo.nRotationAngle = 0; // resetting aGeo data
+ aGeo.nRotationAngle = 0_deg100; // resetting aGeo data
aGeo.RecalcSinCos();
tools::Long nW = static_cast<tools::Long>( fObjectRotation * 100 ); // applying our object rotation
@@ -1577,7 +1576,7 @@ void SdrObjCustomShape::NbcRotate( const Point& rRef, tools::Long nAngle, double
nW = nW % 36000;
if ( nW < 0 )
nW = 36000 + nW;
- SdrTextObj::NbcRotate( maRect.TopLeft(), nW, // applying text rotation
+ SdrTextObj::NbcRotate( maRect.TopLeft(), Degree100(nW), // applying text rotation
sin( nW * F_PI18000 ),
cos( nW * F_PI18000 ) );
@@ -1587,8 +1586,7 @@ void SdrObjCustomShape::NbcRotate( const Point& rRef, tools::Long nAngle, double
if ( bMirroredY )
nSwap ^= 1;
- double fAngle = nAngle; // updating to our new object rotation
- fAngle /= 100.0;
+ double fAngle = toDegrees(nAngle); // updating to our new object rotation
fObjectRotation = fmod( nSwap ? fObjectRotation - fAngle : fObjectRotation + fAngle, 360.0 );
if ( fObjectRotation < 0 )
fObjectRotation = 360 + fObjectRotation;
@@ -1625,10 +1623,8 @@ void SdrObjCustomShape::NbcMirror( const Point& rRef1, const Point& rRef2 )
SdrTextObj::NbcMirror( rRef1, rRef2 );
// update fObjectRotation
- tools::Long nTextObjRotation = aGeo.nRotationAngle;
- double fAngle = nTextObjRotation;
-
- fAngle /= 100.0;
+ Degree100 nTextObjRotation = aGeo.nRotationAngle;
+ double fAngle = toDegrees(nTextObjRotation);
bool bSingleFlip = (IsMirroredX()!= IsMirroredY());
@@ -1644,20 +1640,19 @@ void SdrObjCustomShape::NbcMirror( const Point& rRef1, const Point& rRef2 )
InvalidateRenderGeometry();
}
-void SdrObjCustomShape::Shear( const Point& rRef, tools::Long nAngle, double tn, bool bVShear )
+void SdrObjCustomShape::Shear( const Point& rRef, Degree100 nAngle, double tn, bool bVShear )
{
SdrTextObj::Shear( rRef, nAngle, tn, bVShear );
InvalidateRenderGeometry();
}
-void SdrObjCustomShape::NbcShear( const Point& rRef, tools::Long nAngle, double tn, bool bVShear )
+void SdrObjCustomShape::NbcShear( const Point& rRef, Degree100 nAngle, double tn, bool bVShear )
{
// TTTT: Fix for old mirroring, can be removed again in aw080
SdrTextObj::NbcShear(rRef,nAngle,tn,bVShear);
// updating fObjectRotation
- tools::Long nTextObjRotation = aGeo.nRotationAngle;
- double fAngle = nTextObjRotation;
- fAngle /= 100.0;
+ Degree100 nTextObjRotation = aGeo.nRotationAngle;
+ double fAngle = toDegrees(nTextObjRotation);
if (IsMirroredX())
{
if (IsMirroredY())
@@ -1698,8 +1693,8 @@ SdrGluePoint SdrObjCustomShape::GetVertexGluePoint(sal_uInt16 nPosNum) const
case 2: aPt=maRect.BottomCenter(); aPt.AdjustY(nWdt ); break;
case 3: aPt=maRect.LeftCenter(); aPt.AdjustX( -nWdt ); break;
}
- if (aGeo.nShearAngle!=0) ShearPoint(aPt,maRect.TopLeft(),aGeo.mfTanShearAngle);
- if (aGeo.nRotationAngle!=0) RotatePoint(aPt,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
+ if (aGeo.nShearAngle!=0_deg100) ShearPoint(aPt,maRect.TopLeft(),aGeo.mfTanShearAngle);
+ if (aGeo.nRotationAngle!=0_deg100) RotatePoint(aPt,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
aPt-=GetSnapRect().Center();
SdrGluePoint aGP(aPt);
aGP.SetPercent(false);
@@ -1743,7 +1738,7 @@ void SdrObjCustomShape::ImpCheckCustomGluePointsAreAdded()
bool bMirroredX = IsMirroredX();
bool bMirroredY = IsMirroredY();
- tools::Long nShearAngle = aGeo.nShearAngle;
+ Degree100 nShearAngle = aGeo.nShearAngle;
double fTan = aGeo.mfTanShearAngle;
if ( aGeo.nRotationAngle || nShearAngle || bMirroredX || bMirroredY )
@@ -1756,7 +1751,7 @@ void SdrObjCustomShape::ImpCheckCustomGluePointsAreAdded()
ShearPoint(aPoly[i],maRect.Center(), fTan );
}
if ( aGeo.nRotationAngle )
- aPoly.Rotate( maRect.Center(), Degree10(aGeo.nRotationAngle / 10) );
+ aPoly.Rotate( maRect.Center(), toDegree10(aGeo.nRotationAngle) );
tools::Rectangle aBoundRect( aPoly.GetBoundRect() );
sal_Int32 nXDiff = aBoundRect.Left() - maRect.Left();
@@ -2744,7 +2739,7 @@ void SdrObjCustomShape::TakeTextRect( SdrOutliner& rOutliner, tools::Rectangle&
if (eVAdj==SDRTEXTVERTADJUST_BOTTOM)
aTextPos.AdjustY(nFreeHgt );
}
- if (aGeo.nRotationAngle!=0)
+ if (aGeo.nRotationAngle!=0_deg100)
RotatePoint(aTextPos,aAnkRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
if (pAnchorRect)
@@ -3003,9 +2998,9 @@ void SdrObjCustomShape::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix,
// reset object shear and rotations
fObjectRotation = 0.0;
- aGeo.nRotationAngle = 0;
+ aGeo.nRotationAngle = 0_deg100;
aGeo.RecalcSinCos();
- aGeo.nShearAngle = 0;
+ aGeo.nShearAngle = 0_deg100;
aGeo.RecalcTan();
// if anchor is used, make position relative to it
@@ -3038,7 +3033,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 = FRound(basegfx::rad2deg(atan(fShearX)) * 100.0);
+ aGeoStat.nShearAngle = Degree100(FRound(basegfx::rad2deg(atan(fShearX)) * 100.0));
aGeoStat.RecalcTan();
Shear(Point(), aGeoStat.nShearAngle, aGeoStat.mfTanShearAngle, false);
}
@@ -3051,7 +3046,7 @@ void SdrObjCustomShape::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix,
// #i78696#
// fRotate is mathematically correct, but aGeoStat.nRotationAngle is
// mirrored -> mirror value here
- aGeoStat.nRotationAngle = NormAngle36000(FRound(-fRotate / F_PI18000));
+ aGeoStat.nRotationAngle = NormAngle36000(Degree100(FRound(-fRotate / F_PI18000)));
aGeoStat.RecalcSinCos();
Rotate(Point(), aGeoStat.nRotationAngle, aGeoStat.mfSinRotationAngle, aGeoStat.mfCosRotationAngle);
}
@@ -3092,7 +3087,7 @@ bool SdrObjCustomShape::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegf
{
// get turn and shear
double fRotate = basegfx::deg2rad(fObjectRotation);
- double fShearX = basegfx::deg2rad(aGeo.nShearAngle / 100.0);
+ double fShearX = toRadians(aGeo.nShearAngle);
// get aRect, this is the unrotated snaprect
tools::Rectangle aRectangle(maRect);
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index 3dafbfe39d4b..a3ef40271c6f 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -1401,16 +1401,16 @@ void SdrObject::NbcResize(const Point& rRef, const Fraction& xFact, const Fracti
SetRectsDirty();
}
-void SdrObject::NbcRotate(const Point& rRef, tools::Long nAngle)
+void SdrObject::NbcRotate(const Point& rRef, Degree100 nAngle)
{
if (nAngle)
{
- double a = nAngle * F_PI18000;
+ double a = nAngle.get() * F_PI18000;
NbcRotate( rRef, nAngle, sin( a ), cos( a ) );
}
}
-void SdrObject::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrObject::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
SetGlueReallyAbsolute(true);
aOutRect.Move(-rRef.X(),-rRef.Y());
@@ -1469,7 +1469,7 @@ void SdrObject::NbcMirror(const Point& rRef1, const Point& rRef2)
SetGlueReallyAbsolute(false);
}
-void SdrObject::NbcShear(const Point& rRef, tools::Long /*nAngle*/, double tn, bool bVShear)
+void SdrObject::NbcShear(const Point& rRef, Degree100 /*nAngle*/, double tn, bool bVShear)
{
SetGlueReallyAbsolute(true);
NbcShearGluePoints(rRef,tn,bVShear);
@@ -1521,9 +1521,9 @@ void SdrObject::Crop(const basegfx::B2DPoint& rRef, double fxFact, double fyFact
SendUserCall(SdrUserCallType::Resize,aBoundRect0);
}
-void SdrObject::Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrObject::Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
- if (nAngle!=0) {
+ if (nAngle) {
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
NbcRotate(rRef,nAngle,sn,cs);
SetChanged();
@@ -1541,9 +1541,9 @@ void SdrObject::Mirror(const Point& rRef1, const Point& rRef2)
SendUserCall(SdrUserCallType::Resize,aBoundRect0);
}
-void SdrObject::Shear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SdrObject::Shear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
- if (nAngle!=0) {
+ if (nAngle) {
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
NbcShear(rRef,nAngle,tn,bVShear);
SetChanged();
@@ -1650,14 +1650,14 @@ void SdrObject::SetLogicRect(const tools::Rectangle& rRect)
SendUserCall(SdrUserCallType::Resize,aBoundRect0);
}
-tools::Long SdrObject::GetRotateAngle() const
+Degree100 SdrObject::GetRotateAngle() const
{
- return 0;
+ return 0_deg100;
}
-tools::Long SdrObject::GetShearAngle(bool /*bVertical*/) const
+Degree100 SdrObject::GetShearAngle(bool /*bVertical*/) const
{
- return 0;
+ return 0_deg100;
}
sal_uInt32 SdrObject::GetSnapPointCount() const
@@ -2000,32 +2000,32 @@ void SdrObject::NbcApplyNotPersistAttr(const SfxItemSet& rAttr)
}
if (rAttr.GetItemState(SDRATTR_SHEARANGLE,true,&pPoolItem)==SfxItemState::SET) {
- tools::Long n=static_cast<const SdrShearAngleItem*>(pPoolItem)->GetValue();
+ Degree100 n=static_cast<const SdrShearAngleItem*>(pPoolItem)->GetValue();
n-=GetShearAngle();
- if (n!=0) {
- double nTan = tan(n * F_PI18000);
+ if (n) {
+ double nTan = tan(n.get() * F_PI18000);
NbcShear(aRef1,n,nTan,false);
}
}
if (rAttr.GetItemState(SDRATTR_ROTATEANGLE,true,&pPoolItem)==SfxItemState::SET) {
- tools::Long n=static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
+ Degree100 n=static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
n-=GetRotateAngle();
- if (n!=0) {
+ if (n) {
NbcRotate(aRef1,n);
}
}
if (rAttr.GetItemState(SDRATTR_ROTATEONE,true,&pPoolItem)==SfxItemState::SET) {
- tools::Long n=static_cast<const SdrRotateOneItem*>(pPoolItem)->GetValue();
+ Degree100 n=static_cast<const SdrRotateOneItem*>(pPoolItem)->GetValue();
NbcRotate(aRef1,n);
}
if (rAttr.GetItemState(SDRATTR_HORZSHEARONE,true,&pPoolItem)==SfxItemState::SET) {
- tools::Long n=static_cast<const SdrHorzShearOneItem*>(pPoolItem)->GetValue();
- double nTan = tan(n * F_PI18000);
+ Degree100 n=static_cast<const SdrHorzShearOneItem*>(pPoolItem)->GetValue();
+ double nTan = tan(n.get() * F_PI18000);
NbcShear(aRef1,n,nTan,false);
}
if (rAttr.GetItemState(SDRATTR_VERTSHEARONE,true,&pPoolItem)==SfxItemState::SET) {
- tools::Long n=static_cast<const SdrVertShearOneItem*>(pPoolItem)->GetValue();
- double nTan = tan(n * F_PI18000);
+ Degree100 n=static_cast<const SdrVertShearOneItem*>(pPoolItem)->GetValue();
+ double nTan = tan(n.get() * F_PI18000);
NbcShear(aRef1,n,nTan,true);
}
@@ -2235,7 +2235,7 @@ void SdrObject::SetGlueReallyAbsolute(bool bOn)
}
}
-void SdrObject::NbcRotateGluePoints(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrObject::NbcRotateGluePoints(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
// First a const call to see whether there are any glue points.
// Force const call!
diff --git a/svx/source/svdraw/svdocirc.cxx b/svx/source/svdraw/svdocirc.cxx
index c55d935a2965..983adc4391a3 100644
--- a/svx/source/svdraw/svdocirc.cxx
+++ b/svx/source/svdraw/svdocirc.cxx
@@ -50,14 +50,13 @@
using namespace com::sun::star;
-static Point GetAnglePnt(const tools::Rectangle& rR, tools::Long nAngle)
+static Point GetAnglePnt(const tools::Rectangle& rR, Degree100 nAngle)
{
Point aCenter(rR.Center());
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;
- a = nAngle * F_PI18000;
+ double a = nAngle.get() * F_PI18000;
Point aRetval(FRound(cos(a)*nMaxRad),-FRound(sin(a)*nMaxRad));
if (nWdt==0) aRetval.setX(0 );
if (nHgt==0) aRetval.setY(0 );
@@ -120,8 +119,8 @@ SdrCircObj::SdrCircObj(
SdrCircKind eNewKind)
: SdrRectObj(rSdrModel)
{
- nStartAngle=0;
- nEndAngle=36000;
+ nStartAngle=0_deg100;
+ nEndAngle=36000_deg100;
meCircleKind=eNewKind;
bClosedObj=eNewKind!=SdrCircKind::Arc;
}
@@ -132,8 +131,8 @@ SdrCircObj::SdrCircObj(
const tools::Rectangle& rRect)
: SdrRectObj(rSdrModel, rRect)
{
- nStartAngle=0;
- nEndAngle=36000;
+ nStartAngle=0_deg100;
+ nEndAngle=36000_deg100;
meCircleKind=eNewKind;
bClosedObj=eNewKind!=SdrCircKind::Arc;
}
@@ -142,14 +141,14 @@ SdrCircObj::SdrCircObj(
SdrModel& rSdrModel,
SdrCircKind eNewKind,
const tools::Rectangle& rRect,
- tools::Long nNewStartWink,
- tools::Long nNewEndWink)
+ Degree100 nNewStartWink,
+ Degree100 nNewEndWink)
: SdrRectObj(rSdrModel, rRect)
{
- tools::Long nAngleDif=nNewEndWink-nNewStartWink;
+ Degree100 nAngleDif=nNewEndWink-nNewStartWink;
nStartAngle=NormAngle36000(nNewStartWink);
nEndAngle=NormAngle36000(nNewEndWink);
- if (nAngleDif==36000) nEndAngle+=nAngleDif; // full circle
+ if (nAngleDif==36000_deg100) nEndAngle+=nAngleDif; // full circle
meCircleKind=eNewKind;
bClosedObj=eNewKind!=SdrCircKind::Arc;
}
@@ -186,7 +185,7 @@ bool SdrCircObj::PaintNeedsXPolyCirc() const
// ellipse segments.
// If not WIN, then (for now) also for circle/ellipse segments and circle/
// ellipse arcs (for precision)
- bool bNeed=aGeo.nRotationAngle!=0 || aGeo.nShearAngle!=0 || meCircleKind==SdrCircKind::Cut;
+ bool bNeed=aGeo.nRotationAngle || aGeo.nShearAngle || meCircleKind==SdrCircKind::Cut;
// If not WIN, then for everything except full circle (for now!)
if (meCircleKind!=SdrCircKind::Full) bNeed = true;
@@ -230,7 +229,7 @@ bool SdrCircObj::PaintNeedsXPolyCirc() const
return bNeed;
}
-basegfx::B2DPolygon SdrCircObj::ImpCalcXPolyCirc(const SdrCircKind eCircleKind, const tools::Rectangle& rRect1, tools::Long nStart, tools::Long nEnd) const
+basegfx::B2DPolygon SdrCircObj::ImpCalcXPolyCirc(const SdrCircKind eCircleKind, const tools::Rectangle& rRect1, Degree100 nStart, Degree100 nEnd) const
{
const basegfx::B2DRange aRange = vcl::unotools::b2DRectangleFromRectangle(rRect1);
basegfx::B2DPolygon aCircPolygon;
@@ -254,8 +253,8 @@ basegfx::B2DPolygon SdrCircObj::ImpCalcXPolyCirc(const SdrCircKind eCircleKind,
{
// 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) % 36000) / 18000.0) * F_PI);
- const double fEnd((((36000 - nStart) % 36000) / 18000.0) * F_PI);
+ const double fStart((((36000 - nEnd.get()) % 36000) / 18000.0) * F_PI);
+ const double fEnd((((36000 - nStart.get()) % 36000) / 18000.0) * F_PI);
// create circle segment. This is not closed by default
aCircPolygon = basegfx::utils::createPolygonFromEllipseSegment(
@@ -293,7 +292,7 @@ basegfx::B2DPolygon SdrCircObj::ImpCalcXPolyCirc(const SdrCircKind eCircleKind,
// shear, rotate and back to top left (if needed)
aMatrix = basegfx::utils::createShearXRotateTranslateB2DHomMatrix(
-aGeo.mfTanShearAngle,
- aGeo.nRotationAngle ? (36000 - aGeo.nRotationAngle) * F_PI18000 : 0.0,
+ aGeo.nRotationAngle ? (36000_deg100 - aGeo.nRotationAngle).get() * F_PI18000 : 0.0,
aTopLeft) * aMatrix;
// apply transformation
@@ -312,7 +311,7 @@ void SdrCircObj::RecalcXPoly()
OUString SdrCircObj::TakeObjNameSingul() const
{
const char* pID=STR_ObjNameSingulCIRC;
- if (maRect.GetWidth() == maRect.GetHeight() && aGeo.nShearAngle==0)
+ if (maRect.GetWidth() == maRect.GetHeight() && aGeo.nShearAngle==0_deg100)
{
switch (meCircleKind) {
case SdrCircKind::Full: pID=STR_ObjNameSingulCIRC; break;
@@ -346,7 +345,7 @@ OUString SdrCircObj::TakeObjNameSingul() const
OUString SdrCircObj::TakeObjNamePlural() const
{
const char* pID=STR_ObjNamePluralCIRC;
- if (maRect.GetWidth() == maRect.GetHeight() && aGeo.nShearAngle==0)
+ if (maRect.GetWidth() == maRect.GetHeight() && aGeo.nShearAngle==0_deg100)
{
switch (meCircleKind) {
case SdrCircKind::Full: pID=STR_ObjNamePluralCIRC; break;
@@ -400,8 +399,8 @@ struct ImpCircUser : public SdrDragStatUserData
Point aP1;
tools::Long nHgt;
tools::Long nWdt;
- tools::Long nStart;
- tools::Long nEnd;
+ Degree100 nStart;
+ Degree100 nEnd;
public:
ImpCircUser()
@@ -530,10 +529,10 @@ bool SdrCircObj::applySpecialDrag(SdrDragStat& rDrag)
{
Point aPt(rDrag.GetNow());
- if (aGeo.nRotationAngle!=0)
+ if (aGeo.nRotationAngle)
RotatePoint(aPt,maRect.TopLeft(),-aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
- if (aGeo.nShearAngle!=0)
+ if (aGeo.nShearAngle)
ShearPoint(aPt,maRect.TopLeft(),-aGeo.mfTanShearAngle);
aPt -= maRect.Center();
@@ -550,15 +549,15 @@ bool SdrCircObj::applySpecialDrag(SdrDragStat& rDrag)
aPt.setX(BigMulDiv(aPt.X(),nHgt,nWdt) );
}
- tools::Long nAngle=NormAngle36000(GetAngle(aPt));
+ Degree100 nAngle=NormAngle36000(GetAngle(aPt));
if (rDrag.GetView() && rDrag.GetView()->IsAngleSnapEnabled())
{
- tools::Long nSA=rDrag.GetView()->GetSnapAngle();
+ Degree100 nSA=rDrag.GetView()->GetSnapAngle();
- if (nSA!=0)
+ if (nSA)
{
- nAngle+=nSA/2;
+ nAngle+=nSA/2_deg100;
nAngle/=nSA;
nAngle*=nSA;
nAngle=NormAngle36000(nAngle);
@@ -599,7 +598,7 @@ OUString SdrCircObj::getSpecialDragComment(const SdrDragStat& rDrag) const
if(SdrCircKind::Full != meCircleKind && nPointCount > 2)
{
const ImpCircUser* pU = static_cast<const ImpCircUser*>(rDrag.GetUser());
- sal_Int32 nAngle;
+ Degree100 nAngle;
aBuf.append(" (");
@@ -624,7 +623,7 @@ OUString SdrCircObj::getSpecialDragComment(const SdrDragStat& rDrag) const
if(bAngle)
{
- const sal_Int32 nAngle(1 == rDrag.GetHdl()->GetPointNum() ? nStartAngle : nEndAngle);
+ const Degree100 nAngle(1 == rDrag.GetHdl()->GetPointNum() ? nStartAngle : nEndAngle);
OUStringBuffer aBuf(ImpGetDescriptionStr(STR_DragCircAngle));
aBuf.append(" (");
@@ -648,8 +647,8 @@ void ImpCircUser::SetCreateParams(SdrDragStat const & rStat)
aCenter=aR.Center();
nWdt=aR.Right()-aR.Left();
nHgt=aR.Bottom()-aR.Top();
- nStart=0;
- nEnd=36000;
+ nStart=0_deg100;
+ nEnd=36000_deg100;
if (rStat.GetPointCount()>2) {
Point aP(rStat.GetPoint(2)-aCenter);
if (nWdt==0) aP.setX(0 );
@@ -661,9 +660,9 @@ void ImpCircUser::SetCreateParams(SdrDragStat const & rStat)
}
nStart=NormAngle36000(GetAngle(aP));
if (rStat.GetView()!=nullptr && rStat.GetView()->IsAngleSnapEnabled()) {
- tools::Long nSA=rStat.GetView()->GetSnapAngle();
- if (nSA!=0) { // angle snapping
- nStart+=nSA/2;
+ Degree100 nSA=rStat.GetView()->GetSnapAngle();
+ if (nSA) { // angle snapping
+ nStart+=nSA/2_deg100;
nStart/=nSA;
nStart*=nSA;
nStart=NormAngle36000(nStart);
@@ -683,9 +682,9 @@ void ImpCircUser::SetCreateParams(SdrDragStat const & rStat)
}
nEnd=NormAngle36000(GetAngle(aP));
if (rStat.GetView()!=nullptr && rStat.GetView()->IsAngleSnapEnabled()) {
- tools::Long nSA=rStat.GetView()->GetSnapAngle();
- if (nSA!=0) { // angle snapping
- nEnd+=nSA/2;
+ Degree100 nSA=rStat.GetView()->GetSnapAngle();
+ if (nSA) { // angle snapping
+ nEnd+=nSA/2_deg100;
nEnd/=nSA;
nEnd*=nSA;
nEnd=NormAngle36000(nEnd);
@@ -831,10 +830,10 @@ void SdrCircObj::NbcMove(const Size& aSiz)
void SdrCircObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact)
{
- tools::Long nAngle0=aGeo.nRotationAngle;
- bool bNoShearRota=(aGeo.nRotationAngle==0 && aGeo.nShearAngle==0);
+ Degree100 nAngle0=aGeo.nRotationAngle;
+ bool bNoShearRota=(aGeo.nRotationAngle==0_deg100 && aGeo.nShearAngle==0_deg100);
SdrTextObj::NbcResize(rRef,xFact,yFact);
- bNoShearRota|=(aGeo.nRotationAngle==0 && aGeo.nShearAngle==0);
+ bNoShearRota|=(aGeo.nRotationAngle==0_deg100 && aGeo.nShearAngle==0_deg100);
if (meCircleKind!=SdrCircKind::Full) {
bool bXMirr=(xFact.GetNumerator()<0) != (xFact.GetDenominator()<0);
bool bYMirr=(yFact.GetNumerator()<0) != (yFact.GetDenominator()<0);
@@ -843,26 +842,26 @@ void SdrCircObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fract
// That, however, is pretty bad (because of forced "hard" formatting).
// Alternatively, we could implement a bMirrored flag (maybe even
// a more general one, e. g. for mirrored text, ...).
- tools::Long nS0=nStartAngle;
- tools::Long nE0=nEndAngle;
+ Degree100 nS0=nStartAngle;
+ Degree100 nE0=nEndAngle;
if (bNoShearRota) {
// the RectObj already mirrors at VMirror because of a 180deg rotation
if (! (bXMirr && bYMirr)) {
- tools::Long nTmp=nS0;
- nS0=18000-nE0;
- nE0=18000-nTmp;
+ Degree100 nTmp=nS0;
+ nS0=18000_deg100-nE0;
+ nE0=18000_deg100-nTmp;
}
} else { // mirror contorted ellipses
if (bXMirr!=bYMirr) {
nS0+=nAngle0;
nE0+=nAngle0;
if (bXMirr) {
- tools::Long nTmp=nS0;
- nS0=18000-nE0;
- nE0=18000-nTmp;
+ Degree100 nTmp=nS0;
+ nS0=18000_deg100-nE0;
+ nE0=18000_deg100-nTmp;
}
if (bYMirr) {
- tools::Long nTmp=nS0;
+ Degree100 nTmp=nS0;
nS0=-nE0;
nE0=-nTmp;
}
@@ -870,17 +869,17 @@ void SdrCircObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fract
nE0-=aGeo.nRotationAngle;
}
}
- tools::Long nAngleDif=nE0-nS0;
+ Degree100 nAngleDif=nE0-nS0;
nStartAngle=NormAngle36000(nS0);
nEndAngle =NormAngle36000(nE0);
- if (nAngleDif==36000) nEndAngle+=nAngleDif; // full circle
+ if (nAngleDif==36000_deg100) nEndAngle+=nAngleDif; // full circle
}
}
SetXPolyDirty();
ImpSetCircInfoToAttr();
}
-void SdrCircObj::NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SdrCircObj::NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
SdrTextObj::NbcShear(rRef,nAngle,tn,bVShear);
SetXPolyDirty();
@@ -899,22 +898,22 @@ void SdrCircObj::NbcMirror(const Point& rRef1, const Point& rRef2)
tools::Long nMaxRad=(std::max(nWdt,nHgt)+1) /2;
double a;
// starting point
- a = nStartAngle * F_PI18000;
+ a = nStartAngle.get() * F_PI18000;
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 * F_PI18000;
+ a = nEndAngle.get() * F_PI18000;
aTmpPt2=Point(FRound(cos(a)*nMaxRad),-FRound(sin(a)*nMaxRad));
if (nWdt==0) aTmpPt2.setX(0 );
if (nHgt==0) aTmpPt2.setY(0 );
aTmpPt2+=aCenter;
- if (aGeo.nRotationAngle!=0) {
+ if (aGeo.nRotationAngle) {
RotatePoint(aTmpPt1,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
RotatePoint(aTmpPt2,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
}
- if (aGeo.nShearAngle!=0) {
+ if (aGeo.nShearAngle) {
ShearPoint(aTmpPt1,maRect.TopLeft(),aGeo.mfTanShearAngle);
ShearPoint(aTmpPt2,maRect.TopLeft(),aGeo.mfTanShearAngle);
}
@@ -924,12 +923,12 @@ void SdrCircObj::NbcMirror(const Point& rRef1, const Point& rRef2)
MirrorPoint(aTmpPt1,rRef1,rRef2);
MirrorPoint(aTmpPt2,rRef1,rRef2);
// unrotate:
- if (aGeo.nRotationAngle!=0) {
+ if (aGeo.nRotationAngle) {
RotatePoint(aTmpPt1,maRect.TopLeft(),-aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle); // -sin for reversion
RotatePoint(aTmpPt2,maRect.TopLeft(),-aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle); // -sin for reversion
}
// unshear:
- if (aGeo.nShearAngle!=0) {
+ if (aGeo.nShearAngle) {
ShearPoint(aTmpPt1,maRect.TopLeft(),-aGeo.mfTanShearAngle); // -tan for reversion
ShearPoint(aTmpPt2,maRect.TopLeft(),-aGeo.mfTanShearAngle); // -tan for reversion
}
@@ -939,10 +938,10 @@ void SdrCircObj::NbcMirror(const Point& rRef1, const Point& rRef2)
// because it's mirrored, the angles are swapped, too
nStartAngle=GetAngle(aTmpPt2);
nEndAngle =GetAngle(aTmpPt1);
- tools::Long nAngleDif=nEndAngle-nStartAngle;
+ Degree100 nAngleDif=nEndAngle-nStartAngle;
nStartAngle=NormAngle36000(nStartAngle);
nEndAngle =NormAngle36000(nEndAngle);
- if (nAngleDif==36000) nEndAngle+=nAngleDif; // full circle
+ if (nAngleDif==36000_deg100) nEndAngle+=nAngleDif; // full circle
}
SetXPolyDirty();
ImpSetCircInfoToAttr();
@@ -985,30 +984,30 @@ void SdrCircObj::TakeUnrotatedSnapRect(tools::Rectangle& rRect) const
if (meCircleKind!=SdrCircKind::Full) {
const Point aPntStart(GetAnglePnt(maRect,nStartAngle));
const Point aPntEnd(GetAnglePnt(maRect,nEndAngle));
- tools::Long a=nStartAngle;
- tools::Long e=nEndAngle;
+ Degree100 a=nStartAngle;
+ Degree100 e=nEndAngle;
rRect.SetLeft(maRect.Right() );
rRect.SetRight(maRect.Left() );
rRect.SetTop(maRect.Bottom() );
rRect.SetBottom(maRect.Top() );
Union(rRect,aPntStart);
Union(rRect,aPntEnd);
- if ((a<=18000 && e>=18000) || (a>e && (a<=18000 || e>=18000))) {
+ if ((a<=18000_deg100 && e>=18000_deg100) || (a>e && (a<=18000_deg100 || e>=18000_deg100))) {
Union(rRect,maRect.LeftCenter());
}
- if ((a<=27000 && e>=27000) || (a>e && (a<=27000 || e>=27000))) {
+ if ((a<=27000_deg100 && e>=27000_deg100) || (a>e && (a<=27000_deg100 || e>=27000_deg100))) {
Union(rRect,maRect.BottomCenter());
}
if (a>e) {
Union(rRect,maRect.RightCenter());
}
- if ((a<=9000 && e>=9000) || (a>e && (a<=9000 || e>=9000))) {
+ if ((a<=9000_deg100 && e>=9000_deg100) || (a>e && (a<=9000_deg100 || e>=9000_deg100))) {
Union(rRect,maRect.TopCenter());
}
if (meCircleKind==SdrCircKind::Section) {
Union(rRect,maRect.Center());
}
- if (aGeo.nRotationAngle!=0) {
+ if (aGeo.nRotationAngle) {
Point aDst(rRect.TopLeft());
aDst-=maRect.TopLeft();
Point aDst0(aDst);
@@ -1017,11 +1016,11 @@ void SdrCircObj::TakeUnrotatedSnapRect(tools::Rectangle& rRect) const
rRect.Move(aDst.X(),aDst.Y());
}
}
- if (aGeo.nShearAngle==0)
+ if (aGeo.nShearAngle==0_deg100)
return;
tools::Long nDst=FRound((rRect.Bottom()-rRect.Top())*aGeo.mfTanShearAngle);
- if (aGeo.nShearAngle>0) {
+ if (aGeo.nShearAngle>0_deg100) {
Point aRef(rRect.TopLeft());
rRect.AdjustLeft( -nDst );
Point aTmpPt(rRect.TopLeft());
@@ -1044,7 +1043,7 @@ void SdrCircObj::RecalcSnapRect()
void SdrCircObj::NbcSetSnapRect(const tools::Rectangle& rRect)
{
- if (aGeo.nRotationAngle!=0 || aGeo.nShearAngle!=0 || meCircleKind!=SdrCircKind::Full) {
+ if (aGeo.nRotationAngle || aGeo.nShearAngle || meCircleKind!=SdrCircKind::Full) {
tools::Rectangle aSR0(GetSnapRect());
tools::Long nWdt0=aSR0.Right()-aSR0.Left();
tools::Long nHgt0=aSR0.Bottom()-aSR0.Top();
@@ -1092,8 +1091,8 @@ void SdrCircObj::ImpSetAttrToCircInfo()
const SfxItemSet& rSet = GetObjectItemSet();
SdrCircKind eNewKind = rSet.Get(SDRATTR_CIRCKIND).GetValue();
- sal_Int32 nNewStart = rSet.Get(SDRATTR_CIRCSTARTANGLE).GetValue();
- sal_Int32 nNewEnd = rSet.Get(SDRATTR_CIRCENDANGLE).GetValue();
+ Degree100 nNewStart = rSet.Get(SDRATTR_CIRCSTARTANGLE).GetValue();
+ Degree100 nNewEnd = rSet.Get(SDRATTR_CIRCENDANGLE).GetValue();
bool bKindChg = meCircleKind != eNewKind;
bool bAngleChg = nNewStart != nStartAngle || nNewEnd != nEndAngle;
@@ -1117,8 +1116,8 @@ void SdrCircObj::ImpSetCircInfoToAttr()
const SfxItemSet& rSet = GetObjectItemSet();
SdrCircKind eOldKindA = rSet.Get(SDRATTR_CIRCKIND).GetValue();
- sal_Int32 nOldStartAngle = rSet.Get(SDRATTR_CIRCSTARTANGLE).GetValue();
- sal_Int32 nOldEndAngle = rSet.Get(SDRATTR_CIRCENDANGLE).GetValue();
+ Degree100 nOldStartAngle = rSet.Get(SDRATTR_CIRCSTARTANGLE).GetValue();
+ Degree100 nOldEndAngle = rSet.Get(SDRATTR_CIRCENDANGLE).GetValue();
if(meCircleKind == eOldKindA && nStartAngle == nOldStartAngle && nEndAngle == nOldEndAngle)
return;
diff --git a/svx/source/svdraw/svdoedge.cxx b/svx/source/svdraw/svdoedge.cxx
index f1395767cd29..3e164e216f03 100644
--- a/svx/source/svdraw/svdoedge.cxx
+++ b/svx/source/svdraw/svdoedge.cxx
@@ -2292,7 +2292,7 @@ void SdrEdgeObj::NbcResize(const Point& rRefPnt, const Fraction& aXFact, const F
}
// #i54102# added rotation support
-void SdrEdgeObj::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrEdgeObj::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
if(bEdgeTrackUserDefined)
{
@@ -2354,7 +2354,7 @@ void SdrEdgeObj::NbcMirror(const Point& rRef1, const Point& rRef2)
}
// #i54102# added shear support
-void SdrEdgeObj::NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SdrEdgeObj::NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
if(bEdgeTrackUserDefined)
{
diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx
index 991b3b288f46..e11d1b54528b 100644
--- a/svx/source/svdraw/svdograf.cxx
+++ b/svx/source/svdraw/svdograf.cxx
@@ -362,7 +362,7 @@ GraphicAttr SdrGrafObj::GetGraphicAttr( SdrGrafObjTransformsAttrs nTransformFlag
{
const bool bMirror = bool( nTransformFlags & SdrGrafObjTransformsAttrs::MIRROR );
const bool bRotate = bool( nTransformFlags & SdrGrafObjTransformsAttrs::ROTATE ) &&
- (aGeo.nRotationAngle && aGeo.nRotationAngle != 18000);
+ (aGeo.nRotationAngle && aGeo.nRotationAngle != 18000_deg100);
// Need cropping info earlier
const_cast<SdrGrafObj*>(this)->ImpSetAttrToGrafInfo();
@@ -373,7 +373,7 @@ GraphicAttr SdrGrafObj::GetGraphicAttr( SdrGrafObjTransformsAttrs nTransformFlag
if( bMirror )
{
- sal_uInt16 nMirrorCase = ( aGeo.nRotationAngle == 18000 ) ? ( bMirrored ? 3 : 4 ) : ( bMirrored ? 2 : 1 );
+ sal_uInt16 nMirrorCase = ( aGeo.nRotationAngle == 18000_deg100 ) ? ( bMirrored ? 3 : 4 ) : ( bMirrored ? 2 : 1 );
bool bHMirr = nMirrorCase == 2 || nMirrorCase == 4;
bool bVMirr = nMirrorCase == 3 || nMirrorCase == 4;
@@ -381,7 +381,7 @@ GraphicAttr SdrGrafObj::GetGraphicAttr( SdrGrafObjTransformsAttrs nTransformFlag
}
if( bRotate )
- aActAttr.SetRotation( Degree10(aGeo.nRotationAngle / 10) );
+ aActAttr.SetRotation( toDegree10(aGeo.nRotationAngle ) );
}
return aActAttr;
@@ -509,9 +509,9 @@ void SdrGrafObj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const
{
bool bNoPresGrf = ( mpGraphicObject->GetType() != GraphicType::NONE ) && !bEmptyPresObj;
- rInfo.bResizeFreeAllowed = aGeo.nRotationAngle % 9000 == 0 ||
- aGeo.nRotationAngle % 18000 == 0 ||
- aGeo.nRotationAngle % 27000 == 0;
+ rInfo.bResizeFreeAllowed = aGeo.nRotationAngle.get() % 9000 == 0 ||
+ aGeo.nRotationAngle.get() % 18000 == 0 ||
+ aGeo.nRotationAngle.get() % 27000 == 0;
rInfo.bResizePropAllowed = true;
rInfo.bRotateFreeAllowed = bNoPresGrf;
diff --git a/svx/source/svdraw/svdogrp.cxx b/svx/source/svdraw/svdogrp.cxx
index b78a02cdfafe..34ae1c55fe8a 100644
--- a/svx/source/svdraw/svdogrp.cxx
+++ b/svx/source/svdraw/svdogrp.cxx
@@ -299,9 +299,9 @@ bool SdrObjGroup::BegCreate(SdrDragStat& /*rStat*/)
}
-tools::Long SdrObjGroup::GetRotateAngle() const
+Degree100 SdrObjGroup::GetRotateAngle() const
{
- tools::Long nRetval(0);
+ Degree100 nRetval(0);
if(0 != GetObjCount())
{
@@ -314,9 +314,9 @@ tools::Long SdrObjGroup::GetRotateAngle() const
}
-tools::Long SdrObjGroup::GetShearAngle(bool /*bVertical*/) const
+Degree100 SdrObjGroup::GetShearAngle(bool /*bVertical*/) const
{
- tools::Long nRetval(0);
+ Degree100 nRetval(0);
if(0 != GetObjCount())
{
@@ -413,7 +413,7 @@ void SdrObjGroup::NbcResize(const Point& rRef, const Fraction& xFact, const Frac
}
-void SdrObjGroup::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrObjGroup::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
SetGlueReallyAbsolute(true);
RotatePoint(aRefPoint,rRef,sn,cs);
@@ -447,7 +447,7 @@ void SdrObjGroup::NbcMirror(const Point& rRef1, const Point& rRef2)
}
-void SdrObjGroup::NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SdrObjGroup::NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
SetGlueReallyAbsolute(true);
ShearPoint(aRefPoint,rRef,tn);
@@ -610,9 +610,9 @@ void SdrObjGroup::Resize(const Point& rRef, const Fraction& xFact, const Fractio
}
-void SdrObjGroup::Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrObjGroup::Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
- if (nAngle==0)
+ if (nAngle==0_deg100)
return;
SetGlueReallyAbsolute(true);
@@ -673,9 +673,9 @@ void SdrObjGroup::Mirror(const Point& rRef1, const Point& rRef2)
}
-void SdrObjGroup::Shear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SdrObjGroup::Shear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
- if (nAngle==0)
+ if (nAngle==0_deg100)
return;
SetGlueReallyAbsolute(true);
diff --git a/svx/source/svdraw/svdomeas.cxx b/svx/source/svdraw/svdomeas.cxx
index 4bbfb61ea289..8464d2f86b6e 100644
--- a/svx/source/svdraw/svdomeas.cxx
+++ b/svx/source/svdraw/svdomeas.cxx
@@ -263,7 +263,7 @@ struct ImpMeasureRec : public SdrDragStatUserData
bool bTextRota90;
bool bTextUpsideDown;
bool bTextAutoAngle;
- tools::Long nTextAutoAngleView;
+ Degree100 nTextAutoAngleView;
};
namespace {
@@ -285,9 +285,9 @@ struct ImpMeasurePoly
ImpLineRec aHelpline2;
Size aTextSize;
tools::Long nLineLen;
- tools::Long nLineAngle;
- tools::Long nTextAngle;
- tools::Long nHlpAngle;
+ Degree100 nLineAngle;
+ Degree100 nTextAngle;
+ Degree100 nHlpAngle;
double nLineSin;
double nLineCos;
sal_uInt16 nMainlineCnt;
@@ -417,28 +417,28 @@ void SdrMeasureObj::ImpCalcGeometrics(const ImpMeasureRec& rRec, ImpMeasurePoly&
rPol.nArrow2Len=nArrow2Len;
rPol.nLineAngle=GetAngle(aDelt);
- double a = rPol.nLineAngle * F_PI18000;
+ double a = rPol.nLineAngle.get() * F_PI18000;
double nLineSin=sin(a);
double nLineCos=cos(a);
rPol.nLineSin=nLineSin;
rPol.nLineCos=nLineCos;
rPol.nTextAngle=rPol.nLineAngle;
- if (rRec.bTextRota90) rPol.nTextAngle+=9000;
+ if (rRec.bTextRota90) rPol.nTextAngle+=9000_deg100;
rPol.bAutoUpsideDown=false;
if (rRec.bTextAutoAngle) {
- tools::Long nTmpAngle=NormAngle36000(rPol.nTextAngle-rRec.nTextAutoAngleView);
- if (nTmpAngle>=18000) {
- rPol.nTextAngle+=18000;
+ Degree100 nTmpAngle=NormAngle36000(rPol.nTextAngle-rRec.nTextAutoAngleView);
+ if (nTmpAngle>=18000_deg100) {
+ rPol.nTextAngle+=18000_deg100;
rPol.bAutoUpsideDown=true;
}
}
- if (rRec.bTextUpsideDown) rPol.nTextAngle+=18000;
+ if (rRec.bTextUpsideDown) rPol.nTextAngle+=18000_deg100;
rPol.nTextAngle=NormAngle36000(rPol.nTextAngle);
- rPol.nHlpAngle=rPol.nLineAngle+9000;
- if (rRec.bBelowRefEdge) rPol.nHlpAngle+=18000;
+ rPol.nHlpAngle=rPol.nLineAngle+9000_deg100;
+ if (rRec.bBelowRefEdge) rPol.nHlpAngle+=18000_deg100;
rPol.nHlpAngle=NormAngle36000(rPol.nHlpAngle);
double nHlpSin=nLineCos;
double nHlpCos=-nLineSin;
@@ -878,8 +878,8 @@ OUString SdrMeasureObj::getSpecialDragComment(const SdrDragStat& /*rDrag*/) cons
void SdrMeasureObj::ImpEvalDrag(ImpMeasureRec& rRec, const SdrDragStat& rDrag) const
{
- tools::Long nLineAngle=GetAngle(rRec.aPt2-rRec.aPt1);
- double a = nLineAngle * F_PI18000;
+ Degree100 nLineAngle=GetAngle(rRec.aPt2-rRec.aPt1);
+ double a = nLineAngle.get() * F_PI18000;
double nSin=sin(a);
double nCos=cos(a);
@@ -1016,7 +1016,7 @@ void SdrMeasureObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fr
SetTextDirty();
}
-void SdrMeasureObj::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrMeasureObj::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
SdrTextObj::NbcRotate(rRef,nAngle,sn,cs);
tools::Long nLen0=GetLen(aPt2-aPt1);
@@ -1047,7 +1047,7 @@ void SdrMeasureObj::NbcMirror(const Point& rRef1, const Point& rRef2)
SetRectsDirty();
}
-void SdrMeasureObj::NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SdrMeasureObj::NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
SdrTextObj::NbcShear(rRef,nAngle,tn,bVShear);
ShearPoint(aPt1,rRef,tn,bVShear);
@@ -1056,7 +1056,7 @@ void SdrMeasureObj::NbcShear(const Point& rRef, tools::Long nAngle, double tn, b
SetTextDirty();
}
-tools::Long SdrMeasureObj::GetRotateAngle() const
+Degree100 SdrMeasureObj::GetRotateAngle() const
{
return GetAngle(aPt2-aPt1);
}
diff --git a/svx/source/svdraw/svdopath.cxx b/svx/source/svdraw/svdopath.cxx
index 24c93bb67f63..b7655a4a7b00 100644
--- a/svx/source/svdraw/svdopath.cxx
+++ b/svx/source/svdraw/svdopath.cxx
@@ -239,8 +239,8 @@ struct ImpPathCreateUser : public SdrDragStatUserData
Point aRectP2;
Point aRectP3;
tools::Long nCircRadius;
- tools::Long nCircStAngle;
- tools::Long nCircRelAngle;
+ Degree100 nCircStAngle;
+ Degree100 nCircRelAngle;
bool bBezier;
bool bBezHasCtrl0;
bool bCircle;
@@ -308,40 +308,40 @@ XPolygon ImpPathCreateUser::GetBezierPoly() const
void ImpPathCreateUser::CalcCircle(const Point& rP1, const Point& rP2, const Point& rDir, SdrView const * pView)
{
- tools::Long nTangAngle=GetAngle(rDir);
+ Degree100 nTangAngle=GetAngle(rDir);
aCircStart=rP1;
aCircEnd=rP2;
aCircCenter=rP1;
tools::Long dx=rP2.X()-rP1.X();
tools::Long dy=rP2.Y()-rP1.Y();
- tools::Long dAngle=GetAngle(Point(dx,dy))-nTangAngle;
+ Degree100 dAngle=GetAngle(Point(dx,dy))-nTangAngle;
dAngle=NormAngle36000(dAngle);
- tools::Long nTmpAngle=NormAngle36000(9000-dAngle);
- bool bRet=nTmpAngle!=9000 && nTmpAngle!=27000;
+ Degree100 nTmpAngle=NormAngle36000(9000_deg100-dAngle);
+ bool bRet=nTmpAngle!=9000_deg100 && nTmpAngle!=27000_deg100;
tools::Long nRad=0;
if (bRet) {
- double cs = cos(nTmpAngle * F_PI18000);
+ double cs = cos(nTmpAngle.get() * F_PI18000);
double nR=static_cast<double>(GetLen(Point(dx,dy)))/cs/2;
nRad=std::abs(FRound(nR));
}
- if (dAngle<18000) {
- nCircStAngle=NormAngle36000(nTangAngle-9000);
- nCircRelAngle=NormAngle36000(2*dAngle);
- aCircCenter.AdjustX(FRound(nRad * cos((nTangAngle + 9000) * F_PI18000)));
- aCircCenter.AdjustY(-(FRound(nRad * sin((nTangAngle + 9000) * F_PI18000))));
+ 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))));
} else {
- nCircStAngle=NormAngle36000(nTangAngle+9000);
- nCircRelAngle=-NormAngle36000(36000-2*dAngle);
- aCircCenter.AdjustX(FRound(nRad * cos((nTangAngle - 9000) * F_PI18000)));
- aCircCenter.AdjustY(-(FRound(nRad * sin((nTangAngle - 9000) * F_PI18000))));
+ 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))));
}
bAngleSnap=pView!=nullptr && pView->IsAngleSnapEnabled();
if (bAngleSnap) {
- tools::Long nSA=pView->GetSnapAngle();
- if (nSA!=0) { // angle snapping
- bool bNeg=nCircRelAngle<0;
+ Degree100 nSA=pView->GetSnapAngle();
+ if (nSA) { // angle snapping
+ bool bNeg=nCircRelAngle<0_deg100;
if (bNeg) nCircRelAngle=-nCircRelAngle;
- nCircRelAngle+=nSA/2;
+ nCircRelAngle+=nSA/2_deg100;
nCircRelAngle/=nSA;
nCircRelAngle*=nSA;
nCircRelAngle=NormAngle36000(nCircRelAngle);
@@ -349,21 +349,21 @@ void ImpPathCreateUser::CalcCircle(const Point& rP1, const Point& rP2, const Poi
}
}
nCircRadius=nRad;
- if (nRad==0 || std::abs(nCircRelAngle)<5) bRet=false;
+ if (nRad==0 || abs(nCircRelAngle).get()<5) bRet=false;
bCircle=bRet;
}
XPolygon ImpPathCreateUser::GetCirclePoly() const
{
- if (nCircRelAngle>=0) {
+ if (nCircRelAngle>=0_deg100) {
XPolygon aXP(aCircCenter,nCircRadius,nCircRadius,
- Degree10((nCircStAngle+5)/10),Degree10((nCircStAngle+nCircRelAngle+5)/10),false);
+ toDegree10(nCircStAngle), toDegree10(nCircStAngle+nCircRelAngle),false);
aXP[0]=aCircStart; aXP.SetFlags(0,PolyFlags::Smooth);
if (!bAngleSnap) aXP[aXP.GetPointCount()-1]=aCircEnd;
return aXP;
} else {
XPolygon aXP(aCircCenter,nCircRadius,nCircRadius,
- Degree10(NormAngle36000(nCircStAngle+nCircRelAngle+5)/10),Degree10((nCircStAngle+5)/10),false);
+ toDegree10(NormAngle36000(nCircStAngle+nCircRelAngle)), toDegree10(nCircStAngle),false);
sal_uInt16 nCount=aXP.GetPointCount();
for (sal_uInt16 nNum=nCount/2; nNum>0;) {
nNum--; // reverse XPoly's order of points
@@ -449,9 +449,9 @@ void ImpPathCreateUser::CalcRect(const Point& rP1, const Point& rP2, const Point
else {
y=BigMulDiv(x,nDirY,nDirX);
tools::Long nHypLen=aTmpPt.Y()-y;
- tools::Long nTangAngle=-GetAngle(rDir);
+ Degree100 nTangAngle=-GetAngle(rDir);
// sin=g/h, g=h*sin
- double a = nTangAngle * F_PI18000;
+ double a = nTangAngle.get() * F_PI18000;
double sn=sin(a);
double cs=cos(a);
double nGKathLen=nHypLen*sn;
@@ -736,12 +736,12 @@ bool ImpPathForDragAndCreate::movePathDrag( SdrDragStat& rDrag ) const
{
Point aPt(mpSdrPathDragData->aXP[nNextPnt]);
aPt-=rDrag.GetNow();
- tools::Long nAngle1=GetAngle(aPt);
+ Degree100 nAngle1=GetAngle(aPt);
aPt=rDrag.GetNow();
aPt-=mpSdrPathDragData->aXP[nPrevPnt];
- tools::Long nAngle2=GetAngle(aPt);
- tools::Long nDiff=nAngle1-nAngle2;
- nDiff=std::abs(nDiff);
+ Degree100 nAngle2=GetAngle(aPt);
+ Degree100 nDiff=nAngle1-nAngle2;
+ nDiff=abs(nDiff);
mpSdrPathDragData->bEliminate=nDiff<=rDrag.GetView()->GetEliminatePolyPointLimitAngle();
if (mpSdrPathDragData->bEliminate) { // adapt position, Smooth is true for the ends
aPt=mpSdrPathDragData->aXP[nNextPnt];
@@ -932,7 +932,7 @@ OUString ImpPathForDragAndCreate::getSpecialDragComment(const SdrDragStat& rDrag
if(pU->bCircle)
{
- aStr += SdrModel::GetAngleString(std::abs(pU->nCircRelAngle))
+ aStr += SdrModel::GetAngleString(abs(pU->nCircRelAngle))
+ " r="
+ mrSdrPathObject.getSdrModelFromSdrObject().GetMetricString(pU->nCircRadius, true);
}
@@ -945,7 +945,7 @@ OUString ImpPathForDragAndCreate::getSpecialDragComment(const SdrDragStat& rDrag
if(!IsFreeHand(meObjectKind))
{
sal_Int32 nLen(GetLen(aNow));
- sal_Int32 nAngle(GetAngle(aNow));
+ Degree100 nAngle(GetAngle(aNow));
aStr += " l="
+ mrSdrPathObject.getSdrModelFromSdrObject().GetMetricString(nLen, true)
+ " "
@@ -1027,7 +1027,7 @@ OUString ImpPathForDragAndCreate::getSpecialDragComment(const SdrDragStat& rDrag
aNow -= rXPoly[nRef];
sal_Int32 nLen(GetLen(aNow));
- sal_Int32 nAngle(GetAngle(aNow));
+ Degree100 nAngle(GetAngle(aNow));
aStr += " l="
+ mrSdrPathObject.getSdrModelFromSdrObject().GetMetricString(nLen, true)
+ " "
@@ -1070,7 +1070,7 @@ OUString ImpPathForDragAndCreate::getSpecialDragComment(const SdrDragStat& rDrag
aPt -= rXPoly[nPt1];
sal_Int32 nLen(GetLen(aPt));
- sal_Int32 nAngle(GetAngle(aPt));
+ Degree100 nAngle(GetAngle(aPt));
aStr += " l="
+ mrSdrPathObject.getSdrModelFromSdrObject().GetMetricString(nLen, true)
+ " "
@@ -1088,7 +1088,7 @@ OUString ImpPathForDragAndCreate::getSpecialDragComment(const SdrDragStat& rDrag
aPt -= rXPoly[nPt2];
sal_Int32 nLen(GetLen(aPt));
- sal_Int32 nAngle(GetAngle(aPt));
+ Degree100 nAngle(GetAngle(aPt));
aStr += "l="
+ mrSdrPathObject.getSdrModelFromSdrObject().GetMetricString(nLen, true)
+ " "
@@ -1670,7 +1670,7 @@ void SdrPathObj::ImpForceLineAngle()
const Point aDelt(FRound(aB2DDelt.getX()), FRound(aB2DDelt.getY()));
aGeo.nRotationAngle=GetAngle(aDelt);
- aGeo.nShearAngle=0;
+ aGeo.nShearAngle=0_deg100;
aGeo.RecalcSinCos();
aGeo.RecalcTan();
@@ -2293,18 +2293,18 @@ void SdrPathObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fract
SdrTextObj::NbcResize(rRef,xFact,yFact);
}
-void SdrPathObj::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrPathObj::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
// Thank JOE, the angles are defined mirrored to the mathematical meanings
const basegfx::B2DHomMatrix aTrans(
- basegfx::utils::createRotateAroundPoint(rRef.X(), rRef.Y(), -nAngle * F_PI18000));
+ basegfx::utils::createRotateAroundPoint(rRef.X(), rRef.Y(), -nAngle.get() * F_PI18000));
maPathPolygon.transform(aTrans);
// #i19871# first modify locally, then call parent (to get correct SnapRect with GluePoints)
SdrTextObj::NbcRotate(rRef,nAngle,sn,cs);
}
-void SdrPathObj::NbcShear(const Point& rRefPnt, tools::Long nAngle, double fTan, bool bVShear)
+void SdrPathObj::NbcShear(const Point& rRefPnt, Degree100 nAngle, double fTan, bool bVShear)
{
basegfx::B2DHomMatrix aTrans(basegfx::utils::createTranslateB2DHomMatrix(-rRefPnt.X(), -rRefPnt.Y()));
@@ -2811,14 +2811,14 @@ bool SdrPathObj::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DP
if(aGeo.nShearAngle || aGeo.nRotationAngle)
{
// get rotate and shear in drawingLayer notation
- fRotate = aGeo.nRotationAngle * F_PI18000;
- fShearX = aGeo.nShearAngle * F_PI18000;
+ fRotate = aGeo.nRotationAngle.get() * F_PI18000;
+ fShearX = aGeo.nShearAngle.get() * F_PI18000;
// build mathematically correct (negative shear and rotate) object transform
// containing shear and rotate to extract unsheared, unrotated polygon
basegfx::B2DHomMatrix aObjectMatrix;
aObjectMatrix.shearX(-aGeo.mfTanShearAngle);
- aObjectMatrix.rotate((36000 - aGeo.nRotationAngle) * F_PI18000);
+ aObjectMatrix.rotate((36000 - aGeo.nRotationAngle.get()) * F_PI18000);
// create inverse from it and back-transform polygon
basegfx::B2DHomMatrix aInvObjectMatrix(aObjectMatrix);
@@ -2901,9 +2901,9 @@ void SdrPathObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b
basegfx::B2DPolyPolygon aNewPolyPolygon(rPolyPolygon);
// reset object shear and rotations
- aGeo.nRotationAngle = 0;
+ aGeo.nRotationAngle = 0_deg100;
aGeo.RecalcSinCos();
- aGeo.nShearAngle = 0;
+ aGeo.nShearAngle = 0_deg100;
aGeo.RecalcTan();
if( getSdrModelFromSdrObject().IsWriter() )
@@ -2949,7 +2949,7 @@ void SdrPathObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b
if(!basegfx::fTools::equalZero(fShearX))
{
aTransform.shearX(tan(-atan(fShearX)));
- aGeo.nShearAngle = FRound(atan(fShearX) / F_PI18000);
+ aGeo.nShearAngle = Degree100(FRound(atan(fShearX) / F_PI18000));
aGeo.RecalcTan();
}
@@ -2963,7 +2963,7 @@ void SdrPathObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b
// #i78696#
// fRotate is mathematically correct, but aGeoStat.nRotationAngle is
// mirrored -> mirror value here
- aGeo.nRotationAngle = NormAngle36000(FRound(-fRotate / F_PI18000));
+ aGeo.nRotationAngle = NormAngle36000(Degree100(FRound(-fRotate / F_PI18000)));
aGeo.RecalcSinCos();
}
diff --git a/svx/source/svdraw/svdorect.cxx b/svx/source/svdraw/svdorect.cxx
index 7491f6c85c91..111dd2b35086 100644
--- a/svx/source/svdraw/svdorect.cxx
+++ b/svx/source/svdraw/svdorect.cxx
@@ -115,8 +115,8 @@ XPolygon SdrRectObj::ImpCalcXPoly(const tools::Rectangle& rRect1, tools::Long nR
aXPoly=aNewPoly;
// these angles always relate to the top left corner of aRect
- if (aGeo.nShearAngle!=0) ShearXPoly(aXPoly,maRect.TopLeft(),aGeo.mfTanShearAngle);
- if (aGeo.nRotationAngle!=0) RotateXPoly(aXPoly,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
+ if (aGeo.nShearAngle) ShearXPoly(aXPoly,maRect.TopLeft(),aGeo.mfTanShearAngle);
+ if (aGeo.nRotationAngle) RotateXPoly(aXPoly,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
return aXPoly;
}
@@ -138,7 +138,7 @@ const XPolygon& SdrRectObj::GetXPoly() const
void SdrRectObj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const
{
bool bNoTextFrame=!IsTextFrame();
- rInfo.bResizeFreeAllowed=bNoTextFrame || aGeo.nRotationAngle%9000==0;
+ rInfo.bResizeFreeAllowed=bNoTextFrame || ((aGeo.nRotationAngle.get() % 9000) == 0);
rInfo.bResizePropAllowed=true;
rInfo.bRotateFreeAllowed=true;
rInfo.bRotate90Allowed =true;
@@ -170,11 +170,11 @@ SdrObjKind SdrRectObj::GetObjIdentifier() const
void SdrRectObj::TakeUnrotatedSnapRect(tools::Rectangle& rRect) const
{
rRect = maRect;
- if (aGeo.nShearAngle==0)
+ if (aGeo.nShearAngle==0_deg100)
return;
tools::Long nDst=FRound((maRect.Bottom()-maRect.Top())*aGeo.mfTanShearAngle);
- if (aGeo.nShearAngle>0)
+ if (aGeo.nShearAngle>0_deg100)
{
Point aRef(rRect.TopLeft());
rRect.AdjustLeft( -nDst );
@@ -200,7 +200,7 @@ OUString SdrRectObj::TakeObjNameSingul() const
bool bRounded = GetEckenradius() != 0; // rounded down
const char* pResId = bRounded ? STR_ObjNameSingulRECTRND : STR_ObjNameSingulRECT;
- if (aGeo.nShearAngle!=0)
+ if (aGeo.nShearAngle)
{
pResId = bRounded ? STR_ObjNameSingulPARALRND : STR_ObjNameSingulPARAL; // parallelogram or, maybe, rhombus
}
@@ -231,7 +231,7 @@ OUString SdrRectObj::TakeObjNamePlural() const
bool bRounded = GetEckenradius() != 0; // rounded down
const char* pResId = bRounded ? STR_ObjNamePluralRECTRND : STR_ObjNamePluralRECT;
- if (aGeo.nShearAngle!=0)
+ if (aGeo.nShearAngle)
{
pResId = bRounded ? STR_ObjNamePluralPARALRND : STR_ObjNamePluralPARAL; // parallelogram or rhombus
}
@@ -273,7 +273,7 @@ basegfx::B2DPolyPolygon SdrRectObj::TakeXorPoly() const
void SdrRectObj::RecalcSnapRect()
{
tools::Long nEckRad=GetEckenradius();
- if ((aGeo.nRotationAngle!=0 || aGeo.nShearAngle!=0) && nEckRad!=0) {
+ if ((aGeo.nRotationAngle || aGeo.nShearAngle) && nEckRad!=0) {
maSnapRect=GetXPoly().GetBoundRect();
} else {
SdrTextObj::RecalcSnapRect();
@@ -470,13 +470,13 @@ void SdrRectObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fract
SetXPolyDirty();
}
-void SdrRectObj::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrRectObj::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
SdrTextObj::NbcRotate(rRef,nAngle,sn,cs);
SetXPolyDirty();
}
-void SdrRectObj::NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SdrRectObj::NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
SdrTextObj::NbcShear(rRef,nAngle,tn,bVShear);
SetXPolyDirty();
@@ -506,8 +506,8 @@ SdrGluePoint SdrRectObj::GetVertexGluePoint(sal_uInt16 nPosNum) const
case 2: aPt=maRect.BottomCenter(); aPt.AdjustY(nWdt ); break;
case 3: aPt=maRect.LeftCenter(); aPt.AdjustX( -nWdt ); break;
}
- if (aGeo.nShearAngle!=0) ShearPoint(aPt,maRect.TopLeft(),aGeo.mfTanShearAngle);
- if (aGeo.nRotationAngle!=0) RotatePoint(aPt,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
+ if (aGeo.nShearAngle) ShearPoint(aPt,maRect.TopLeft(),aGeo.mfTanShearAngle);
+ if (aGeo.nRotationAngle) RotatePoint(aPt,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
aPt-=GetSnapRect().Center();
SdrGluePoint aGP(aPt);
aGP.SetPercent(false);
@@ -532,8 +532,8 @@ SdrGluePoint SdrRectObj::GetCornerGluePoint(sal_uInt16 nPosNum) const
case 2: aPt=maRect.BottomRight(); aPt.AdjustX(nWdt ); aPt.AdjustY(nWdt ); break;
case 3: aPt=maRect.BottomLeft(); aPt.AdjustX( -nWdt ); aPt.AdjustY(nWdt ); break;
}
- if (aGeo.nShearAngle!=0) ShearPoint(aPt,maRect.TopLeft(),aGeo.mfTanShearAngle);
- if (aGeo.nRotationAngle!=0) RotatePoint(aPt,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
+ if (aGeo.nShearAngle) ShearPoint(aPt,maRect.TopLeft(),aGeo.mfTanShearAngle);
+ if (aGeo.nRotationAngle) RotatePoint(aPt,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
aPt-=GetSnapRect().Center();
SdrGluePoint aGP(aPt);
aGP.SetPercent(false);
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index 710e81d6bfee..7ffc95af16c4 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -382,8 +382,8 @@ void SdrTextObj::ImpJustifyRect(tools::Rectangle& rRect)
void SdrTextObj::ImpCheckShear()
{
- if (bNoShear && aGeo.nShearAngle!=0) {
- aGeo.nShearAngle=0;
+ if (bNoShear && aGeo.nShearAngle) {
+ aGeo.nShearAngle=0_deg100;
aGeo.mfTanShearAngle=0;
}
}
@@ -391,7 +391,7 @@ void SdrTextObj::ImpCheckShear()
void SdrTextObj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const
{
bool bNoTextFrame=!IsTextFrame();
- rInfo.bResizeFreeAllowed=bNoTextFrame || aGeo.nRotationAngle%9000==0;
+ rInfo.bResizeFreeAllowed=bNoTextFrame || ((aGeo.nRotationAngle.get() % 9000) == 0);
rInfo.bResizePropAllowed=true;
rInfo.bRotateFreeAllowed=true;
rInfo.bRotate90Allowed =true;
@@ -531,7 +531,7 @@ void SdrTextObj::ImpSetContourPolygon( SdrOutliner& rOutliner, tools::Rectangle
if(aGeo.nRotationAngle)
{
// Unrotate!
- aMatrix.rotate(-aGeo.nRotationAngle * F_PI18000);
+ aMatrix.rotate(-aGeo.nRotationAngle.get() * F_PI18000);
}
aXorPolyPolygon.transform(aMatrix);
@@ -609,7 +609,7 @@ void SdrTextObj::TakeTextAnchorRect(tools::Rectangle& rAnchorRect) const
if (aAnkRect.GetWidth()<2) aAnkRect.SetRight(aAnkRect.Left()+1 ); // minimum size h and v: 2 px
if (aAnkRect.GetHeight()<2) aAnkRect.SetBottom(aAnkRect.Top()+1 );
}
- if (aGeo.nRotationAngle!=0) {
+ if (aGeo.nRotationAngle) {
Point aTmpPt(aAnkRect.TopLeft());
RotatePoint(aTmpPt,aRotateRef,aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
aTmpPt-=aAnkRect.TopLeft();
@@ -776,7 +776,7 @@ void SdrTextObj::TakeTextRect( SdrOutliner& rOutliner, tools::Rectangle& rTextRe
if (eVAdj==SDRTEXTVERTADJUST_BOTTOM)
aTextPos.AdjustY(nFreeHgt );
}
- if (aGeo.nRotationAngle!=0)
+ if (aGeo.nRotationAngle)
RotatePoint(aTextPos,aAnkRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
if (pAnchorRect)
@@ -1053,8 +1053,8 @@ SdrTextObj& SdrTextObj::operator=(const SdrTextObj& rObj)
basegfx::B2DPolyPolygon SdrTextObj::TakeXorPoly() const
{
tools::Polygon aPol(maRect);
- if (aGeo.nShearAngle!=0) ShearPoly(aPol,maRect.TopLeft(),aGeo.mfTanShearAngle);
- if (aGeo.nRotationAngle!=0) RotatePoly(aPol,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
+ if (aGeo.nShearAngle) ShearPoly(aPol,maRect.TopLeft(),aGeo.mfTanShearAngle);
+ if (aGeo.nRotationAngle) RotatePoly(aPol,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
basegfx::B2DPolyPolygon aRetval;
aRetval.append(aPol.getB2DPolygon());
@@ -1080,7 +1080,7 @@ basegfx::B2DPolyPolygon SdrTextObj::TakeContour() const
bool bFitToSize(IsFitToSize());
if (bFitToSize) aR=aAnchor2;
tools::Polygon aPol(aR);
- if (aGeo.nRotationAngle!=0) RotatePoly(aPol,aR.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
+ if (aGeo.nRotationAngle) RotatePoly(aPol,aR.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
aRetval.append(aPol.getB2DPolygon());
}
@@ -1090,11 +1090,11 @@ basegfx::B2DPolyPolygon SdrTextObj::TakeContour() const
void SdrTextObj::RecalcSnapRect()
{
- if (aGeo.nRotationAngle!=0 || aGeo.nShearAngle!=0)
+ if (aGeo.nRotationAngle || aGeo.nShearAngle)
{
tools::Polygon aPol(maRect);
- if (aGeo.nShearAngle!=0) ShearPoly(aPol,maRect.TopLeft(),aGeo.mfTanShearAngle);
- if (aGeo.nRotationAngle!=0) RotatePoly(aPol,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
+ if (aGeo.nShearAngle) ShearPoly(aPol,maRect.TopLeft(),aGeo.mfTanShearAngle);
+ if (aGeo.nRotationAngle) RotatePoly(aPol,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
maSnapRect=aPol.GetBoundRect();
} else {
maSnapRect = maRect;
@@ -1116,8 +1116,8 @@ Point SdrTextObj::GetSnapPoint(sal_uInt32 i) const
case 3: aP=maRect.BottomRight(); break;
default: aP=maRect.Center(); break;
}
- if (aGeo.nShearAngle!=0) ShearPoint(aP,maRect.TopLeft(),aGeo.mfTanShearAngle);
- if (aGeo.nRotationAngle!=0) RotatePoint(aP,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
+ if (aGeo.nShearAngle) ShearPoint(aP,maRect.TopLeft(),aGeo.mfTanShearAngle);
+ if (aGeo.nRotationAngle) RotatePoint(aP,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
return aP;
}
@@ -1585,8 +1585,8 @@ void SdrTextObj::SetVerticalWriting(bool bVertical)
bool SdrTextObj::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPolyPolygon& /*rPolyPolygon*/) const
{
// get turn and shear
- double fRotate = basegfx::deg2rad(aGeo.nRotationAngle / 100.0);
- double fShearX = basegfx::deg2rad(aGeo.nShearAngle / 100.0);
+ double fRotate = basegfx::deg2rad(aGeo.nRotationAngle.get() / 100.0);
+ double fShearX = basegfx::deg2rad(aGeo.nShearAngle.get() / 100.0);
// get aRect, this is the unrotated snaprect
tools::Rectangle aRectangle(maRect);
@@ -1639,9 +1639,9 @@ void SdrTextObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b
}
// reset object shear and rotations
- aGeo.nRotationAngle = 0;
+ aGeo.nRotationAngle = 0_deg100;
aGeo.RecalcSinCos();
- aGeo.nShearAngle = 0;
+ aGeo.nShearAngle = 0_deg100;
aGeo.RecalcTan();
// if anchor is used, make position relative to it
@@ -1672,7 +1672,7 @@ void SdrTextObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b
if(!basegfx::fTools::equalZero(fShearX))
{
GeoStat aGeoStat;
- aGeoStat.nShearAngle = FRound(basegfx::rad2deg(atan(fShearX)) * 100.0);
+ aGeoStat.nShearAngle = Degree100(FRound(basegfx::rad2deg(atan(fShearX)) * 100.0));
aGeoStat.RecalcTan();
Shear(Point(), aGeoStat.nShearAngle, aGeoStat.mfTanShearAngle, false);
}
@@ -1685,7 +1685,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(FRound(-fRotate / F_PI18000));
+ aGeoStat.nRotationAngle = NormAngle36000(Degree100(FRound(-fRotate / F_PI18000)));
aGeoStat.RecalcSinCos();
Rotate(Point(), aGeoStat.nRotationAngle, aGeoStat.mfSinRotationAngle, aGeoStat.mfCosRotationAngle);
}
@@ -1792,8 +1792,8 @@ GDIMetaFile* SdrTextObj::GetTextScrollMetaFileAndRectangle(
// get outliner set up. To avoid getting a somehow rotated MetaFile,
// temporarily disable object rotation.
- sal_Int32 nAngle(aGeo.nRotationAngle);
- aGeo.nRotationAngle = 0;
+ Degree100 nAngle(aGeo.nRotationAngle);
+ aGeo.nRotationAngle = 0_deg100;
ImpSetupDrawOutlinerForPaint( bContourFrame, rOutliner, aTextRect, aAnchorRect, aPaintRect, aFitXCorrection );
aGeo.nRotationAngle = nAngle;
diff --git a/svx/source/svdraw/svdotxdr.cxx b/svx/source/svdraw/svdotxdr.cxx
index b7a7f54b76a3..e4727eb385ef 100644
--- a/svx/source/svdraw/svdotxdr.cxx
+++ b/svx/source/svdraw/svdotxdr.cxx
@@ -54,8 +54,8 @@ void SdrTextObj::AddToHdlList(SdrHdlList& rHdlList) const
case 6: aPnt=maRect.BottomCenter(); eKind=SdrHdlKind::Lower; break;
case 7: aPnt=maRect.BottomRight(); eKind=SdrHdlKind::LowerRight; break;
}
- if (aGeo.nShearAngle!=0) ShearPoint(aPnt,maRect.TopLeft(),aGeo.mfTanShearAngle);
- if (aGeo.nRotationAngle!=0) RotatePoint(aPnt,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
+ if (aGeo.nShearAngle) ShearPoint(aPnt,maRect.TopLeft(),aGeo.mfTanShearAngle);
+ if (aGeo.nRotationAngle) RotatePoint(aPnt,maRect.TopLeft(),aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
std::unique_ptr<SdrHdl> pH(new SdrHdl(aPnt,eKind));
pH->SetObj(const_cast<SdrTextObj*>(this));
pH->SetRotationAngle(aGeo.nRotationAngle);
@@ -79,9 +79,9 @@ tools::Rectangle SdrTextObj::ImpDragCalcRect(const SdrDragStat& rDrag) const
bool bBigOrtho=bEcke && bOrtho && rDrag.GetView()->IsBigOrtho();
Point aPos(rDrag.GetNow());
// Unrotate:
- if (aGeo.nRotationAngle!=0) RotatePoint(aPos,aTmpRect.TopLeft(),-aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
+ if (aGeo.nRotationAngle) RotatePoint(aPos,aTmpRect.TopLeft(),-aGeo.mfSinRotationAngle,aGeo.mfCosRotationAngle);
// Unshear:
- if (aGeo.nShearAngle!=0) ShearPoint(aPos,aTmpRect.TopLeft(),-aGeo.mfTanShearAngle);
+ if (aGeo.nShearAngle) ShearPoint(aPos,aTmpRect.TopLeft(),-aGeo.mfTanShearAngle);
bool bLft=(eHdl==SdrHdlKind::UpperLeft || eHdl==SdrHdlKind::Left || eHdl==SdrHdlKind::LowerLeft);
bool bRgt=(eHdl==SdrHdlKind::UpperRight || eHdl==SdrHdlKind::Right || eHdl==SdrHdlKind::LowerRight);
diff --git a/svx/source/svdraw/svdotxed.cxx b/svx/source/svdraw/svdotxed.cxx
index 96341a007d5b..f332bf524db3 100644
--- a/svx/source/svdraw/svdotxed.cxx
+++ b/svx/source/svdraw/svdotxed.cxx
@@ -134,7 +134,7 @@ void SdrTextObj::TakeTextEditArea(Size* pPaperMin, Size* pPaperMax, tools::Recta
Size aPaperMin,aPaperMax;
tools::Rectangle aViewInit;
TakeTextAnchorRect(aViewInit);
- if (aGeo.nRotationAngle!=0) {
+ if (aGeo.nRotationAngle) {
Point aCenter(aViewInit.Center());
aCenter-=aViewInit.TopLeft();
Point aCenter0(aCenter);
diff --git a/svx/source/svdraw/svdotxtr.cxx b/svx/source/svdraw/svdotxtr.cxx
index ce2ae53ffc8a..906ed2bfbfb8 100644
--- a/svx/source/svdraw/svdotxtr.cxx
+++ b/svx/source/svdraw/svdotxtr.cxx
@@ -41,7 +41,7 @@ using namespace com::sun::star;
void SdrTextObj::NbcSetSnapRect(const tools::Rectangle& rRect)
{
- if (aGeo.nRotationAngle!=0 || aGeo.nShearAngle!=0)
+ if (aGeo.nRotationAngle || aGeo.nShearAngle)
{
// Either the rotation or shear angle exists.
tools::Rectangle aSR0(GetSnapRect());
@@ -81,12 +81,12 @@ void SdrTextObj::NbcSetLogicRect(const tools::Rectangle& rRect)
SetRectsDirty();
}
-tools::Long SdrTextObj::GetRotateAngle() const
+Degree100 SdrTextObj::GetRotateAngle() const
{
return aGeo.nRotationAngle;
}
-tools::Long SdrTextObj::GetShearAngle(bool /*bVertical*/) const
+Degree100 SdrTextObj::GetShearAngle(bool /*bVertical*/) const
{
return aGeo.nShearAngle;
}
@@ -101,8 +101,8 @@ void SdrTextObj::NbcMove(const Size& rSiz)
void SdrTextObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact)
{
- bool bNotSheared=aGeo.nShearAngle==0;
- bool bRotate90=bNotSheared && aGeo.nRotationAngle % 9000 ==0;
+ bool bNotSheared=aGeo.nShearAngle==0_deg100;
+ bool bRotate90=bNotSheared && aGeo.nRotationAngle.get() % 9000 ==0;
bool bXMirr=(xFact.GetNumerator()<0) != (xFact.GetDenominator()<0);
bool bYMirr=(yFact.GetNumerator()<0) != (yFact.GetDenominator()<0);
if (bXMirr || bYMirr) {
@@ -119,12 +119,12 @@ void SdrTextObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fract
}
}
- if (aGeo.nRotationAngle==0 && aGeo.nShearAngle==0) {
+ if (aGeo.nRotationAngle==0_deg100 && aGeo.nShearAngle==0_deg100) {
ResizeRect(maRect,rRef,xFact,yFact);
if (bYMirr) {
maRect.Justify();
maRect.Move(maRect.Right()-maRect.Left(),maRect.Bottom()-maRect.Top());
- aGeo.nRotationAngle=18000;
+ aGeo.nRotationAngle=18000_deg100;
aGeo.RecalcSinCos();
}
}
@@ -153,19 +153,19 @@ void SdrTextObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fract
}
if (bRotate90) {
- bool bRota90=aGeo.nRotationAngle % 9000 ==0;
+ bool bRota90=aGeo.nRotationAngle.get() % 9000 ==0;
if (!bRota90) { // there's seems to be a rounding error occurring: correct it
- tools::Long a=NormAngle36000(aGeo.nRotationAngle);
- if (a<4500) a=0;
- else if (a<13500) a=9000;
- else if (a<22500) a=18000;
- else if (a<31500) a=27000;
- else a=0;
+ Degree100 a=NormAngle36000(aGeo.nRotationAngle);
+ if (a<4500_deg100) a=0_deg100;
+ else if (a<13500_deg100) a=9000_deg100;
+ else if (a<22500_deg100) a=18000_deg100;
+ else if (a<31500_deg100) a=27000_deg100;
+ else a=0_deg100;
aGeo.nRotationAngle=a;
aGeo.RecalcSinCos();
}
- if (bNotSheared!=(aGeo.nShearAngle==0)) { // correct a rounding error occurring with Shear
- aGeo.nShearAngle=0;
+ if (bNotSheared!=(aGeo.nShearAngle==0_deg100)) { // correct a rounding error occurring with Shear
+ aGeo.nShearAngle=0_deg100;
aGeo.RecalcTan();
}
}
@@ -183,7 +183,7 @@ void SdrTextObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fract
SetRectsDirty();
}
-void SdrTextObj::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrTextObj::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
SetGlueReallyAbsolute(true);
tools::Long dx=maRect.Right()-maRect.Left();
@@ -194,7 +194,7 @@ void SdrTextObj::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, dou
maRect.SetTop(aP.Y() );
maRect.SetRight(maRect.Left()+dx );
maRect.SetBottom(maRect.Top()+dy );
- if (aGeo.nRotationAngle==0) {
+ if (aGeo.nRotationAngle==0_deg100) {
aGeo.nRotationAngle=NormAngle36000(nAngle);
aGeo.mfSinRotationAngle=sn;
aGeo.mfCosRotationAngle=cs;
@@ -207,7 +207,7 @@ void SdrTextObj::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, dou
SetGlueReallyAbsolute(false);
}
-void SdrTextObj::NbcShear(const Point& rRef, tools::Long /*nAngle*/, double tn, bool bVShear)
+void SdrTextObj::NbcShear(const Point& rRef, Degree100 /*nAngle*/, double tn, bool bVShear)
{
SetGlueReallyAbsolute(true);
@@ -232,12 +232,12 @@ void SdrTextObj::NbcShear(const Point& rRef, tools::Long /*nAngle*/, double tn,
void SdrTextObj::NbcMirror(const Point& rRef1, const Point& rRef2)
{
SetGlueReallyAbsolute(true);
- bool bNotSheared=aGeo.nShearAngle==0;
+ bool bNotSheared=aGeo.nShearAngle==0_deg100;
bool bRotate90 = false;
if (bNotSheared &&
(rRef1.X()==rRef2.X() || rRef1.Y()==rRef2.Y() ||
std::abs(rRef1.X()-rRef2.X())==std::abs(rRef1.Y()-rRef2.Y()))) {
- bRotate90=aGeo.nRotationAngle % 9000 ==0;
+ bRotate90=aGeo.nRotationAngle.get() % 9000 ==0;
}
tools::Polygon aPol(Rect2Poly(maRect,aGeo));
sal_uInt16 i;
@@ -255,20 +255,20 @@ void SdrTextObj::NbcMirror(const Point& rRef1, const Point& rRef2)
Poly2Rect(aPol,maRect,aGeo);
if (bRotate90) {
- bool bRota90=aGeo.nRotationAngle % 9000 ==0;
+ bool bRota90=aGeo.nRotationAngle.get() % 9000 ==0;
if (bRotate90 && !bRota90) { // there's seems to be a rounding error occurring: correct it
- tools::Long a=NormAngle36000(aGeo.nRotationAngle);
- if (a<4500) a=0;
- else if (a<13500) a=9000;
- else if (a<22500) a=18000;
- else if (a<31500) a=27000;
- else a=0;
+ Degree100 a=NormAngle36000(aGeo.nRotationAngle);
+ if (a<4500_deg100) a=0_deg100;
+ else if (a<13500_deg100) a=9000_deg100;
+ else if (a<22500_deg100) a=18000_deg100;
+ else if (a<31500_deg100) a=27000_deg100;
+ else a=0_deg100;
aGeo.nRotationAngle=a;
aGeo.RecalcSinCos();
}
}
- if (bNotSheared!=(aGeo.nShearAngle==0)) { // correct a rounding error occurring with Shear
- aGeo.nShearAngle=0;
+ if (bNotSheared!=(aGeo.nShearAngle==0_deg100)) { // correct a rounding error occurring with Shear
+ aGeo.nShearAngle=0_deg100;
aGeo.RecalcTan();
}
diff --git a/svx/source/svdraw/svdouno.cxx b/svx/source/svdraw/svdouno.cxx
index b4203689f5a5..d6800e2e5b83 100644
--- a/svx/source/svdraw/svdouno.cxx
+++ b/svx/source/svdraw/svdouno.cxx
@@ -297,17 +297,17 @@ void SdrUnoObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fracti
{
SdrRectObj::NbcResize(rRef,xFact,yFact);
- if (aGeo.nShearAngle==0 && aGeo.nRotationAngle==0)
+ if (aGeo.nShearAngle==0_deg100 && aGeo.nRotationAngle==0_deg100)
return;
// small correctors
- if (aGeo.nRotationAngle>=9000 && aGeo.nRotationAngle<27000)
+ if (aGeo.nRotationAngle>=9000_deg100 && aGeo.nRotationAngle<27000_deg100)
{
maRect.Move(maRect.Left()-maRect.Right(),maRect.Top()-maRect.Bottom());
}
- aGeo.nRotationAngle = 0;
- aGeo.nShearAngle = 0;
+ aGeo.nRotationAngle = 0_deg100;
+ aGeo.nShearAngle = 0_deg100;
aGeo.mfSinRotationAngle = 0.0;
aGeo.mfCosRotationAngle = 1.0;
aGeo.mfTanShearAngle = 0.0;
diff --git a/svx/source/svdraw/svdovirt.cxx b/svx/source/svdraw/svdovirt.cxx
index 9a1957c628f4..ebd37b988cfa 100644
--- a/svx/source/svdraw/svdovirt.cxx
+++ b/svx/source/svdraw/svdovirt.cxx
@@ -305,7 +305,7 @@ void SdrVirtObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fract
SetRectsDirty();
}
-void SdrVirtObj::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrVirtObj::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
rRefObj.NbcRotate(rRef-aAnchor,nAngle,sn,cs);
SetRectsDirty();
@@ -317,7 +317,7 @@ void SdrVirtObj::NbcMirror(const Point& rRef1, const Point& rRef2)
SetRectsDirty();
}
-void SdrVirtObj::NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SdrVirtObj::NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
rRefObj.NbcShear(rRef-aAnchor,nAngle,tn,bVShear);
SetRectsDirty();
@@ -345,9 +345,9 @@ void SdrVirtObj::Resize(const Point& rRef, const Fraction& xFact, const Fraction
}
}
-void SdrVirtObj::Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SdrVirtObj::Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
- if (nAngle!=0) {
+ if (nAngle) {
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
rRefObj.Rotate(rRef-aAnchor,nAngle,sn,cs);
SetRectsDirty();
@@ -363,9 +363,9 @@ void SdrVirtObj::Mirror(const Point& rRef1, const Point& rRef2)
SendUserCall(SdrUserCallType::Resize,aBoundRect0);
}
-void SdrVirtObj::Shear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SdrVirtObj::Shear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
- if (nAngle!=0) {
+ if (nAngle) {
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
rRefObj.Shear(rRef-aAnchor,nAngle,tn,bVShear);
SetRectsDirty();
@@ -432,12 +432,12 @@ void SdrVirtObj::NbcSetLogicRect(const tools::Rectangle& rRect)
}
-tools::Long SdrVirtObj::GetRotateAngle() const
+Degree100 SdrVirtObj::GetRotateAngle() const
{
return rRefObj.GetRotateAngle();
}
-tools::Long SdrVirtObj::GetShearAngle(bool bVertical) const
+Degree100 SdrVirtObj::GetShearAngle(bool bVertical) const
{
return rRefObj.GetShearAngle(bVertical);
}
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index f9115175ce39..847d75250739 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -841,12 +841,9 @@ void ImpSdrPdfImport::InsertTextObject(const Point& rPos, const Size& rSize, con
aAttr.Put(XFillColorItem(OUString(), aFont.GetFillColor()));
pText->SetMergedItemSet(aAttr);
}
- sal_uInt32 nAngle = aFont.GetOrientation().get();
+ Degree100 nAngle = toDegree100(aFont.GetOrientation());
if (nAngle)
- {
- nAngle *= 10;
pText->SdrAttrObj::NbcRotate(aPosition, nAngle);
- }
InsertObj(pText, false);
}
diff --git a/svx/source/svdraw/svdpoev.cxx b/svx/source/svdraw/svdpoev.cxx
index b5329fbd17fc..f6fafcf088d6 100644
--- a/svx/source/svdraw/svdpoev.cxx
+++ b/svx/source/svdraw/svdpoev.cxx
@@ -637,13 +637,13 @@ static void ImpRotate(Point& rPt, Point* pC1, Point* pC2, const void* p1, const
if (pC2!=nullptr) RotatePoint(*pC2,*static_cast<const Point*>(p1),*static_cast<const double*>(p3),*static_cast<const double*>(p4));
}
-void SdrPolyEditView::RotateMarkedPoints(const Point& rRef, tools::Long nAngle)
+void SdrPolyEditView::RotateMarkedPoints(const Point& rRef, Degree100 nAngle)
{
ForceUndirtyMrkPnt();
OUString aStr(SvxResId(STR_EditResize));
BegUndo(aStr,GetDescriptionOfMarkedPoints(),SdrRepeatFunc::Rotate);
- double nSin = sin(nAngle * F_PI18000);
- double nCos = cos(nAngle * F_PI18000);
+ double nSin = sin(nAngle.get() * F_PI18000);
+ double nCos = cos(nAngle.get() * F_PI18000);
ImpTransformMarkedPoints(ImpRotate,&rRef,&nAngle,&nSin,&nCos);
EndUndo();
AdjustMarkHdl();
diff --git a/svx/source/svdraw/svdtrans.cxx b/svx/source/svdraw/svdtrans.cxx
index f3efd09c9f27..17106eec68bd 100644
--- a/svx/source/svdraw/svdtrans.cxx
+++ b/svx/source/svdraw/svdtrans.cxx
@@ -123,11 +123,11 @@ void MirrorPoint(Point& rPnt, const Point& rRef1, const Point& rRef2)
rPnt.setY(rRef1.Y()-dx1 );
} else { // arbitrary axis
// TODO: Optimize this! Raise perpendicular on the mirroring axis..?
- tools::Long nRefWink=GetAngle(rRef2-rRef1);
+ Degree100 nRefWink=GetAngle(rRef2-rRef1);
rPnt-=rRef1;
- tools::Long nPntWink=GetAngle(rPnt);
- tools::Long nAngle=2*(nRefWink-nPntWink);
- double a = nAngle * F_PI18000;
+ Degree100 nPntWink=GetAngle(rPnt);
+ Degree100 nAngle=2_deg100*(nRefWink-nPntWink);
+ double a = nAngle.get() * F_PI18000;
double nSin=sin(a);
double nCos=cos(a);
RotatePoint(rPnt,Point(),nSin,nCos);
@@ -383,42 +383,43 @@ void CrookStretchPoly(XPolyPolygon& rPoly, const Point& rCenter, const Point& rR
}
-tools::Long GetAngle(const Point& rPnt)
+Degree100 GetAngle(const Point& rPnt)
{
- tools::Long a=0;
+ Degree100 a;
if (rPnt.Y()==0) {
- if (rPnt.X()<0) a=-18000;
+ if (rPnt.X()<0) a=-18000_deg100;
} else if (rPnt.X()==0) {
- if (rPnt.Y()>0) a=-9000;
- else a=9000;
+ if (rPnt.Y()>0) a=-9000_deg100;
+ else a=9000_deg100;
} else {
- a = FRound(atan2(static_cast<double>(-rPnt.Y()), static_cast<double>(rPnt.X()))
- / F_PI18000);
+ a = Degree100(FRound(atan2(static_cast<double>(-rPnt.Y()), static_cast<double>(rPnt.X()))
+ / F_PI18000));
}
return a;
}
-tools::Long NormAngle18000(tools::Long a)
+Degree100 NormAngle18000(Degree100 a)
{
- while (a<-18000) a+=36000;
- while (a>=18000) a-=36000;
+ while (a<-18000_deg100) a+=36000_deg100;
+ while (a>=18000_deg100) a-=36000_deg100;
return a;
}
-tools::Long NormAngle36000(tools::Long a)
+Degree100 NormAngle36000(Degree100 deg100)
{
- while (a<0) a+=36000;
- while (a>=36000) a-=36000;
- return a;
+ // do an add because we want -90 to end up as 270
+ int a = 36000 + deg100.get();
+ a %= 36000;
+ a = std::abs(a);
+ return Degree100(a);
}
-sal_uInt16 GetAngleSector(tools::Long nAngle)
+sal_uInt16 GetAngleSector(Degree100 nAngle)
{
- while (nAngle<0) nAngle+=36000;
- while (nAngle>=36000) nAngle-=36000;
- if (nAngle< 9000) return 0;
- if (nAngle<18000) return 1;
- if (nAngle<27000) return 2;
+ nAngle = NormAngle36000(nAngle);
+ if (nAngle< 9000_deg100) return 0;
+ if (nAngle<18000_deg100) return 1;
+ if (nAngle<27000_deg100) return 2;
return 3;
}
@@ -450,11 +451,11 @@ tools::Long GetLen(const Point& rPnt)
void GeoStat::RecalcSinCos()
{
- if (nRotationAngle==0) {
+ if (nRotationAngle==0_deg100) {
mfSinRotationAngle=0.0;
mfCosRotationAngle=1.0;
} else {
- double a = nRotationAngle * F_PI18000;
+ double a = nRotationAngle.get() * F_PI18000;
mfSinRotationAngle=sin(a);
mfCosRotationAngle=cos(a);
}
@@ -462,10 +463,10 @@ void GeoStat::RecalcSinCos()
void GeoStat::RecalcTan()
{
- if (nShearAngle==0) {
+ if (nShearAngle==0_deg100) {
mfTanShearAngle=0.0;
} else {
- double a = nShearAngle * F_PI18000;
+ double a = nShearAngle.get() * F_PI18000;
mfTanShearAngle=tan(a);
}
}
@@ -479,8 +480,8 @@ tools::Polygon Rect2Poly(const tools::Rectangle& rRect, const GeoStat& rGeo)
aPol[2]=rRect.BottomRight();
aPol[3]=rRect.BottomLeft();
aPol[4]=rRect.TopLeft();
- if (rGeo.nShearAngle!=0) ShearPoly(aPol,rRect.TopLeft(),rGeo.mfTanShearAngle);
- if (rGeo.nRotationAngle!=0) RotatePoly(aPol,rRect.TopLeft(),rGeo.mfSinRotationAngle,rGeo.mfCosRotationAngle);
+ if (rGeo.nShearAngle) ShearPoly(aPol,rRect.TopLeft(),rGeo.mfTanShearAngle);
+ if (rGeo.nRotationAngle) RotatePoly(aPol,rRect.TopLeft(),rGeo.mfSinRotationAngle,rGeo.mfCosRotationAngle);
return aPol;
}
@@ -492,28 +493,28 @@ void Poly2Rect(const tools::Polygon& rPol, tools::Rectangle& rRect, GeoStat& rGe
rGeo.RecalcSinCos();
Point aPt1(rPol[1]-rPol[0]);
- if (rGeo.nRotationAngle!=0) RotatePoint(aPt1,Point(0,0),-rGeo.mfSinRotationAngle,rGeo.mfCosRotationAngle); // -Sin to reverse rotation
+ if (rGeo.nRotationAngle) RotatePoint(aPt1,Point(0,0),-rGeo.mfSinRotationAngle,rGeo.mfCosRotationAngle); // -Sin to reverse rotation
tools::Long nWdt=aPt1.X();
Point aPt0(rPol[0]);
Point aPt3(rPol[3]-rPol[0]);
- if (rGeo.nRotationAngle!=0) RotatePoint(aPt3,Point(0,0),-rGeo.mfSinRotationAngle,rGeo.mfCosRotationAngle); // -Sin to reverse rotation
+ if (rGeo.nRotationAngle) RotatePoint(aPt3,Point(0,0),-rGeo.mfSinRotationAngle,rGeo.mfCosRotationAngle); // -Sin to reverse rotation
tools::Long nHgt=aPt3.Y();
- tools::Long nShW=GetAngle(aPt3);
- nShW-=27000; // ShearWink is measured against a vertical line
+ Degree100 nShW=GetAngle(aPt3);
+ nShW-=27000_deg100; // ShearWink is measured against a vertical line
nShW=-nShW; // negating, because '+' is shearing clock-wise
bool bMirr=aPt3.Y()<0;
if (bMirr) { // "exchange of points" when mirroring
nHgt=-nHgt;
- nShW+=18000;
+ nShW+=18000_deg100;
aPt0=rPol[3];
}
nShW=NormAngle18000(nShW);
- if (nShW<-9000 || nShW>9000) {
- nShW=NormAngle18000(nShW+18000);
+ if (nShW<-9000_deg100 || nShW>9000_deg100) {
+ nShW=NormAngle18000(nShW+18000_deg100);
}
if (nShW<-SDRMAXSHEAR) nShW=-SDRMAXSHEAR; // limit ShearWinkel (shear angle) to +/- 89.00 deg
if (nShW>SDRMAXSHEAR) nShW=SDRMAXSHEAR;
diff --git a/svx/source/table/viewcontactoftableobj.cxx b/svx/source/table/viewcontactoftableobj.cxx
index 9ea6ba050a20..56f68c0f7781 100644
--- a/svx/source/table/viewcontactoftableobj.cxx
+++ b/svx/source/table/viewcontactoftableobj.cxx
@@ -358,7 +358,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) * F_PI18000 : 0.0);
+ const double fRotate(rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0);
const basegfx::B2DHomMatrix aObjectMatrix(basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix(
aObjectRange.getWidth(), aObjectRange.getHeight(), fShearX, fRotate,
aObjectRange.getMinX(), aObjectRange.getMinY()));
@@ -422,7 +422,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) * F_PI18000 : 0.0);
+ const double fRotate(rGeoStat.nRotationAngle ? (36000 - rGeoStat.nRotationAngle.get()) * F_PI18000 : 0.0);
const basegfx::B2DHomMatrix aObjectMatrix(basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix(
aObjectRange.getWidth(), aObjectRange.getHeight(), fShearX, fRotate,
aObjectRange.getMinX(), aObjectRange.getMinY()));
diff --git a/svx/source/tbxctrls/grafctrl.cxx b/svx/source/tbxctrls/grafctrl.cxx
index 126e6e02efbf..95c0ee341087 100644
--- a/svx/source/tbxctrls/grafctrl.cxx
+++ b/svx/source/tbxctrls/grafctrl.cxx
@@ -694,19 +694,19 @@ void SvxGrafAttrHelper::ExecuteGrafAttr( SfxRequest& rReq, SdrView& rView )
// #106181# rotate snap rect before setting it
const GeoStat& aGeo = pObj->GetGeoStat();
- if (aGeo.nRotationAngle!=0 || aGeo.nShearAngle!=0)
+ if (aGeo.nRotationAngle || aGeo.nShearAngle)
{
tools::Polygon aPol(aNewRect);
// also transform origin offset
- if (aGeo.nShearAngle!=0)
+ if (aGeo.nShearAngle)
{
ShearPoly(aPol,
aNewRect.TopLeft(),
aGeo.mfTanShearAngle);
ShearPoint(aOffset, Point(0,0), aGeo.mfTanShearAngle);
}
- if (aGeo.nRotationAngle!=0)
+ if (aGeo.nRotationAngle)
{
RotatePoly(aPol,
aNewRect.TopLeft(),
diff --git a/svx/source/uitest/sdrobject.cxx b/svx/source/uitest/sdrobject.cxx
index 0892556791d2..8229a454376f 100644
--- a/svx/source/uitest/sdrobject.cxx
+++ b/svx/source/uitest/sdrobject.cxx
@@ -144,7 +144,7 @@ void SdrUIObject::execute(const OUString& rAction, const StringMap& rParameters)
throw css::uno::RuntimeException("missing parameter ANGLE");
double nAngle = itrAngle->second.toDouble();
- pObj->Rotate(aPos, nAngle, 0, 0);
+ pObj->Rotate(aPos, Degree100(sal_Int32(nAngle)), 0, 0);
}
else if (rAction == "Mirror")
{
@@ -152,7 +152,7 @@ void SdrUIObject::execute(const OUString& rAction, const StringMap& rParameters)
}
else if (rAction == "SHEAR")
{
- pObj->Shear(Point(), 0.0 /*nAngle*/, 0, false);
+ pObj->Shear(Point(), 0_deg100 /*nAngle*/, 0, false);
}
}
diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx
index 1715a6dea257..aade016dcf2f 100644
--- a/svx/source/unodraw/unoshape.cxx
+++ b/svx/source/unodraw/unoshape.cxx
@@ -1927,8 +1927,8 @@ uno::Any SvxShape::GetAnyForItem( SfxItemSet const & aSet, const SfxItemProperty
const SfxPoolItem* pPoolItem=nullptr;
if(aSet.GetItemState(SDRATTR_CIRCSTARTANGLE,false,&pPoolItem)==SfxItemState::SET)
{
- sal_Int32 nAngle = static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
- aAny <<= nAngle;
+ Degree100 nAngle = static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
+ aAny <<= nAngle.get();
}
break;
}
@@ -1938,8 +1938,8 @@ uno::Any SvxShape::GetAnyForItem( SfxItemSet const & aSet, const SfxItemProperty
const SfxPoolItem* pPoolItem=nullptr;
if (aSet.GetItemState(SDRATTR_CIRCENDANGLE,false,&pPoolItem)==SfxItemState::SET)
{
- sal_Int32 nAngle = static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
- aAny <<= nAngle;
+ Degree100 nAngle = static_cast<const SdrAngleItem*>(pPoolItem)->GetValue();
+ aAny <<= nAngle.get();
}
break;
}
@@ -2353,15 +2353,16 @@ bool SvxShape::setPropertyValueImpl( const OUString&, const SfxItemPropertySimpl
}
case SDRATTR_ROTATEANGLE:
{
- sal_Int32 nAngle = 0;
- if( rValue >>= nAngle )
+ sal_Int32 nTmp = 0;
+ if( rValue >>= nTmp )
{
+ Degree100 nAngle(nTmp);
Point aRef1(GetSdrObject()->GetSnapRect().Center());
nAngle -= GetSdrObject()->GetRotateAngle();
- if (nAngle!=0)
+ if (nAngle)
{
- double nSin = sin(nAngle * F_PI18000);
- double nCos = cos(nAngle * F_PI18000);
+ double nSin = sin(nAngle.get() * F_PI18000);
+ double nCos = cos(nAngle.get() * F_PI18000);
GetSdrObject()->Rotate(aRef1,nAngle,nSin,nCos);
}
return true;
@@ -2372,14 +2373,15 @@ bool SvxShape::setPropertyValueImpl( const OUString&, const SfxItemPropertySimpl
case SDRATTR_SHEARANGLE:
{
- sal_Int32 nShear = 0;
- if( rValue >>= nShear )
+ sal_Int32 nTmp = 0;
+ if( rValue >>= nTmp )
{
+ Degree100 nShear(nTmp);
nShear -= GetSdrObject()->GetShearAngle();
- if(nShear != 0 )
+ if(nShear)
{
Point aRef1(GetSdrObject()->GetSnapRect().Center());
- double nTan = tan(nShear * F_PI18000);
+ double nTan = tan(nShear.get() * F_PI18000);
GetSdrObject()->Shear(aRef1,nShear,nTan,false);
return true;
}
diff --git a/sw/inc/dcontact.hxx b/sw/inc/dcontact.hxx
index 1082ebc70d94..07114eedf59d 100644
--- a/sw/inc/dcontact.hxx
+++ b/sw/inc/dcontact.hxx
@@ -264,14 +264,14 @@ class SwDrawVirtObj final : public SdrVirtObj
virtual void AddToHdlList(SdrHdlList& rHdlList) const override;
virtual void NbcMove(const Size& rSiz) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
- virtual void NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void NbcMirror(const Point& rRef1, const Point& rRef2) override;
- virtual void NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual void Move(const Size& rSiz) override;
virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative = true) override;
- virtual void Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
virtual void Mirror(const Point& rRef1, const Point& rRef2) override;
- virtual void Shear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear) override;
+ virtual void Shear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear) override;
virtual void RecalcSnapRect() override;
virtual const tools::Rectangle& GetSnapRect() const override;
virtual void SetSnapRect(const tools::Rectangle& rRect) override;
diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx
index 3ae40ccde5a2..3d7fdc18120d 100644
--- a/sw/source/core/draw/dcontact.cxx
+++ b/sw/source/core/draw/dcontact.cxx
@@ -2393,7 +2393,7 @@ void SwDrawVirtObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fr
SetRectsDirty();
}
-void SwDrawVirtObj::NbcRotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SwDrawVirtObj::NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
rRefObj.NbcRotate(rRef - GetOffset(), nAngle, sn, cs);
SetRectsDirty();
@@ -2405,7 +2405,7 @@ void SwDrawVirtObj::NbcMirror(const Point& rRef1, const Point& rRef2)
SetRectsDirty();
}
-void SwDrawVirtObj::NbcShear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SwDrawVirtObj::NbcShear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
rRefObj.NbcShear(rRef - GetOffset(), nAngle, tn, bVShear);
SetRectsDirty();
@@ -2427,7 +2427,7 @@ void SwDrawVirtObj::Resize(const Point& rRef, const Fraction& xFact, const Fract
}
}
-void SwDrawVirtObj::Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SwDrawVirtObj::Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs)
{
if(nAngle)
{
@@ -2446,7 +2446,7 @@ void SwDrawVirtObj::Mirror(const Point& rRef1, const Point& rRef2)
SendUserCall(SdrUserCallType::Resize, aBoundRect0);
}
-void SwDrawVirtObj::Shear(const Point& rRef, tools::Long nAngle, double tn, bool bVShear)
+void SwDrawVirtObj::Shear(const Point& rRef, Degree100 nAngle, double tn, bool bVShear)
{
if(nAngle)
{
diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx
index 31ddcf4dd727..a06f0e8415c3 100644
--- a/sw/source/core/draw/dflyobj.cxx
+++ b/sw/source/core/draw/dflyobj.cxx
@@ -378,20 +378,20 @@ bool SwVirtFlyDrawObj::HasLimitedRotation() const
return ContainsSwGrfNode();
}
-void SwVirtFlyDrawObj::Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs)
+void SwVirtFlyDrawObj::Rotate(const Point& rRef, Degree100 nAngle100, double sn, double cs)
{
if(ContainsSwGrfNode())
{
// RotGrfFlyFrame: Here is where the positively completed rotate interaction is executed.
// Rotation is in 1/100th degree and may be signed (!)
- nAngle /= 10;
+ Degree10 nAngle10 = toDegree10(nAngle100);
- while(nAngle < 0)
+ while(nAngle10 < 0_deg10)
{
- nAngle += 3600;
+ nAngle10 += 3600_deg10;
}
- SwWrtShell *pShForAngle = nAngle ? dynamic_cast<SwWrtShell*>(GetFlyFrame()->getRootFrame()->GetCurrShell()) : nullptr;
+ SwWrtShell *pShForAngle = nAngle10 ? dynamic_cast<SwWrtShell*>(GetFlyFrame()->getRootFrame()->GetCurrShell()) : nullptr;
if (pShForAngle)
{
// RotGrfFlyFrame: Add transformation to placeholder object
@@ -399,13 +399,13 @@ void SwVirtFlyDrawObj::Rotate(const Point& rRef, tools::Long nAngle, double sn,
const Degree10 nOldRot(SwVirtFlyDrawObj::getPossibleRotationFromFraphicFrame(aSize));
SwFlyFrameAttrMgr aMgr(false, pShForAngle, Frmmgr_Type::NONE, nullptr);
- aMgr.SetRotation(nOldRot, (nOldRot + Degree10(nAngle)) % 3600_deg10, aSize);
+ aMgr.SetRotation(nOldRot, (nOldRot + nAngle10) % 3600_deg10, aSize);
}
}
else
{
// call parent
- SdrVirtObj::Rotate(rRef, nAngle, sn, cs);
+ SdrVirtObj::Rotate(rRef, nAngle100, sn, cs);
}
}
@@ -1167,7 +1167,7 @@ Degree10 SwVirtFlyDrawObj::getPossibleRotationFromFraphicFrame(Size& rSize) cons
return nRetval;
}
-tools::Long SwVirtFlyDrawObj::GetRotateAngle() const
+Degree100 SwVirtFlyDrawObj::GetRotateAngle() const
{
if(ContainsSwGrfNode())
{
diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx
index 767e4e7f16e8..4250a11f8684 100644
--- a/sw/source/core/frmedt/feshview.cxx
+++ b/sw/source/core/frmedt/feshview.cxx
@@ -2975,8 +2975,8 @@ void SwFEShell::CreateDefaultShape( SdrObjKind eSdrObjectKind, const tools::Rect
if(dynamic_cast<const SdrCircObj*>( pObj) != nullptr)
{
SfxItemSet aAttr(pDrawModel->GetItemPool());
- aAttr.Put(makeSdrCircStartAngleItem(9000));
- aAttr.Put(makeSdrCircEndAngleItem(0));
+ aAttr.Put(makeSdrCircStartAngleItem(9000_deg100));
+ aAttr.Put(makeSdrCircEndAngleItem(0_deg100));
pObj->SetMergedItemSet(aAttr);
}
else if(dynamic_cast<const SdrPathObj*>( pObj) != nullptr)
diff --git a/sw/source/core/inc/dflyobj.hxx b/sw/source/core/inc/dflyobj.hxx
index e05fe4ec5526..55d87f674c81 100644
--- a/sw/source/core/inc/dflyobj.hxx
+++ b/sw/source/core/inc/dflyobj.hxx
@@ -97,7 +97,7 @@ public:
// we treat the size calculation completely on ourself here
virtual const tools::Rectangle& GetCurrentBoundRect() const override;
virtual const tools::Rectangle& GetLastBoundRect() const override;
- virtual tools::Long GetRotateAngle() const override;
+ virtual Degree100 GetRotateAngle() const override;
virtual void RecalcBoundRect() override;
virtual void RecalcSnapRect() override;
virtual const tools::Rectangle& GetSnapRect() const override;
@@ -116,7 +116,7 @@ public:
const Fraction& yFact, bool bUnsetRelative = true) override;
virtual void Crop(const basegfx::B2DPoint& rRef, double fxFact, double fyFact) override;
virtual void addCropHandles(SdrHdlList& rTarget) const override;
- virtual void Rotate(const Point& rRef, tools::Long nAngle, double sn, double cs) override;
+ virtual void Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs) override;
// FullDrag support
virtual SdrObjectUniquePtr getFullDragClone() const override;
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 1134900df65e..0b20b982812e 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -5030,7 +5030,7 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
if (Degree10 nRot = rSet.Get(RES_GRFATR_ROTATION).GetValue())
{
// RES_GRFATR_ROTATION is in 10ths of degree; convert to 100ths for macro
- sal_uInt32 mOOXMLRot = oox::drawingml::ExportRotateClockwisify(nRot.get()*10);
+ sal_uInt32 mOOXMLRot = oox::drawingml::ExportRotateClockwisify(toDegree100(nRot));
xFrameAttributes->add(XML_rot, OString::number(mOOXMLRot));
}
}
diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx
index 54ae41500552..edba8dfaf8f4 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -77,14 +77,14 @@ OUString lclGetAnchorIdFromGrabBag(const SdrObject* pObj)
return aResult;
}
-void lclMovePositionWithRotation(awt::Point& aPos, const Size& rSize, sal_Int64 nRotation)
+void lclMovePositionWithRotation(awt::Point& aPos, const Size& rSize, Degree100 nRotation100)
{
// code from ImplEESdrWriter::ImplFlipBoundingBox (filter/source/msfilter/eschesdo.cxx)
// TODO: refactor
- if (nRotation == 0)
+ if (nRotation100 == 0_deg100)
return;
-
+ sal_Int64 nRotation = nRotation100.get();
if (nRotation < 0)
nRotation = (36000 + nRotation) % 36000;
if (nRotation % 18000 == 0)
@@ -147,7 +147,7 @@ private:
bool m_bDMLAndVMLDrawingOpen;
/// List of TextBoxes in this document: they are exported as part of their shape, never alone.
/// Preserved rotation for TextFrames.
- sal_Int32 m_nDMLandVMLTextFrameRotation;
+ Degree100 m_nDMLandVMLTextFrameRotation;
public:
bool m_bFlyFrameGraphic = false;
@@ -166,7 +166,6 @@ public:
, m_pFlyWrapAttrList(nullptr)
, m_pBodyPrAttrList(nullptr)
, m_bDMLAndVMLDrawingOpen(false)
- , m_nDMLandVMLTextFrameRotation(0)
{
}
@@ -269,12 +268,12 @@ public:
DocxExport& getExport() const { return m_rExport; }
- void setDMLandVMLTextFrameRotation(sal_Int32 nDMLandVMLTextFrameRotation)
+ void setDMLandVMLTextFrameRotation(Degree100 nDMLandVMLTextFrameRotation)
{
m_nDMLandVMLTextFrameRotation = nDMLandVMLTextFrameRotation;
}
- sal_Int32& getDMLandVMLTextFrameRotation() { return m_nDMLandVMLTextFrameRotation; }
+ Degree100& getDMLandVMLTextFrameRotation() { return m_nDMLandVMLTextFrameRotation; }
};
DocxSdrExport::DocxSdrExport(DocxExport& rExport, const sax_fastparser::FSHelperPtr& pSerializer,
@@ -426,7 +425,7 @@ void DocxSdrExport::startDMLAnchorInline(const SwFrameFormat* pFrameFormat, cons
awt::Point aPos(pFrameFormat->GetHoriOrient().GetPos(),
pFrameFormat->GetVertOrient().GetPos());
const SdrObject* pObj = pFrameFormat->FindRealSdrObject();
- tools::Long nRotation = 0;
+ Degree100 nRotation(0);
if (pObj != nullptr)
{
// SdrObjects know their layer, consider that instead of the frame format.
@@ -1274,7 +1273,7 @@ void DocxSdrExport::writeDMLTextFrame(ww8::Frame const* pParentFrame, int nAncho
pFS->singleElementNS(XML_wps, XML_cNvSpPr, XML_txBox, "1");
uno::Any aRotation;
- m_pImpl->setDMLandVMLTextFrameRotation(0);
+ m_pImpl->setDMLandVMLTextFrameRotation(0_deg100);
if (xPropSetInfo.is() && xPropSetInfo->hasPropertyByName("FrameInteropGrabBag"))
{
uno::Sequence<beans::PropertyValue> propList;
@@ -1286,7 +1285,9 @@ void DocxSdrExport::writeDMLTextFrame(ww8::Frame const* pParentFrame, int nAncho
if (pProp != propList.end())
aRotation = pProp->Value;
}
- aRotation >>= m_pImpl->getDMLandVMLTextFrameRotation();
+ sal_Int32 nTmp;
+ if (aRotation >>= nTmp)
+ m_pImpl->getDMLandVMLTextFrameRotation() = Degree100(nTmp);
OString sRotation(OString::number(
oox::drawingml::ExportRotateClockwisify(m_pImpl->getDMLandVMLTextFrameRotation())));
// Shape properties
@@ -1526,7 +1527,7 @@ void DocxSdrExport::writeVMLTextFrame(ww8::Frame const* pParentFrame, bool bText
m_pImpl->getTextFrameStyle() = "position:absolute";
if (!bTextBoxOnly)
{
- OString sRotation(OString::number(m_pImpl->getDMLandVMLTextFrameRotation() / -100));
+ OString sRotation(OString::number(m_pImpl->getDMLandVMLTextFrameRotation().get() / -100));
m_pImpl->getExport()
.SdrExporter()
.getTextFrameStyle()
diff --git a/sw/source/filter/ww8/rtfsdrexport.cxx b/sw/source/filter/ww8/rtfsdrexport.cxx
index 87a559ed60f9..3ad34049f247 100644
--- a/sw/source/filter/ww8/rtfsdrexport.cxx
+++ b/sw/source/filter/ww8/rtfsdrexport.cxx
@@ -669,7 +669,7 @@ sal_Int32 RtfSdrExport::StartShape()
// RTF angle: 0-360 * 2^16 clockwise
// LO angle: 0-360 * 100 counter-clockwise
sal_Int32 nRotation
- = -1 * pTextObj->GetGeoStat().nRotationAngle * RTF_MULTIPLIER / 100;
+ = -1 * pTextObj->GetGeoStat().nRotationAngle.get() * RTF_MULTIPLIER / 100;
lcl_AppendSP(m_rAttrOutput.RunText(), "rotation",
msfilter::rtfutil::OutString(OUString::number(nRotation),
m_rExport.GetCurrentEncoding()));
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx
index 73960cbd8f73..8b514baa59a4 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -676,9 +676,9 @@ void PlcDrawObj::WritePlc( WW8Export& rWrt ) const
aRect = pObj->GetLogicRect();
// rotating to vertical means swapping height and width as seen in SvxMSDffManager::ImportShape
- const tools::Long nAngle = NormAngle36000( pObj->GetRotateAngle() );
+ const Degree100 nAngle = NormAngle36000( pObj->GetRotateAngle() );
const bool bAllowSwap = pObj->GetObjIdentifier() != OBJ_LINE && pObj->GetObjIdentifier() != OBJ_GRUP;
- if ( bAllowSwap && (( nAngle > 4500 && nAngle <= 13500 ) || ( nAngle > 22500 && nAngle <= 31500 )) )
+ if ( bAllowSwap && (( nAngle > 4500_deg100 && nAngle <= 13500_deg100 ) || ( nAngle > 22500_deg100 && nAngle <= 31500_deg100 )) )
{
const tools::Long nWidth = aRect.getWidth();
const tools::Long nHeight = aRect.getHeight();
diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx
index d76614290239..c2efe73c3830 100644
--- a/sw/source/filter/ww8/ww8graf.cxx
+++ b/sw/source/filter/ww8/ww8graf.cxx
@@ -415,8 +415,8 @@ SdrObject* SwWW8ImplReader::ReadArc(WW8_DPHEAD const * pHd, SfxAllItemSet &rSet)
*m_pDrawModel,
SdrCircKind::Section,
tools::Rectangle(aP0, aP1),
- nW * 9000,
- ( ( nW + 1 ) & 3 ) * 9000);
+ Degree100(nW * 9000),
+ Degree100(( ( nW + 1 ) & 3 ) * 9000));
SetStdAttr( rSet, aArc.aLnt, aArc.aShd );
SetFill( rSet, aArc.aFill );
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index c8e52560564c..91b8f84557ae 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -719,7 +719,7 @@ SdrObject* SwMSDffManager::ProcessObj(SvStream& rSt,
ScaleEmu( nTextTop );
ScaleEmu( nTextBottom );
- sal_Int32 nTextRotationAngle=0;
+ Degree100 nTextRotationAngle;
bool bVerticalText = false;
if ( IsProperty( DFF_Prop_txflTextFlow ) )
{
@@ -728,18 +728,18 @@ SdrObject* SwMSDffManager::ProcessObj(SvStream& rSt,
switch( eTextFlow )
{
case mso_txflBtoT:
- nTextRotationAngle = 9000;
+ nTextRotationAngle = 9000_deg100;
break;
case mso_txflVertN:
case mso_txflTtoBN:
- nTextRotationAngle = 27000;
+ nTextRotationAngle = 27000_deg100;
break;
case mso_txflTtoBA:
bVerticalText = true;
break;
case mso_txflHorzA:
bVerticalText = true;
- nTextRotationAngle = 9000;
+ nTextRotationAngle = 9000_deg100;
break;
case mso_txflHorzN:
default :
@@ -749,7 +749,7 @@ SdrObject* SwMSDffManager::ProcessObj(SvStream& rSt,
if (nTextRotationAngle)
{
- if (nTextRotationAngle == 9000)
+ if (nTextRotationAngle == 9000_deg100)
{
tools::Long nWidth = rTextRect.GetWidth();
rTextRect.SetRight( rTextRect.Left() + rTextRect.GetHeight() );
@@ -765,7 +765,7 @@ SdrObject* SwMSDffManager::ProcessObj(SvStream& rSt,
nTextTop = nOldTextLeft;
nTextBottom = nOldTextRight;
}
- else if (nTextRotationAngle == 27000)
+ else if (nTextRotationAngle == 27000_deg100)
{
tools::Long nWidth = rTextRect.GetWidth();
rTextRect.SetRight( rTextRect.Left() + rTextRect.GetHeight() );
@@ -942,13 +942,13 @@ SdrObject* SwMSDffManager::ProcessObj(SvStream& rSt,
double fExtraTextRotation = 0.0;
if ( mnFix16Angle && !( GetPropertyValue( DFF_Prop_FitTextToShape, 0 ) & 4 ) )
{ // text is already rotated, we have to take back the object rotation if DFF_Prop_RotateText is false
- fExtraTextRotation = -mnFix16Angle;
+ fExtraTextRotation = -mnFix16Angle.get();
}
if ( rObjData.nSpFlags & ShapeFlag::FlipV ) // sj: in ppt the text is flipped, whereas in word the text
{ // remains unchanged, so we have to take back the flipping here
fExtraTextRotation += 18000.0; // because our core will flip text if the shape is flipped.
}
- fExtraTextRotation += nTextRotationAngle;
+ fExtraTextRotation += nTextRotationAngle.get();
if ( !::basegfx::fTools::equalZero( fExtraTextRotation ) )
{
fExtraTextRotation /= 100.0;
@@ -964,9 +964,7 @@ SdrObject* SwMSDffManager::ProcessObj(SvStream& rSt,
else if ( mnFix16Angle )
{
// rotate text with shape ?
- double a = mnFix16Angle * F_PI18000;
- pObj->NbcRotate( rObjData.aBoundRect.Center(), mnFix16Angle,
- sin( a ), cos( a ) );
+ pObj->NbcRotate( rObjData.aBoundRect.Center(), mnFix16Angle );
}
}
}
diff --git a/sw/source/ui/frmdlg/frmpage.cxx b/sw/source/ui/frmdlg/frmpage.cxx
index b8eedd8100ae..2581e70eb272 100644
--- a/sw/source/ui/frmdlg/frmpage.cxx
+++ b/sw/source/ui/frmdlg/frmpage.cxx
@@ -2358,7 +2358,7 @@ void SwGrfExtPage::Reset(const SfxItemSet *rSet)
}
else
{
- m_xCtlAngle->SetRotation(0);
+ m_xCtlAngle->SetRotation(0_deg100);
}
m_xCtlAngle->SaveValue();
diff --git a/sw/source/uibase/ribbar/concustomshape.cxx b/sw/source/uibase/ribbar/concustomshape.cxx
index be3820dab9b1..97914c8003b5 100644
--- a/sw/source/uibase/ribbar/concustomshape.cxx
+++ b/sw/source/uibase/ribbar/concustomshape.cxx
@@ -137,7 +137,7 @@ void ConstCustomShape::SetAttributes( SdrObject* pObj )
EE_ITEMS_START, EE_ITEMS_END>{});
aDest.Set( rSource );
pObj->SetMergedItemSet( aDest );
- sal_Int32 nAngle = pSourceObj->GetRotateAngle();
+ Degree100 nAngle = pSourceObj->GetRotateAngle();
if ( nAngle )
pObj->NbcRotate( pObj->GetSnapRect().Center(), nAngle );
bAttributesAppliedFromGallery = true;
diff --git a/sw/source/uibase/shells/beziersh.cxx b/sw/source/uibase/shells/beziersh.cxx
index 4764decede3b..73bbc88acbc8 100644
--- a/sw/source/uibase/shells/beziersh.cxx
+++ b/sw/source/uibase/shells/beziersh.cxx
@@ -54,7 +54,7 @@ SwBezierShell::SwBezierShell(SwView &_rView):
SwWrtShell *pSh = &GetShell();
SdrView* pSdrView = pSh->GetDrawView();
- pSdrView->SetEliminatePolyPointLimitAngle(1500);
+ pSdrView->SetEliminatePolyPointLimitAngle(1500_deg100);
SfxShell::SetContextName(vcl::EnumContext::GetContextName(vcl::EnumContext::Context::Draw));
}
diff --git a/sw/source/uibase/shells/frmsh.cxx b/sw/source/uibase/shells/frmsh.cxx
index 10476553c9f7..6e990cd632b6 100644
--- a/sw/source/uibase/shells/frmsh.cxx
+++ b/sw/source/uibase/shells/frmsh.cxx
@@ -400,7 +400,7 @@ void SwFrameShell::Execute(SfxRequest &rReq)
if (pArgs && SfxItemState::SET == pArgs->GetItemState(SID_ATTR_TRANSFORM_DELTA_ANGLE, false, &pItem))
{
- const Degree10 nDeltaRot(static_cast<const SdrAngleItem*>(pItem)->GetValue() / 10);
+ const Degree10 nDeltaRot = toDegree10(static_cast<const SdrAngleItem*>(pItem)->GetValue());
aMgr.SetRotation(nOldRot, nOldRot + nDeltaRot, rRotation.GetUnrotatedSize());
}
@@ -410,7 +410,7 @@ void SwFrameShell::Execute(SfxRequest &rReq)
// 100th degrees in SID_ATTR_TRANSFORM_ANGLE to 10th degrees in RES_GRFATR_ROTATION
if (pArgs && SfxItemState::SET == pArgs->GetItemState(SID_ATTR_TRANSFORM_ANGLE, false, &pItem))
{
- const Degree10 nNewRot(static_cast<const SdrAngleItem*>(pItem)->GetValue() / 10);
+ const Degree10 nNewRot = toDegree10(static_cast<const SdrAngleItem*>(pItem)->GetValue());
// RotGrfFlyFrame: Rotation change here, SwFlyFrameAttrMgr aMgr is available
aMgr.SetRotation(nOldRot, nNewRot, rRotation.GetUnrotatedSize());
diff --git a/sw/source/uibase/shells/grfsh.cxx b/sw/source/uibase/shells/grfsh.cxx
index c3eedb17a7d6..d4197cba5c85 100644
--- a/sw/source/uibase/shells/grfsh.cxx
+++ b/sw/source/uibase/shells/grfsh.cxx
@@ -511,7 +511,7 @@ void SwGrfShell::Execute(SfxRequest &rReq)
// RotGrfFlyFrame: Get and process evtl. changed RotationAngle
if ( SfxItemState::SET == pSet->GetItemState(SID_ATTR_TRANSFORM_ANGLE, false, &pItem ))
{
- const Degree10 aNewRotation((static_cast<const SdrAngleItem*>(pItem)->GetValue() / 10) % 3600);
+ const Degree10 aNewRotation = toDegree10(static_cast<const SdrAngleItem*>(pItem)->GetValue() % 36000_deg100);
// RotGrfFlyFrame: Possible rotation change here, SwFlyFrameAttrMgr aMgr is available
aMgr.SetRotation(nCurrentRotation, aNewRotation, aUnrotatedSize);
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
index 59c972ec8429..02c348a05693 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -792,7 +792,7 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
if (m_pImpl->isYSizeValis())
aSize.Height = m_pImpl->getYSize();
- sal_Int32 nRotation = 0;
+ Degree100 nRotation;
if (bKeepRotation)
{
// Use internal API, getPropertyValue(RotateAngle)
@@ -804,8 +804,8 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
m_xShape->setSize(aSize);
if (bKeepRotation)
{
- xShapeProps->setPropertyValue("RotateAngle", uno::makeAny(nRotation));
- if (nRotation == 0)
+ xShapeProps->setPropertyValue("RotateAngle", uno::makeAny(nRotation.get()));
+ if (nRotation == 0_deg100)
{
// Include effect extent in the margin to bring Writer layout closer
// to Word. But do this for non-rotated shapes only, where effect
diff --git a/writerfilter/source/rtftok/rtfsdrimport.cxx b/writerfilter/source/rtftok/rtfsdrimport.cxx
index be403b01f4e9..bf94d9cf8097 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.cxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.cxx
@@ -250,8 +250,7 @@ void RTFSdrImport::applyProperty(uno::Reference<drawing::XShape> const& xShape,
uno::Reference<lang::XServiceInfo> xServiceInfo(xShape, uno::UNO_QUERY);
if (!xServiceInfo->supportsService("com.sun.star.text.TextFrame"))
xPropertySet->setPropertyValue(
- "RotateAngle",
- uno::makeAny(sal_Int32(NormAngle36000(static_cast<tools::Long>(nRotation) * -1))));
+ "RotateAngle", uno::makeAny(NormAngle36000(Degree100(nRotation * -1)).get()));
}
if (nHoriOrient != 0 && xPropertySet.is())