[Libreoffice-commits] core.git: include/tools svx/source sw/inc sw/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Tue Dec 29 07:08:33 UTC 2020
include/tools/degree.hxx | 7 +++++++
svx/source/svdraw/svdmrkv.cxx | 5 -----
sw/inc/grfatr.hxx | 8 +++++---
sw/source/core/doc/notxtfrm.cxx | 2 +-
sw/source/core/draw/dflyobj.cxx | 10 +++++-----
sw/source/core/graphic/grfatr.cxx | 16 ++++++++--------
sw/source/core/graphic/ndgrf.cxx | 2 +-
sw/source/core/inc/dflyobj.hxx | 2 +-
sw/source/filter/ww8/docxattributeoutput.cxx | 4 ++--
sw/source/filter/ww8/rtfattributeoutput.cxx | 4 ++--
sw/source/uibase/frmdlg/frmmgr.cxx | 2 +-
sw/source/uibase/inc/frmmgr.hxx | 2 +-
sw/source/uibase/shells/frmsh.cxx | 6 +++---
sw/source/uibase/shells/grfsh.cxx | 26 +++++++++++++-------------
sw/source/uibase/utlui/attrdesc.cxx | 2 +-
15 files changed, 51 insertions(+), 47 deletions(-)
New commits:
commit 0df65d9b1643c651143b51e315c97e732e8a6c00
Author: Noel Grandin <noelgrandin at gmail.com>
AuthorDate: Mon Dec 28 13:24:48 2020 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Tue Dec 29 08:07:51 2020 +0100
use Degree10 in SwRotationGrf
(*) Fix SwRotationGrf::GetPresentation to return a more accurate string
(*) Add utility functions
sal_Int32 toDegree100(Degree10)
double toRadians(Degree10)
(*) Fix SwVirtFlyDrawObj::GetRotateAngle to return the angle in the units
that svx expects (deg100)
which was introduced in
commit c2e30949e0fb7c6a73742450f646e0d8d59d5e4f
Date: Wed Apr 10 15:13:53 2019 +0200
lok: writer: svg export transformed images
and consequently we can remove the kludge from that commit in
SdrMarkView::SetMarkHandlesForLOKit
Change-Id: I1a8c5f3a417f887f85b92ae5464578e9ee251619
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108406
Tested-by: Noel Grandin <noel.grandin at collabora.co.uk>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/include/tools/degree.hxx b/include/tools/degree.hxx
index d7ff625b0de2..27bdffaa5de1 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 <math.h>
/** tenths of a Degree, normally rotation */
typedef o3tl::strong_int<sal_Int16, struct Degree10Tag> Degree10;
@@ -17,4 +18,10 @@ typedef o3tl::strong_int<sal_Int16, struct Degree10Tag> Degree10;
/** custom literal */
constexpr Degree10 operator""_deg10(unsigned long long n) { return Degree10{ 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 double toDegrees(Degree10 x) { return x.get() / 10.0; }
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx
index 5e528e5947db..0d6911e71a1d 100644
--- a/svx/source/svdraw/svdmrkv.cxx
+++ b/svx/source/svdraw/svdmrkv.cxx
@@ -743,11 +743,6 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle const & rRect, const S
// (SwVirtFlyDrawObj with a SwGrfNode)
bool bWriterGraphic = pO->HasLimitedRotation();
- if (bWriterGraphic)
- {
- nRotAngle *= 10;
- }
-
OStringBuffer aExtraInfo;
aExtraInfo.append("{\"id\":\"");
diff --git a/sw/inc/grfatr.hxx b/sw/inc/grfatr.hxx
index 954a1a39dc28..05bf13ae591c 100644
--- a/sw/inc/grfatr.hxx
+++ b/sw/inc/grfatr.hxx
@@ -84,13 +84,13 @@ private:
// tdf#115529 check and evtl. correct value, it is in 10th
// degrees and *has* to be in the range [0 .. 3600[
- static sal_Int16 checkAndCorrectValue(sal_Int16 nValue);
+ static Degree10 checkAndCorrectValue(Degree10 nValue);
public:
SwRotationGrf()
: SfxUInt16Item( RES_GRFATR_ROTATION, 0 )
{}
- SwRotationGrf( sal_Int16 nVal, const Size& rSz );
+ SwRotationGrf( Degree10 nVal, const Size& rSz );
// pure virtual methods from SfxInt16Item
virtual SwRotationGrf* Clone( SfxItemPool *pPool = nullptr ) const override;
@@ -105,7 +105,9 @@ public:
virtual bool PutValue( const css::uno::Any& rVal,
sal_uInt8 nMemberId ) override;
- const Size& GetUnrotatedSize() const { return m_aUnrotatedSize; }
+ const Size& GetUnrotatedSize() const { return m_aUnrotatedSize; }
+ Degree10 GetValue() const { return Degree10(SfxUInt16Item::GetValue()); }
+ void SetValue(Degree10 d) { SfxUInt16Item::SetValue(d.get()); }
};
class SW_DLLPUBLIC SwLuminanceGrf : public SfxInt16Item
diff --git a/sw/source/core/doc/notxtfrm.cxx b/sw/source/core/doc/notxtfrm.cxx
index 15778a3a5863..0a9225fd93f5 100644
--- a/sw/source/core/doc/notxtfrm.cxx
+++ b/sw/source/core/doc/notxtfrm.cxx
@@ -642,7 +642,7 @@ double SwNoTextFrame::getLocalFrameRotation() const
{
const SwAttrSet& rSwAttrSet(pSwGrfNode->GetSwAttrSet());
const SwRotationGrf& rSwRotationGrf(rSwAttrSet.GetRotationGrf());
- const double fRotate(static_cast< double >(-rSwRotationGrf.GetValue()) * (M_PI/1800.0));
+ const double fRotate = -toRadians(rSwRotationGrf.GetValue());
return basegfx::normalizeToRange(fRotate, F_2PI);
}
diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx
index 1d46ff307b63..31ddcf4dd727 100644
--- a/sw/source/core/draw/dflyobj.cxx
+++ b/sw/source/core/draw/dflyobj.cxx
@@ -396,10 +396,10 @@ void SwVirtFlyDrawObj::Rotate(const Point& rRef, tools::Long nAngle, double sn,
{
// RotGrfFlyFrame: Add transformation to placeholder object
Size aSize;
- const sal_uInt16 nOldRot(SwVirtFlyDrawObj::getPossibleRotationFromFraphicFrame(aSize));
+ const Degree10 nOldRot(SwVirtFlyDrawObj::getPossibleRotationFromFraphicFrame(aSize));
SwFlyFrameAttrMgr aMgr(false, pShForAngle, Frmmgr_Type::NONE, nullptr);
- aMgr.SetRotation(nOldRot, (nOldRot + static_cast<sal_uInt16>(nAngle)) % 3600, aSize);
+ aMgr.SetRotation(nOldRot, (nOldRot + Degree10(nAngle)) % 3600_deg10, aSize);
}
}
else
@@ -1144,9 +1144,9 @@ void SwVirtFlyDrawObj::Crop(const basegfx::B2DPoint& rRef, double fxFact, double
}
// RotGrfFlyFrame: Helper to access possible rotation of Graphic contained in FlyFrame
-sal_uInt16 SwVirtFlyDrawObj::getPossibleRotationFromFraphicFrame(Size& rSize) const
+Degree10 SwVirtFlyDrawObj::getPossibleRotationFromFraphicFrame(Size& rSize) const
{
- sal_uInt16 nRetval(0);
+ Degree10 nRetval;
const SwNoTextFrame* pNoTx = dynamic_cast< const SwNoTextFrame* >(GetFlyFrame()->Lower());
if(pNoTx)
@@ -1172,7 +1172,7 @@ tools::Long SwVirtFlyDrawObj::GetRotateAngle() const
if(ContainsSwGrfNode())
{
Size aSize;
- return getPossibleRotationFromFraphicFrame(aSize);
+ return toDegree100(getPossibleRotationFromFraphicFrame(aSize));
}
else
{
diff --git a/sw/source/core/graphic/grfatr.cxx b/sw/source/core/graphic/grfatr.cxx
index 9c30a4bc9072..48e56afb585e 100644
--- a/sw/source/core/graphic/grfatr.cxx
+++ b/sw/source/core/graphic/grfatr.cxx
@@ -145,27 +145,27 @@ SwCropGrf* SwCropGrf::Clone( SfxItemPool* ) const
return new SwCropGrf( *this );
}
-sal_Int16 SwRotationGrf::checkAndCorrectValue(sal_Int16 nValue)
+Degree10 SwRotationGrf::checkAndCorrectValue(Degree10 nValue)
{
- if(nValue < 0)
+ if(nValue.get() < 0)
{
// smaller zero, modulo (will keep negative) and add one range
DBG_ASSERT(false, "SwRotationGrf: Value is in 10th degree and *has* to be in [0 .. 3600[ (!)");
- return 3600 + (nValue % 3600);
+ return Degree10(3600 + (nValue.get() % 3600));
}
- else if (nValue >= 3600)
+ else if (nValue.get() >= 3600)
{
// bigger range, use modulo
DBG_ASSERT(false, "SwRotationGrf: Value is in 10th degree and *has* to be in [0 .. 3600[ (!)");
- return nValue % 3600;
+ return Degree10(nValue.get() % 3600);
}
return nValue;
}
-SwRotationGrf::SwRotationGrf( sal_Int16 nVal, const Size& rSz )
+SwRotationGrf::SwRotationGrf( Degree10 nVal, const Size& rSz )
// tdf#115529 check and evtl. correct value
-: SfxUInt16Item( RES_GRFATR_ROTATION, checkAndCorrectValue(nVal) ),
+: SfxUInt16Item( RES_GRFATR_ROTATION, checkAndCorrectValue(nVal).get() ),
m_aUnrotatedSize( rSz )
{
}
@@ -198,7 +198,7 @@ bool SwRotationGrf::PutValue( const uno::Any& rVal, sal_uInt8 )
{
// sal_uInt16 argument needed
// tdf#115529 check and evtl. correct value
- SetValue(static_cast<sal_uInt16>(checkAndCorrectValue(nValue)));
+ SetValue(checkAndCorrectValue(Degree10(nValue)));
return true;
}
diff --git a/sw/source/core/graphic/ndgrf.cxx b/sw/source/core/graphic/ndgrf.cxx
index 5446ba6eed00..017a226c82a8 100644
--- a/sw/source/core/graphic/ndgrf.cxx
+++ b/sw/source/core/graphic/ndgrf.cxx
@@ -776,7 +776,7 @@ GraphicAttr& SwGrfNode::GetGraphicAttr( GraphicAttr& rGA,
convertTwipToMm100( rCrop.GetBottom() ));
const SwRotationGrf& rRotation = rSet.GetRotationGrf();
- rGA.SetRotation( Degree10(rRotation.GetValue()) );
+ rGA.SetRotation( rRotation.GetValue() );
rGA.SetLuminance( rSet.GetLuminanceGrf().GetValue() );
rGA.SetContrast( rSet.GetContrastGrf().GetValue() );
diff --git a/sw/source/core/inc/dflyobj.hxx b/sw/source/core/inc/dflyobj.hxx
index a59e7cf23d54..e05fe4ec5526 100644
--- a/sw/source/core/inc/dflyobj.hxx
+++ b/sw/source/core/inc/dflyobj.hxx
@@ -63,7 +63,7 @@ private:
// RotGrfFlyFrame: Helper to access the rotation angle (in 10th degrees, left-handed)
// of a GraphicFrame
- sal_uInt16 getPossibleRotationFromFraphicFrame(Size& rSize) const;
+ Degree10 getPossibleRotationFromFraphicFrame(Size& rSize) const;
protected:
// AW: Need own sdr::contact::ViewContact since AnchorPos from parent is
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index fb5eac573767..6f76dcbaebaa 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -5027,10 +5027,10 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
// Mirror on the vertical axis is a horizontal flip.
xFrameAttributes->add(XML_flipH, "1");
// RES_GRFATR_ROTATION is sal_uInt16; use sal_uInt32 for multiplication later
- if (sal_uInt32 nRot = rSet.Get(RES_GRFATR_ROTATION).GetValue())
+ 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*10);
+ sal_uInt32 mOOXMLRot = oox::drawingml::ExportRotateClockwisify(nRot.get()*10);
xFrameAttributes->add(XML_rot, OString::number(mOOXMLRot));
}
}
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index bfea2e309526..5fdabb896756 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -4256,13 +4256,13 @@ void RtfAttributeOutput::FlyFrameGraphic(const SwFlyFrameFormat* pFlyFrameFormat
if (pAttrSet)
{
- if (sal_Int32 nRot = pAttrSet->Get(RES_GRFATR_ROTATION).GetValue())
+ if (Degree10 nRot10 = pAttrSet->Get(RES_GRFATR_ROTATION).GetValue())
{
// See writerfilter::rtftok::RTFSdrImport::applyProperty(),
// positive rotation angles are clockwise in RTF, we have them
// as counter-clockwise.
// Additionally, RTF type is 0..360*2^16, our is 0..360*10.
- nRot = nRot * -1 * RTF_MULTIPLIER / 10;
+ sal_Int32 nRot = nRot10.get() * -1 * RTF_MULTIPLIER / 10;
aFlyProperties.emplace_back("rotation", OString::number(nRot));
}
}
diff --git a/sw/source/uibase/frmdlg/frmmgr.cxx b/sw/source/uibase/frmdlg/frmmgr.cxx
index 3428c075c9c2..e8a3ba892829 100644
--- a/sw/source/uibase/frmdlg/frmmgr.cxx
+++ b/sw/source/uibase/frmdlg/frmmgr.cxx
@@ -584,7 +584,7 @@ void SwFlyFrameAttrMgr::SetHeightSizeType( SwFrameSize eType )
m_aSet.Put( aSize );
}
-void SwFlyFrameAttrMgr::SetRotation(sal_uInt16 nOld, sal_uInt16 nNew, const Size& rUnrotatedSize)
+void SwFlyFrameAttrMgr::SetRotation(Degree10 nOld, Degree10 nNew, const Size& rUnrotatedSize)
{
// RotGrfFlyFrame: Central handling of real change of rotation here, all adaptations use this.
// Adaptation of pos/size may be wanted in the future. Already tried to keep last Size in
diff --git a/sw/source/uibase/inc/frmmgr.hxx b/sw/source/uibase/inc/frmmgr.hxx
index fc038f96d77d..27ebc70a66d3 100644
--- a/sw/source/uibase/inc/frmmgr.hxx
+++ b/sw/source/uibase/inc/frmmgr.hxx
@@ -93,7 +93,7 @@ public:
void SetHeightSizeType(SwFrameSize eType);
// rotation
- void SetRotation(sal_uInt16 nOld, sal_uInt16 nNew, const Size& rUnrotatedSize);
+ void SetRotation(Degree10 nOld, Degree10 nNew, const Size& rUnrotatedSize);
// space to content
void SetLRSpace( tools::Long nLeft,
diff --git a/sw/source/uibase/shells/frmsh.cxx b/sw/source/uibase/shells/frmsh.cxx
index 1d352cafb16a..f529d30f4be0 100644
--- a/sw/source/uibase/shells/frmsh.cxx
+++ b/sw/source/uibase/shells/frmsh.cxx
@@ -396,11 +396,11 @@ void SwFrameShell::Execute(SfxRequest &rReq)
SfxItemSet aSet(rSh.GetAttrPool(), svl::Items<RES_GRFATR_ROTATION, RES_GRFATR_ROTATION>{} );
rSh.GetCurAttr(aSet);
const SwRotationGrf& rRotation = aSet.Get(RES_GRFATR_ROTATION);
- const sal_uInt32 nOldRot(rRotation.GetValue());
+ const Degree10 nOldRot(rRotation.GetValue());
if (pArgs && SfxItemState::SET == pArgs->GetItemState(SID_ATTR_TRANSFORM_DELTA_ANGLE, false, &pItem))
{
- const sal_uInt32 nDeltaRot(static_cast<const SfxUInt32Item*>(pItem)->GetValue() / 10);
+ const Degree10 nDeltaRot(static_cast<const SfxUInt32Item*>(pItem)->GetValue() / 10);
aMgr.SetRotation(nOldRot, nOldRot + nDeltaRot, rRotation.GetUnrotatedSize());
}
@@ -410,7 +410,7 @@ void SwFrameShell::Execute(SfxRequest &rReq)
// 100th degrees in SID_ATTR_TRANSFORM_ANGLE to 10th degrees in RES_GRFATR_ROTATION
if (pArgs && SfxItemState::SET == pArgs->GetItemState(SID_ATTR_TRANSFORM_ANGLE, false, &pItem))
{
- const sal_uInt32 nNewRot(static_cast<const SdrAngleItem*>(pItem)->GetValue() / 10);
+ const Degree10 nNewRot(static_cast<const SdrAngleItem*>(pItem)->GetValue() / 10);
// 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 76139243ca92..c3eedb17a7d6 100644
--- a/sw/source/uibase/shells/grfsh.cxx
+++ b/sw/source/uibase/shells/grfsh.cxx
@@ -385,7 +385,7 @@ void SwGrfShell::Execute(SfxRequest &rReq)
}
Size aUnrotatedSize;
- sal_uInt16 nCurrentRotation(0);
+ Degree10 nCurrentRotation;
{ // RotGrfFlyFrame: Add current RotationAngle value, convert from
// RES_GRFATR_ROTATION to SID_ATTR_TRANSFORM_ANGLE. Do not forget to
// convert from 10th degrees to 100th degrees
@@ -394,7 +394,7 @@ void SwGrfShell::Execute(SfxRequest &rReq)
const SwRotationGrf& rRotation = aTmpSet.Get(RES_GRFATR_ROTATION);
nCurrentRotation = rRotation.GetValue();
aUnrotatedSize = rRotation.GetUnrotatedSize();
- aSet.Put(SdrAngleItem(SID_ATTR_TRANSFORM_ANGLE, nCurrentRotation * 10));
+ aSet.Put(SdrAngleItem(SID_ATTR_TRANSFORM_ANGLE, toDegree100(nCurrentRotation)));
}
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
@@ -511,7 +511,7 @@ void SwGrfShell::Execute(SfxRequest &rReq)
// RotGrfFlyFrame: Get and process evtl. changed RotationAngle
if ( SfxItemState::SET == pSet->GetItemState(SID_ATTR_TRANSFORM_ANGLE, false, &pItem ))
{
- const sal_Int32 aNewRotation((static_cast<const SdrAngleItem*>(pItem)->GetValue() / 10) % 3600);
+ const Degree10 aNewRotation((static_cast<const SdrAngleItem*>(pItem)->GetValue() / 10) % 3600);
// RotGrfFlyFrame: Possible rotation change here, SwFlyFrameAttrMgr aMgr is available
aMgr.SetRotation(nCurrentRotation, aNewRotation, aUnrotatedSize);
@@ -913,22 +913,22 @@ void SwGrfShell::GetAttrState(SfxItemSet &rSet)
void SwGrfShell::ExecuteRotation(SfxRequest const &rReq)
{
// RotGrfFlyFrame: Modify rotation attribute instead of manipulating the graphic
- sal_uInt16 aRotation(0);
+ Degree10 aRotation;
if (rReq.GetSlot() == SID_ROTATE_GRAPHIC_LEFT)
{
- aRotation = 900;
+ aRotation = 900_deg10;
}
else if (rReq.GetSlot() == SID_ROTATE_GRAPHIC_RIGHT)
{
- aRotation = 2700;
+ aRotation = 2700_deg10;
}
else if (rReq.GetSlot() == SID_ROTATE_GRAPHIC_180)
{
- aRotation = 1800;
+ aRotation = 1800_deg10;
}
- if (rReq.GetSlot() != SID_ROTATE_GRAPHIC_RESET && 0 == aRotation)
+ if (rReq.GetSlot() != SID_ROTATE_GRAPHIC_RESET && 0_deg10 == aRotation)
return;
SwWrtShell& rShell = GetShell();
@@ -940,11 +940,11 @@ void SwGrfShell::ExecuteRotation(SfxRequest const &rReq)
// RotGrfFlyFrame: Possible rotation change here, SwFlyFrameAttrMgr aMgr is available
if (rReq.GetSlot() == SID_ROTATE_GRAPHIC_RESET)
{
- aMgr.SetRotation(rRotation.GetValue(), 0, rRotation.GetUnrotatedSize());
+ aMgr.SetRotation(rRotation.GetValue(), 0_deg10, rRotation.GetUnrotatedSize());
}
- else if(0 != aRotation)
+ else if(0_deg10 != aRotation)
{
- const sal_uInt16 aNewRotation((aRotation + rRotation.GetValue()) % 3600);
+ const Degree10 aNewRotation((aRotation + rRotation.GetValue()) % 3600_deg10);
aMgr.SetRotation(rRotation.GetValue(), aNewRotation, rRotation.GetUnrotatedSize());
}
@@ -980,7 +980,7 @@ void SwGrfShell::GetAttrStateForRotation(SfxItemSet &rSet)
SfxItemSet aSet( rShell.GetAttrPool(), svl::Items<RES_GRFATR_ROTATION, RES_GRFATR_ROTATION>{} );
rShell.GetCurAttr( aSet );
const SwRotationGrf& rRotation = aSet.Get(RES_GRFATR_ROTATION);
- bDisable = (0 == rRotation.GetValue());
+ bDisable = (0_deg10 == rRotation.GetValue());
break;
}
case SID_ATTR_TRANSFORM_ANGLE:
@@ -990,7 +990,7 @@ void SwGrfShell::GetAttrStateForRotation(SfxItemSet &rSet)
SfxItemSet aSet( rShell.GetAttrPool(), svl::Items<RES_GRFATR_ROTATION, RES_GRFATR_ROTATION>{} );
rShell.GetCurAttr( aSet );
const SwRotationGrf& rRotation = aSet.Get(RES_GRFATR_ROTATION);
- rSet.Put(SdrAngleItem(SID_ATTR_TRANSFORM_ANGLE, rRotation.GetValue() * 10));
+ rSet.Put(SdrAngleItem(SID_ATTR_TRANSFORM_ANGLE, toDegree100(rRotation.GetValue())));
break;
}
default:
diff --git a/sw/source/uibase/utlui/attrdesc.cxx b/sw/source/uibase/utlui/attrdesc.cxx
index 53239a1d6a3a..861697d5e329 100644
--- a/sw/source/uibase/utlui/attrdesc.cxx
+++ b/sw/source/uibase/utlui/attrdesc.cxx
@@ -702,7 +702,7 @@ bool SwRotationGrf::GetPresentation(
rText = SwResId( STR_ROTATION );
else if( rText.getLength() )
rText.clear();
- rText += OUString::number( GetValue() ) + "\xB0";
+ rText += OUString::number( toDegrees(GetValue()) ) + "\xB0";
return true;
}
More information about the Libreoffice-commits
mailing list