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>
diff --git a/chart2/source/controller/dialogs/res_DataLabel.cxx b/chart2/source/controller/dialogs/res_DataLabel.cxx
index c8dee6c..7934e90 100644
--- a/chart2/source/controller/dialogs/res_DataLabel.cxx
+++ b/chart2/source/controller/dialogs/res_DataLabel.cxx
@@ -305,7 +305,7 @@
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 @@
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 afe9867..de02815 100644
--- a/chart2/source/controller/dialogs/tp_AxisLabel.cxx
+++ b/chart2/source/controller/dialogs/tp_AxisLabel.cxx
@@ -93,7 +93,7 @@
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 @@
// 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 370eda7..0923c91 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 @@
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 865736b..59422b3 100644
--- a/chart2/source/controller/dialogs/tp_PolarOptions.cxx
+++ b/chart2/source/controller/dialogs/tp_PolarOptions.cxx
@@ -74,7 +74,7 @@
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 d2e1e02..ede27ed 100644
--- a/chart2/source/controller/dialogs/tp_TitleRotation.cxx
+++ b/chart2/source/controller/dialogs/tp_TitleRotation.cxx
@@ -94,7 +94,7 @@
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 @@
{
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 7c31c96..297b3de 100644
--- a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
@@ -392,8 +392,8 @@
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 @@
// 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 97f66d4..7693c6c 100644
--- a/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx
@@ -550,7 +550,7 @@
{
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 @@
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 3c8fbcc..fc25407 100644
--- a/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx
@@ -277,7 +277,7 @@
{
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 @@
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 dad6ba3..adc0b84 100644
--- a/chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/TextLabelItemConverter.cxx
@@ -489,7 +489,7 @@
{
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 @@
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 6ca3878..9109bc3 100644
--- a/chart2/source/controller/itemsetwrapper/TitleItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/TitleItemConverter.cxx
@@ -169,7 +169,7 @@
// 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 @@
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 53ed1cf..ef0bdfd 100644
--- a/chart2/source/controller/main/DrawCommandDispatch.cxx
+++ b/chart2/source/controller/main/DrawCommandDispatch.cxx
@@ -142,7 +142,7 @@
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 4df7e26..6af1c34 100644
--- a/chart2/source/view/main/ChartItemPool.cxx
+++ b/chart2/source/view/main/ChartItemPool.cxx
@@ -63,7 +63,7 @@
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 @@
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 142bd46..de757f6 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 @@
}
else
{
m_xCtlAngle->SetRotation(0);
m_xCtlAngle->SetRotation(0_deg100);
}
m_xCtlAngle->SaveValue();
m_xMtrPosX->save_value();
@@ -461,7 +462,7 @@
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 @@
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 505e43d..bde7126 100644
--- a/filter/source/msfilter/escherex.cxx
+++ b/filter/source/msfilter/escherex.cxx
@@ -2102,12 +2102,12 @@
}
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 @@
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 4425096..bddc9c2 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -383,12 +383,12 @@
}
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 @@
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 @@
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 @@
*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 @@
//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 @@
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 @@
}
//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 @@
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 @@
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 @@
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 @@
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 @@
{ // 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 @@
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 @@
// 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 @@
// 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 @@
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 @@
ScaleEmu( nTextTop );
ScaleEmu( nTextBottom );
sal_Int32 nTextRotationAngle=0;
Degree100 nTextRotationAngle(0);
bool bVerticalText = false;
if ( IsProperty( DFF_Prop_txflTextFlow ) )
{
@@ -5228,18 +5228,18 @@
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 @@
if (nTextRotationAngle)
{
switch (nTextRotationAngle)
switch (nTextRotationAngle.get())
{
case 9000:
{
@@ -5436,7 +5436,7 @@
// 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 545afd6..7da1450 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -814,14 +814,14 @@
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 @@
}
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 @@
}
}
// 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 @@
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 3561d4a..d3c6657 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 @@
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 @@
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 3db9582..8210795 100644
--- a/include/o3tl/strong_int.hxx
+++ b/include/o3tl/strong_int.hxx
@@ -113,10 +113,16 @@
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 022a0df..2cd17e6 100644
--- a/include/oox/export/drawingml.hxx
+++ b/include/oox/export/drawingml.hxx
@@ -111,9 +111,9 @@
// 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 3d6cdc5..4bdabbf 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 @@
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 8976b2b..67b0d06 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 @@
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 @@
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 cb37a21..c778735 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 @@
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 @@
/** 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 3c5435b..75d7d7f 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 @@
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 @@
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 @@
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 @@
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 b9f4331..e786cbb 100644
--- a/include/svx/obj3d.hxx
+++ b/include/svx/obj3d.hxx
@@ -116,7 +116,7 @@
// 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 3ff3a55..13d4157 100644
--- a/include/svx/scene3d.hxx
+++ b/include/svx/scene3d.hxx
@@ -137,7 +137,7 @@
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 81897d4..6177089 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 @@
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 b215108..560f4cf 100644
--- a/include/svx/svdedtv.hxx
+++ b/include/svx/svdedtv.hxx
@@ -212,13 +212,13 @@
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 @@
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 7469444..5a7d3a2 100644
--- a/include/svx/svdglev.hxx
+++ b/include/svx/svdglev.hxx
@@ -77,7 +77,7 @@
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 a7eb9b9d..7065b34 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 @@
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 @@
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 e5cc137..707c1dd 100644
--- a/include/svx/svdhdl.hxx
+++ b/include/svx/svdhdl.hxx
@@ -143,7 +143,7 @@
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 @@
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 6f4581d16..1d849ac 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 @@
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 2014e09..070cb21 100644
--- a/include/svx/svdoashp.hxx
+++ b/include/svx/svdoashp.hxx
@@ -168,16 +168,16 @@
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 335eb3d..5beb682 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 @@
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 @@
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 @@
// 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 15c27dd..32ecc1f 100644
--- a/include/svx/svdocirc.hxx
+++ b/include/svx/svdocirc.hxx
@@ -32,8 +32,8 @@
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 @@
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 @@
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 @@
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 @@
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 5d0116c..0bda2fe 100644
--- a/include/svx/svdoedge.hxx
+++ b/include/svx/svdoedge.hxx
@@ -242,9 +242,9 @@
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 355b192..2083c88 100644
--- a/include/svx/svdogrp.hxx
+++ b/include/svx/svdogrp.hxx
@@ -80,15 +80,15 @@
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 @@
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 d72798e..ccc7d2a 100644
--- a/include/svx/svdomeas.hxx
+++ b/include/svx/svdomeas.hxx
@@ -113,10 +113,10 @@
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 5f56fd3..f1a5b1b 100644
--- a/include/svx/svdopath.hxx
+++ b/include/svx/svdopath.hxx
@@ -108,9 +108,9 @@
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 9480acd..930fb01 100644
--- a/include/svx/svdorect.hxx
+++ b/include/svx/svdorect.hxx
@@ -112,9 +112,9 @@
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 9d74bff..fc7a817 100644
--- a/include/svx/svdotext.hxx
+++ b/include/svx/svdotext.hxx
@@ -454,8 +454,8 @@
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 @@
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 b47bc03..12cd040 100644
--- a/include/svx/svdovirt.hxx
+++ b/include/svx/svdovirt.hxx
@@ -100,16 +100,16 @@
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 @@
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 538e101..0ad7add 100644
--- a/include/svx/svdpoev.hxx
+++ b/include/svx/svdpoev.hxx
@@ -66,7 +66,7 @@
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 1930583..b7b06e4 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 @@
Fraction aSnapWdtY;
sal_uInt16 nMagnSizPix;
tools::Long nSnapAngle;
tools::Long nEliminatePolyPointLimitAngle;
Degree100 nSnapAngle;
Degree100 nEliminatePolyPointLimitAngle;
SdrCrookMode eCrookMode;
@@ -220,8 +221,8 @@
// 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 @@
// 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 a5bd1e64..ccc6308 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 @@
* @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 @@
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 f14ba75..9d77c18 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 6591ff2..2e89ebe 100644
--- a/include/svx/sxmtfitm.hxx
+++ b/include/svx/sxmtfitm.hxx
@@ -42,7 +42,7 @@
//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 27bdffa..47dc7a8 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 @@
/** 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 ce30b43..98ef5de 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -1048,7 +1048,7 @@
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 @@
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 0571aee..da3edf2 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1717,8 +1717,8 @@
{
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 @@
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 @@
[](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 @@
// 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 @@
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 @@
// 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 5a42105..834dc9f5 100644
--- a/oox/source/shape/WpsContext.cxx
+++ b/oox/source/shape/WpsContext.cxx
@@ -84,8 +84,8 @@
// 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 62da5de..60ef7f9 100644
--- a/oox/source/vml/vmlformatting.cxx
+++ b/oox/source/vml/vmlformatting.cxx
@@ -118,16 +118,16 @@
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 @@
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 5b08166..32c1ec9 100644
--- a/oox/source/vml/vmlshape.cxx
+++ b/oox/source/vml/vmlshape.cxx
@@ -405,7 +405,7 @@
}
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 @@
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 @@
{
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 @@
}
// 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 @@
// -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 @@
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 d0618c2..a1ea6514 100644
--- a/reportdesign/source/ui/report/ReportSection.cxx
+++ b/reportdesign/source/ui/report/ReportSection.cxx
@@ -604,7 +604,7 @@
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 4c9206a..63025d9 100644
--- a/sc/inc/attrib.hxx
+++ b/sc/inc/attrib.hxx
@@ -288,7 +288,7 @@
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 63e854e..bfc162b 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 @@
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 14dc129..344a26e 100644
--- a/sc/qa/unit/scshapetest.cxx
+++ b/sc/qa/unit/scshapetest.cxx
@@ -234,16 +234,17 @@
// 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 @@
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 774f3eb..cbf2267 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5715,9 +5715,9 @@
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 a44f0024..da8490b 100644
--- a/sc/source/core/data/attarray.cxx
+++ b/sc/source/core/data/attarray.cxx
@@ -1355,8 +1355,8 @@
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 1a155a8..cb39fec 100644
--- a/sc/source/core/data/attrib.cxx
+++ b/sc/source/core/data/attrib.cxx
@@ -729,7 +729,7 @@
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 d3d9910..22d5a16 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -211,7 +211,7 @@
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 @@
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 @@
{
// ignore orientation/rotation if "repeat" is active
eOrient = SvxCellOrientation::Standard;
nRotate = 0;
nRotate = 0_deg100;
bAsianVertical = false;
}
@@ -301,7 +301,7 @@
{
//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 @@
//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 011b596..0a96c3b 100644
--- a/sc/source/core/data/docpool.cxx
+++ b/sc/source/core/data/docpool.cxx
@@ -249,7 +249,7 @@
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 cb3212e..5bbdd06 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -5184,8 +5184,8 @@
{
// 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 0a3433b..2f77588 100644
--- a/sc/source/core/data/patattr.cxx
+++ b/sc/source/core/data/patattr.cxx
@@ -165,10 +165,10 @@
}
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 @@
// 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 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 d8fb7fa..1ddf299 100644
--- a/sc/source/core/data/table2.cxx
+++ b/sc/source/core/data/table2.cxx
@@ -2172,9 +2172,9 @@
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 f8bb633..c7d70f4 100644
--- a/sc/source/core/tool/autoform.cxx
+++ b/sc/source/core/tool/autoform.cxx
@@ -189,7 +189,7 @@
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 48bc5df..7a56260 100644
--- a/sc/source/filter/excel/xestyle.cxx
+++ b/sc/source/filter/excel/xestyle.cxx
@@ -1489,7 +1489,7 @@
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 16b64c8..81cee0d 100644
--- a/sc/source/filter/excel/xichart.cxx
+++ b/sc/source/filter/excel/xichart.cxx
@@ -1202,18 +1202,18 @@
// 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 a4ceae5..0e46318 100644
--- a/sc/source/filter/excel/xiescher.cxx
+++ b/sc/source/filter/excel/xiescher.cxx
@@ -1289,32 +1289,32 @@
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 7a263bc..5a0ca785 100644
--- a/sc/source/filter/excel/xistyle.cxx
+++ b/sc/source/filter/excel/xistyle.cxx
@@ -834,7 +834,7 @@
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 0355a56..3503ba9 100644
--- a/sc/source/filter/excel/xlchart.cxx
+++ b/sc/source/filter/excel/xlchart.cxx
@@ -897,7 +897,7 @@
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 @@
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 ca0aeb2..1c56279 100644
--- a/sc/source/filter/excel/xltools.cxx
+++ b/sc/source/filter/excel/xltools.cxx
@@ -150,17 +150,17 @@
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 af00edd..3ec4796 100644
--- a/sc/source/filter/html/htmlexp2.cxx
+++ b/sc/source/filter/html/htmlexp2.cxx
@@ -133,7 +133,7 @@
{
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 f52cad5..bb786d0 100644
--- a/sc/source/filter/inc/stylesbuffer.hxx
+++ b/sc/source/filter/inc/stylesbuffer.hxx
@@ -290,7 +290,7 @@
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 51f86fe8..9b77c88 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 @@
/** 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 21fef59..e688a52 100644
--- a/sc/source/filter/oox/stylesbuffer.cxx
+++ b/sc/source/filter/oox/stylesbuffer.cxx
@@ -1196,9 +1196,9 @@
// 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 @@
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 da087a9..fa374c4 100644
--- a/sc/source/filter/xcl97/xcl97rec.cxx
+++ b/sc/source/filter/xcl97/xcl97rec.cxx
@@ -866,10 +866,10 @@
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 @@
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 @@
// 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 5bc1ff2..768e42d 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -3511,7 +3511,7 @@
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 0f6fd86..734e9e0 100644
--- a/sc/source/ui/Accessibility/AccessibleCell.cxx
+++ b/sc/source/ui/Accessibility/AccessibleCell.cxx
@@ -190,7 +190,7 @@
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 3166fbd..31f8586 100644
--- a/sc/source/ui/Accessibility/AccessibleText.cxx
+++ b/sc/source/ui/Accessibility/AccessibleText.cxx
@@ -536,7 +536,7 @@
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 368a1fd..5d85181 100644
--- a/sc/source/ui/drawfunc/fuconarc.cxx
+++ b/sc/source/ui/drawfunc/fuconarc.cxx
@@ -136,8 +136,8 @@
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 75edd8b..e73c6d9 100644
--- a/sc/source/ui/drawfunc/fuconcustomshape.cxx
+++ b/sc/source/ui/drawfunc/fuconcustomshape.cxx
@@ -180,7 +180,7 @@
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 528b4ef..f278d25 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 @@
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 7c51f5d..24396c7 100644
--- a/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx
+++ b/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx
@@ -155,7 +155,7 @@
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 @@
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 6dbf2c5..d56c6d5 100644
--- a/sc/source/ui/unoobj/afmtuno.cxx
+++ b/sc/source/ui/unoobj/afmtuno.cxx
@@ -594,11 +594,11 @@
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 @@
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 5ab4798..4647b2b 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -2109,7 +2109,7 @@
if ( nRotVal < 0 )
nRotVal += 36000;
rSet.Put( ScRotateValueItem( nRotVal ) );
rSet.Put( ScRotateValueItem( Degree100(nRotVal) ) );
}
break;
@@ -2125,12 +2125,12 @@
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 @@
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 81db396..8df4b35 100644
--- a/sc/source/ui/unoobj/styleuno.cxx
+++ b/sc/source/ui/unoobj/styleuno.cxx
@@ -1551,7 +1551,7 @@
nRotVal %= 36000;
if (nRotVal < 0)
nRotVal += 36000;
rSet.Put(ScRotateValueItem(nRotVal));
rSet.Put(ScRotateValueItem(Degree100(nRotVal)));
}
}
break;
@@ -1567,11 +1567,11 @@
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 @@
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 d46c996..1da5dff 100644
--- a/sc/source/ui/view/output.cxx
+++ b/sc/source/ui/view/output.cxx
@@ -650,9 +650,9 @@
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 @@
ScRotateDir nRet = ScRotateDir::NONE;
tools::Long nAttrRotate = pPattern->GetRotateVal( pCondSet );
Degree100 nAttrRotate = pPattern->GetRotateVal( pCondSet );
if ( nAttrRotate )
{
SvxRotateMode eRotMode =
@@ -683,7 +683,7 @@
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 @@
//! 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 @@
// 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 a790cb8..764919b 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -360,7 +360,7 @@
{
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 @@
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 @@
// 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 @@
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 @@
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 @@
{
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 @@
{
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 @@
{
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 @@
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 @@
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 @@
{
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 @@
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 @@
{
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 @@
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 @@
// 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 56165d3..ce2ca26 100644
--- a/sd/qa/unit/uiimpress.cxx
+++ b/sd/qa/unit/uiimpress.cxx
@@ -122,7 +122,7 @@
// 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 7944bf5..d70e79c 100644
--- a/sd/source/ui/app/optsitem.cxx
+++ b/sd/source/ui/app/optsitem.cxx
@@ -847,8 +847,8 @@
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 e1e26a5..5de5d71b 100644
--- a/sd/source/ui/dlg/copydlg.cxx
+++ b/sd/source/ui/dlg/copydlg.cxx
@@ -132,7 +132,7 @@
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 @@
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 4c647ea..e0d43be 100644
--- a/sd/source/ui/dlg/tpoption.cxx
+++ b/sd/source/ui/dlg/tpoption.cxx
@@ -89,8 +89,8 @@
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 2671f4e..1ced022 100644
--- a/sd/source/ui/func/fuconarc.cxx
+++ b/sd/source/ui/func/fuconarc.cxx
@@ -94,8 +94,8 @@
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 @@
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 844bd82..d1fcf0f 100644
--- a/sd/source/ui/func/fuconcs.cxx
+++ b/sd/source/ui/func/fuconcs.cxx
@@ -183,7 +183,7 @@
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 ba50612..c291e34 100644
--- a/sd/source/ui/func/fucopy.cxx
+++ b/sd/source/ui/func/fucopy.cxx
@@ -120,7 +120,8 @@
}
::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 904696b..fbcd7ad 100644
--- a/sd/source/ui/func/fusel.cxx
+++ b/sd/source/ui/func/fusel.cxx
@@ -169,10 +169,10 @@
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 @@
* 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 2c835094..2e03490 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 88b04b0..5b873f5 100644
--- a/sd/source/ui/view/frmview.cxx
+++ b/sd/source/ui/view/frmview.cxx
@@ -280,7 +280,7 @@
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 @@
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 @@
{
if( rValue.Value >>= nInt32 )
{
SetEliminatePolyPointLimitAngle( nInt32 );
SetEliminatePolyPointLimitAngle( Degree100(nInt32) );
}
}
else if ( rValue.Name == sUNO_View_IsEliminatePolyPoints )
@@ -844,7 +844,7 @@
{
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 d174d96..79402d0 100644
--- a/svx/inc/dragmt3d.hxx
+++ b/svx/inc/dragmt3d.hxx
@@ -36,8 +36,8 @@
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 d6e216b..26d4a31 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 ed2c3f4..8798b05 100644
--- a/svx/inc/sxmtaitm.hxx
+++ b/svx/inc/sxmtaitm.hxx
@@ -38,7 +38,7 @@
// 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 66785c6..7f1aec1 100644
--- a/svx/inc/sxroaitm.hxx
+++ b/svx/inc/sxroaitm.hxx
@@ -26,7 +26,7 @@
{
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 28ceada..39cef3d 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 1591dfa..01824ef 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 f73b460..6e0cb2b 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 @@
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 2c5273a..75faab3 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 @@
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 fe4e22f..d0d4ac3 100644
--- a/svx/qa/unit/customshapes.cxx
+++ b/svx/qa/unit/customshapes.cxx
@@ -863,7 +863,7 @@
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 fb8fce6..57d622e 100644
--- a/svx/source/customshapes/EnhancedCustomShape2d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx
@@ -749,7 +749,7 @@
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 @@
}
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 @@
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 f83be9f..651d176 100644
--- a/svx/source/customshapes/EnhancedCustomShape3d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape3d.cxx
@@ -271,10 +271,10 @@
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 11f26ff..d4635c4e 100644
--- a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
+++ b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
@@ -282,7 +282,7 @@
*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 @@
if (xRenderedShape3d)
{
bFlipV = bFlipH = false;
nRotateAngle = 0;
nRotateAngle = 0_deg100;
xRenderedShape = std::move(xRenderedShape3d);
}
@@ -316,7 +316,7 @@
if ( rGeoStat.nShearAngle )
{
tools::Long nShearAngle = rGeoStat.nShearAngle;
Degree100 nShearAngle = rGeoStat.nShearAngle;
double nTan = rGeoStat.mfTanShearAngle;
if (bFlipV != bFlipH)
{
@@ -413,7 +413,7 @@
if ( rGeoStat.nShearAngle )
{
tools::Long nShearAngle = rGeoStat.nShearAngle;
Degree100 nShearAngle = rGeoStat.nShearAngle;
double nTan = rGeoStat.mfTanShearAngle;
if (bFlipV != bFlipH)
{
@@ -422,7 +422,7 @@
}
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 9052d43..ff8f0ee 100644
--- a/svx/source/dialog/dialcontrol.cxx
+++ b/svx/source/dialog/dialcontrol.cxx
@@ -63,9 +63,9 @@
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 @@
// 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 @@
// *** drag button ***
bool bMain = (nAngle % 4500) != 0;
bool bMain = (nAngle % 4500_deg100) != 0_deg100;
SetLineColor( GetButtonLineColor() );
SetFillColor( GetButtonFillColor( bMain ) );
@@ -348,12 +348,12 @@
}
}
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 @@
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 @@
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 @@
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 14345a5..6a2c5ef 100644
--- a/svx/source/dialog/imapwnd.cxx
+++ b/svx/source/dialog/imapwnd.cxx
@@ -210,8 +210,8 @@
*pModel,
SdrCircKind::Full,
aCircle,
0,
36000);
0_deg100,
36000_deg100);
pCloneIMapObj.reset(static_cast<IMapObject*>(new IMapCircleObject( *pIMapCircleObj )));
}
break;
@@ -232,8 +232,8 @@
*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 bffd2e5..c27d955 100644
--- a/svx/source/engine3d/dragmt3d.cxx
+++ b/svx/source/engine3d/dragmt3d.cxx
@@ -122,7 +122,7 @@
{
E3dDragMethodUnit& rCandidate = maGrp[nOb];
rCandidate.mnStartAngle = GetAngle(DragStat().GetStart() - DragStat().GetRef1());
rCandidate.mnLastAngle = 0;
rCandidate.mnLastAngle = 0_deg100;
}
}
else
@@ -355,10 +355,10 @@
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 8d81317..dac98b2 100644
--- a/svx/source/engine3d/obj3d.cxx
+++ b/svx/source/engine3d/obj3d.cxx
@@ -432,13 +432,13 @@
// 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 5c99893..0b6632a 100644
--- a/svx/source/engine3d/scene3d.cxx
+++ b/svx/source/engine3d/scene3d.cxx
@@ -614,7 +614,7 @@
}
}
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 @@
// 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 58a71f1..d432963 100644
--- a/svx/source/items/algitem.cxx
+++ b/svx/source/items/algitem.cxx
@@ -42,14 +42,14 @@
{
}
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 @@
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 a15af6d..1148fa7 100644
--- a/svx/source/items/autoformathelper.cxx
+++ b/svx/source/items/autoformathelper.cxx
@@ -361,7 +361,7 @@
}
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 @@
{
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 8014095..e2e0b45 100644
--- a/svx/source/sdr/contact/viewcontactofgraphic.cxx
+++ b/svx/source/sdr/contact/viewcontactofgraphic.cxx
@@ -315,8 +315,8 @@
// 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 @@
// 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 3e14a74..d319880 100644
--- a/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx
@@ -74,7 +74,7 @@
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 beafebf..7462c10 100644
--- a/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx
@@ -57,7 +57,7 @@
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 1ad9b8a..f676bd8 100644
--- a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
@@ -73,7 +73,7 @@
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 @@
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 ab7a93f..db65802 100644
--- a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
@@ -63,7 +63,7 @@
// 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 bae0147..5d2b0f1 100644
--- a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
@@ -158,7 +158,7 @@
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 370c1e8..e2c3db4 100644
--- a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
@@ -57,7 +57,7 @@
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 895029c..b6965fd 100644
--- a/svx/source/sdr/properties/circleproperties.cxx
+++ b/svx/source/sdr/properties/circleproperties.cxx
@@ -106,7 +106,7 @@
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 8f34d70..69e0d42 100644
--- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
+++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
@@ -449,11 +449,11 @@
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 @@
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 @@
}
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 5f64118..0342f65 100644
--- a/svx/source/svdraw/svdattr.cxx
+++ b/svx/source/svdraw/svdattr.cxx
@@ -203,8 +203,8 @@
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 @@
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 25c1a5a..b8aa228 100644
--- a/svx/source/svdraw/svddrgm1.hxx
+++ b/svx/source/svdraw/svddrgm1.hxx
@@ -49,8 +49,8 @@
private:
double nSin;
double nCos;
tools::Long nAngle0;
tools::Long nAngle;
Degree100 nAngle0;
Degree100 nAngle;
bool bRight;
public:
@@ -70,8 +70,8 @@
{
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 @@
{
private:
Point aDif;
tools::Long nAngle;
Degree100 nAngle;
bool bMirrored;
bool bSide0;
@@ -159,7 +159,7 @@
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 0915dfc..5938171 100644
--- a/svx/source/svdraw/svddrgmt.cxx
+++ b/svx/source/svdraw/svddrgmt.cxx
@@ -1042,21 +1042,21 @@
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 @@
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 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 @@
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 @@
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 @@
{
Hide();
if (nAngle!=0)
if (nAngle!=0_deg100)
{
if (IsDraggingPoints())
{
@@ -2204,10 +2204,10 @@
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 @@
return;
bResize=!getSdrDragView().IsOrtho();
tools::Long nSA=0;
Degree100 nSA(0);
if (getSdrDragView().IsAngleSnapEnabled())
nSA=getSdrDragView().GetSnapAngle();
@@ -2290,7 +2290,7 @@
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 @@
Point aRef(DragStat().GetRef1());
Point aDif(aPnt-aRef);
tools::Long nNewAngle=0;
Degree100 nNewAngle(0);
if (bSlant)
{
@@ -2318,16 +2318,16 @@
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 @@
}
}
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 @@
{
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 @@
}
}
if (nAngle!=0)
if (nAngle)
{
rTarget.Shear(DragStat().GetRef1(), nAngle, nTan, bVertical);
}
@@ -2413,9 +2413,9 @@
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 @@
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 @@
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 @@
nVal *= 2;
nVal = std::abs(nVal);
aStr += SdrModel::GetAngleString(nVal) + ")";
aStr += SdrModel::GetAngleString(Degree100(nVal)) + ")";
}
if(getSdrDragView().IsDragWithCopy())
@@ -3131,12 +3131,12 @@
}
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 @@
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 @@
}
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 9136ed3..f212882 100644
--- a/svx/source/svdraw/svdedtv1.cxx
+++ b/svx/source/svdraw/svdedtv1.cxx
@@ -280,9 +280,9 @@
EndUndo();
}
tools::Long SdrEditView::GetMarkedObjRotate() const
Degree100 SdrEditView::GetMarkedObjRotate() const
{
tools::Long nRetval(0);
Degree100 nRetval(0);
if(GetMarkedObjectCount())
{
@@ -295,7 +295,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
// 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 @@
// 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 @@
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 d761998..5106702 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -1521,7 +1521,7 @@
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 31624873..34a4912 100644
--- a/svx/source/svdraw/svdfmtf.cxx
+++ b/svx/source/svdraw/svdfmtf.cxx
@@ -742,8 +742,8 @@
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(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(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 @@
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 370563d..78c92f7 100644
--- a/svx/source/svdraw/svdglev.cxx
+++ b/svx/source/svdraw/svdglev.cxx
@@ -383,15 +383,15 @@
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 0d3db7f..4cce1a5 100644
--- a/svx/source/svdraw/svdglue.cxx
+++ b/svx/source/svdraw/svdglue.cxx
@@ -125,68 +125,68 @@
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 @@
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 @@
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::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 99aae2a..33df3e7 100644
--- a/svx/source/svdraw/svdhdl.cxx
+++ b/svx/source/svdraw/svdhdl.cxx
@@ -327,7 +327,7 @@
}
}
void SdrHdl::SetRotationAngle(tools::Long n)
void SdrHdl::SetRotationAngle(Degree100 n)
{
if(nRotationAngle != n)
{
@@ -965,24 +965,24 @@
}
} 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 @@
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 e45aaca..1e95644 100644
--- a/svx/source/svdraw/svdmodel.cxx
+++ b/svx/source/svdraw/svdmodel.cxx
@@ -1202,9 +1202,9 @@
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 0d6911e..dcb8c60 100644
--- a/svx/source/svdraw/svdmrkv.cxx
+++ b/svx/source/svdraw/svdmrkv.cxx
@@ -738,7 +738,7 @@
{
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 @@
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 c935ca6..835d4f13 100644
--- a/svx/source/svdraw/svdoashp.cxx
+++ b/svx/source/svdraw/svdoashp.cxx
@@ -1527,9 +1527,8 @@
}
// 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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
// 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 @@
// #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 @@
// #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 @@
{
// 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 3dafbfe..a3ef402 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -1401,16 +1401,16 @@
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 @@
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 @@
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 @@
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 @@
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 @@
}
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::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 c55d935..983adc4 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 @@
SdrCircKind eNewKind)
: SdrRectObj(rSdrModel)
{
nStartAngle=0;
nEndAngle=36000;
nStartAngle=0_deg100;
nEndAngle=36000_deg100;
meCircleKind=eNewKind;
bClosedObj=eNewKind!=SdrCircKind::Arc;
}
@@ -132,8 +131,8 @@
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 @@
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 @@
// 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 @@
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 @@
{
// 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 @@
// 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 @@
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::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 @@
Point aP1;
tools::Long nHgt;
tools::Long nWdt;
tools::Long nStart;
tools::Long nEnd;
Degree100 nStart;
Degree100 nEnd;
public:
ImpCircUser()
@@ -530,10 +529,10 @@
{
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 @@
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 @@
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 @@
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 @@
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 @@
}
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 @@
}
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::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 @@
// 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 @@
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 @@
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 @@
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 @@
// 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 @@
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 @@
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::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 @@
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 @@
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 f139576..3e164e2 100644
--- a/svx/source/svdraw/svdoedge.cxx
+++ b/svx/source/svdraw/svdoedge.cxx
@@ -2292,7 +2292,7 @@
}
// #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 @@
}
// #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 991b3b2..e11d1b5 100644
--- a/svx/source/svdraw/svdograf.cxx
+++ b/svx/source/svdraw/svdograf.cxx
@@ -362,7 +362,7 @@
{
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 @@
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 @@
}
if( bRotate )
aActAttr.SetRotation( Degree10(aGeo.nRotationAngle / 10) );
aActAttr.SetRotation( toDegree10(aGeo.nRotationAngle ) );
}
return aActAttr;
@@ -509,9 +509,9 @@
{
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 b78a02c..34ae1c5 100644
--- a/svx/source/svdraw/svdogrp.cxx
+++ b/svx/source/svdraw/svdogrp.cxx
@@ -299,9 +299,9 @@
}
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::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::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::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::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::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 4bbfb61..8464d2f 100644
--- a/svx/source/svdraw/svdomeas.cxx
+++ b/svx/source/svdraw/svdomeas.cxx
@@ -263,7 +263,7 @@
bool bTextRota90;
bool bTextUpsideDown;
bool bTextAutoAngle;
tools::Long nTextAutoAngleView;
Degree100 nTextAutoAngleView;
};
namespace {
@@ -285,9 +285,9 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 24c93bb..b7655a4 100644
--- a/svx/source/svdraw/svdopath.cxx
+++ b/svx/source/svdraw/svdopath.cxx
@@ -239,8 +239,8 @@
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 @@
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 @@
}
}
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 @@
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 @@
{
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
// #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 7491f6c..111dd2b 100644
--- a/svx/source/svdraw/svdorect.cxx
+++ b/svx/source/svdraw/svdorect.cxx
@@ -115,8 +115,8 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 710e81d..7ffc95a 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -382,8 +382,8 @@
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::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 @@
if(aGeo.nRotationAngle)
{
// Unrotate!
aMatrix.rotate(-aGeo.nRotationAngle * F_PI18000);
aMatrix.rotate(-aGeo.nRotationAngle.get() * F_PI18000);
}
aXorPolyPolygon.transform(aMatrix);
@@ -609,7 +609,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
}
// 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 @@
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 @@
// #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 @@
// 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 b7a7f54..e4727eb 100644
--- a/svx/source/svdraw/svdotxdr.cxx
+++ b/svx/source/svdraw/svdotxdr.cxx
@@ -54,8 +54,8 @@
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 @@
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 96341a0..f332bf5 100644
--- a/svx/source/svdraw/svdotxed.cxx
+++ b/svx/source/svdraw/svdotxed.cxx
@@ -134,7 +134,7 @@
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 ce2ae53..906ed2b 100644
--- a/svx/source/svdraw/svdotxtr.cxx
+++ b/svx/source/svdraw/svdotxtr.cxx
@@ -41,7 +41,7 @@
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 @@
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::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 @@
}
}
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 @@
}
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 @@
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 @@
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 @@
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::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 @@
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 b420368..d6800e2 100644
--- a/svx/source/svdraw/svdouno.cxx
+++ b/svx/source/svdraw/svdouno.cxx
@@ -297,17 +297,17 @@
{
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 9a1957c..ebd37b9 100644
--- a/svx/source/svdraw/svdovirt.cxx
+++ b/svx/source/svdraw/svdovirt.cxx
@@ -305,7 +305,7 @@
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 @@
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::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 @@
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 @@
}
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 f911517..847d752 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -841,12 +841,9 @@
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 b5329fb..f6fafcf 100644
--- a/svx/source/svdraw/svdpoev.cxx
+++ b/svx/source/svdraw/svdpoev.cxx
@@ -637,13 +637,13 @@
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 f3efd09..17106ee 100644
--- a/svx/source/svdraw/svdtrans.cxx
+++ b/svx/source/svdraw/svdtrans.cxx
@@ -123,11 +123,11 @@
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 @@
}
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 @@
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::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 @@
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 @@
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 9ea6ba0..56f68c0 100644
--- a/svx/source/table/viewcontactoftableobj.cxx
+++ b/svx/source/table/viewcontactoftableobj.cxx
@@ -358,7 +358,7 @@
// 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 @@
// 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 126e6e0..95c0ee3 100644
--- a/svx/source/tbxctrls/grafctrl.cxx
+++ b/svx/source/tbxctrls/grafctrl.cxx
@@ -694,19 +694,19 @@
// #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 0892556..8229a45 100644
--- a/svx/source/uitest/sdrobject.cxx
+++ b/svx/source/uitest/sdrobject.cxx
@@ -144,7 +144,7 @@
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 @@
}
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 1715a6d..aade016 100644
--- a/svx/source/unodraw/unoshape.cxx
+++ b/svx/source/unodraw/unoshape.cxx
@@ -1927,8 +1927,8 @@
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 @@
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 @@
}
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 @@
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 1082ebc..07114ee 100644
--- a/sw/inc/dcontact.hxx
+++ b/sw/inc/dcontact.hxx
@@ -264,14 +264,14 @@
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 3ae40ccd..3d7fdc1 100644
--- a/sw/source/core/draw/dcontact.cxx
+++ b/sw/source/core/draw/dcontact.cxx
@@ -2393,7 +2393,7 @@
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 @@
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::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 @@
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 31ddcf4..a06f0e8 100644
--- a/sw/source/core/draw/dflyobj.cxx
+++ b/sw/source/core/draw/dflyobj.cxx
@@ -378,20 +378,20 @@
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 @@
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 @@
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 767e4e7..4250a11 100644
--- a/sw/source/core/frmedt/feshview.cxx
+++ b/sw/source/core/frmedt/feshview.cxx
@@ -2975,8 +2975,8 @@
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 e05fe4e..55d87f6 100644
--- a/sw/source/core/inc/dflyobj.hxx
+++ b/sw/source/core/inc/dflyobj.hxx
@@ -97,7 +97,7 @@
// 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 @@
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 1134900..0b20b98 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -5030,7 +5030,7 @@
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 54ae415..edba8df 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -77,14 +77,14 @@
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 @@
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 @@
, m_pFlyWrapAttrList(nullptr)
, m_pBodyPrAttrList(nullptr)
, m_bDMLAndVMLDrawingOpen(false)
, m_nDMLandVMLTextFrameRotation(0)
{
}
@@ -269,12 +268,12 @@
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 @@
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 @@
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 @@
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 @@
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 87a559e..3ad3404 100644
--- a/sw/source/filter/ww8/rtfsdrexport.cxx
+++ b/sw/source/filter/ww8/rtfsdrexport.cxx
@@ -669,7 +669,7 @@
// 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 73960cb..8b514ba 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -676,9 +676,9 @@
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 d766142..c2efe73 100644
--- a/sw/source/filter/ww8/ww8graf.cxx
+++ b/sw/source/filter/ww8/ww8graf.cxx
@@ -415,8 +415,8 @@
*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 c8e5256..91b8f84 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -719,7 +719,7 @@
ScaleEmu( nTextTop );
ScaleEmu( nTextBottom );
sal_Int32 nTextRotationAngle=0;
Degree100 nTextRotationAngle;
bool bVerticalText = false;
if ( IsProperty( DFF_Prop_txflTextFlow ) )
{
@@ -728,18 +728,18 @@
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 @@
if (nTextRotationAngle)
{
if (nTextRotationAngle == 9000)
if (nTextRotationAngle == 9000_deg100)
{
tools::Long nWidth = rTextRect.GetWidth();
rTextRect.SetRight( rTextRect.Left() + rTextRect.GetHeight() );
@@ -765,7 +765,7 @@
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 @@
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 @@
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 b8eedd8..2581e70 100644
--- a/sw/source/ui/frmdlg/frmpage.cxx
+++ b/sw/source/ui/frmdlg/frmpage.cxx
@@ -2358,7 +2358,7 @@
}
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 be3820da..97914c8 100644
--- a/sw/source/uibase/ribbar/concustomshape.cxx
+++ b/sw/source/uibase/ribbar/concustomshape.cxx
@@ -137,7 +137,7 @@
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 4764dec..73bbc88 100644
--- a/sw/source/uibase/shells/beziersh.cxx
+++ b/sw/source/uibase/shells/beziersh.cxx
@@ -54,7 +54,7 @@
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 1047655..6e990cd 100644
--- a/sw/source/uibase/shells/frmsh.cxx
+++ b/sw/source/uibase/shells/frmsh.cxx
@@ -400,7 +400,7 @@
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 @@
// 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 c3eedb1..d4197cb 100644
--- a/sw/source/uibase/shells/grfsh.cxx
+++ b/sw/source/uibase/shells/grfsh.cxx
@@ -511,7 +511,7 @@
// 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 59c972e..02c348a0 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -792,7 +792,7 @@
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 @@
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 be403b0..bf94d9c 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.cxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.cxx
@@ -250,8 +250,7 @@
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())