Rebased ref, commits from common ancestor:
commit 42e916c3be5be328c705d384e8ccf8a40a2d7ef0
Author: Tomaž Vajngerl <[email protected]>
AuthorDate: Tue Oct 18 21:28:29 2022 +0200
Commit: Tomaž Vajngerl <[email protected]>
CommitDate: Wed Oct 26 13:16:08 2022 +0200
editeng: fix rendering of text when "fit to frame" is enabbled
This changes the nStretchX and nStretchY from sal_uInt16 to double
so the text in text boxes is rendered correctly (text should be
resized to the same size as the textbox).
Change-Id: Ic92d03043af0abe86f1b67ae15522d0176ebbb51
diff --git a/editeng/source/editeng/editeng.cxx
b/editeng/source/editeng/editeng.cxx
index 88bc04a9efed..c8a66d0470a4 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -2266,12 +2266,12 @@ bool EditEngine::HasText( const SvxSearchItem&
rSearchItem )
return pImpEditEngine->HasText( rSearchItem );
}
-void EditEngine::SetGlobalCharStretching( sal_uInt16 nX, sal_uInt16 nY )
+void EditEngine::SetGlobalCharStretching(double nX, double nY)
{
pImpEditEngine->SetCharStretching( nX, nY );
}
-void EditEngine::GetGlobalCharStretching( sal_uInt16& rX, sal_uInt16& rY )
const
+void EditEngine::GetGlobalCharStretching(double& rX, double& rY) const
{
pImpEditEngine->GetCharStretching( rX, rY );
}
diff --git a/editeng/source/editeng/editobj.cxx
b/editeng/source/editeng/editobj.cxx
index 6d57c7497c2b..437754d70def 100644
--- a/editeng/source/editeng/editobj.cxx
+++ b/editeng/source/editeng/editobj.cxx
@@ -71,10 +71,10 @@ void XEditAttribute::SetItem(const SfxPoolItem& rNew)
}
XParaPortionList::XParaPortionList(
- OutputDevice* pRefDev, sal_uInt32 nPW, sal_uInt16 _nStretchX, sal_uInt16
_nStretchY)
+ OutputDevice* pRefDev, sal_uInt32 nPW, double nStretchX, double nStretchY)
: pRefDevPtr(pRefDev)
- , nStretchX(_nStretchX)
- , nStretchY(_nStretchY)
+ , mnStretchX(nStretchX)
+ , mnStretchY(nStretchY)
, nPaperWidth(nPW)
{
}
diff --git a/editeng/source/editeng/editobj2.hxx
b/editeng/source/editeng/editobj2.hxx
index 250341fd4283..86a2e379be20 100644
--- a/editeng/source/editeng/editobj2.hxx
+++ b/editeng/source/editeng/editobj2.hxx
@@ -94,12 +94,12 @@ class XParaPortionList
ListType maList;
VclPtr<OutputDevice> pRefDevPtr;
- sal_uInt16 nStretchX;
- sal_uInt16 nStretchY;
+ double mnStretchX;
+ double mnStretchY;
sal_uInt32 nPaperWidth;
public:
- XParaPortionList(OutputDevice* pRefDev, sal_uInt32 nPW, sal_uInt16
_nStretchX, sal_uInt16 _nStretchY);
+ XParaPortionList(OutputDevice* pRefDev, sal_uInt32 nPW, double nStretchX,
double nStretchY);
void push_back(XParaPortion* p);
const XParaPortion& operator[](size_t i) const;
@@ -108,8 +108,8 @@ public:
sal_uInt32 GetPaperWidth() const { return nPaperWidth; }
bool RefDevIsVirtual() const {return
pRefDevPtr->IsVirtual();}
const MapMode& GetRefMapMode() const { return
pRefDevPtr->GetMapMode(); }
- sal_uInt16 GetStretchX() const { return nStretchX; }
- sal_uInt16 GetStretchY() const { return nStretchY; }
+ double GetStretchX() const { return mnStretchX; }
+ double GetStretchY() const { return mnStretchY; }
};
class ContentInfo
diff --git a/editeng/source/editeng/impedit.hxx
b/editeng/source/editeng/impedit.hxx
index b761e3bc4135..20e116b2ab3f 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -528,8 +528,8 @@ private:
Color maBackgroundColor;
- sal_uInt16 nStretchX;
- sal_uInt16 nStretchY;
+ double mnStretchX;
+ double mnStretchY;
CharCompressType nAsianCompressionMode;
@@ -1080,8 +1080,8 @@ public:
SvxCellJustifyMethod GetJustifyMethod( sal_Int32 nPara ) const;
SvxCellVerJustify GetVerJustification( sal_Int32 nPara ) const;
- void SetCharStretching( sal_uInt16 nX, sal_uInt16 nY );
- inline void GetCharStretching( sal_uInt16& rX, sal_uInt16& rY )
const;
+ void SetCharStretching(double nX, double nY);
+ inline void GetCharStretching(double& rX, double& rY) const;
sal_Int32 GetBigTextObjectStart() const
{ return nBigTextObjectStart; }
@@ -1282,43 +1282,43 @@ inline ParaPortion* ImpEditEngine::FindParaPortion(
ContentNode const * pNode )
return GetParaPortions()[ nPos ];
}
-inline void ImpEditEngine::GetCharStretching( sal_uInt16& rX, sal_uInt16& rY )
const
+inline void ImpEditEngine::GetCharStretching(double& rX, double& rY) const
{
- rX = nStretchX;
- rY = nStretchY;
+ rX = mnStretchX;
+ rY = mnStretchY;
}
inline short ImpEditEngine::GetXValue( short nXValue ) const
{
- if ( !aStatus.DoStretch() || ( nStretchX == 100 ) )
+ if ( !aStatus.DoStretch() || ( mnStretchX == 100.0 ) )
return nXValue;
- return static_cast<short>(static_cast<tools::Long>(nXValue)*nStretchX/100);
+ return short(double(nXValue) * mnStretchX / 100.0);
}
inline tools::Long ImpEditEngine::GetXValue( tools::Long nXValue ) const
{
- if ( !aStatus.DoStretch() || ( nStretchX == 100 ) )
+ if ( !aStatus.DoStretch() || ( mnStretchX == 100.0 ) )
return nXValue;
- return nXValue*nStretchX/100;
+ return nXValue * mnStretchX / 100.0;
}
inline short ImpEditEngine::GetYValue( short nYValue ) const
{
- if ( !aStatus.DoStretch() || ( nStretchY == 100 ) )
+ if ( !aStatus.DoStretch() || ( mnStretchY == 100.0 ) )
return nYValue;
- return static_cast<short>(static_cast<tools::Long>(nYValue)*nStretchY/100);
+ return short(double(nYValue) * mnStretchY / 100.0);
}
inline sal_uInt16 ImpEditEngine::GetYValue( sal_uInt16 nYValue ) const
{
- if ( !aStatus.DoStretch() || ( nStretchY == 100 ) )
+ if ( !aStatus.DoStretch() || ( mnStretchY == 100.0 ) )
return nYValue;
- return
static_cast<sal_uInt16>(static_cast<tools::Long>(nYValue)*nStretchY/100);
+ return sal_uInt16(double(nYValue) * mnStretchY / 100.0);
}
inline PointerStyle ImpEditView::GetPointer()
diff --git a/editeng/source/editeng/impedit2.cxx
b/editeng/source/editeng/impedit2.cxx
index 455587bac4a6..c7df8af33337 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -98,8 +98,8 @@ ImpEditEngine::ImpEditEngine( EditEngine* pEE, SfxItemPool*
pItemPool ) :
pUndoManager(nullptr),
aWordDelimiters(" .,;:-`'?!_=\"{}()[]"),
maBackgroundColor(COL_AUTO),
- nStretchX(100),
- nStretchY(100),
+ mnStretchX(100.0),
+ mnStretchY(100.0),
nAsianCompressionMode(CharCompressType::NONE),
eDefaultHorizontalTextDirection(EEHorizontalTextDirection::Default),
nBigTextObjectStart(20),
diff --git a/editeng/source/editeng/impedit3.cxx
b/editeng/source/editeng/impedit3.cxx
index bdaab8a970bc..549d139e335f 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -1050,8 +1050,8 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara,
sal_uInt32 nStartPosY )
// Search for Tab-Pos...
tools::Long nCurPos = nTmpWidth+nStartX;
// consider scaling
- if ( aStatus.DoStretch() && ( nStretchX != 100 ) )
- nCurPos =
nCurPos*100/std::max(static_cast<sal_Int32>(nStretchX),
static_cast<sal_Int32>(1));
+ if ( aStatus.DoStretch() && ( mnStretchX != 100.0 ) )
+ nCurPos = nCurPos * 100.0 / std::max(mnStretchX,
1.0);
short nAllSpaceBeforeText = static_cast< short
>(rLRItem.GetTextLeft()/* + rLRItem.GetTextLeft()*/ +
nSpaceBeforeAndMinLabelWidth);
aCurrentTab.aTabStop =
pNode->GetContentAttribs().FindTabStop( nCurPos - nAllSpaceBeforeText
/*rLRItem.GetTextLeft()*/, aEditDoc.GetDefTab() );
@@ -2982,22 +2982,21 @@ void ImpEditEngine::SeekCursor( ContentNode* pNode,
sal_Int32 nPos, SvxFont& rFo
if ( aStatus.DoStretch() )
{
- if ( nStretchY != 100 )
+ if (mnStretchY != 100.0)
{
- aRealSz.setHeight( aRealSz.Height() * nStretchY );
- aRealSz.setHeight( aRealSz.Height() / 100 );
+ aRealSz.setHeight(aRealSz.Height() * mnStretchY);
+ aRealSz.setHeight(aRealSz.Height() / 100.0);
}
- if ( nStretchX != 100 )
+ if (mnStretchX != 100.0)
{
- if ( nStretchX == nStretchY &&
- nRelWidth == 100 )
+ if (mnStretchX == mnStretchY && nRelWidth == 100 )
{
aRealSz.setWidth( 0 );
}
else
{
- aRealSz.setWidth( aRealSz.Width() * nStretchX );
- aRealSz.setWidth( aRealSz.Width() / 100 );
+ aRealSz.setWidth(aRealSz.Width() * mnStretchX);
+ aRealSz.setWidth(aRealSz.Width() / 100.0);
// Also the Kerning: (long due to handle Interim results)
tools::Long nKerning = rFont.GetFixKerning();
@@ -3012,16 +3011,16 @@ void ImpEditEngine::SeekCursor( ContentNode* pNode,
sal_Int32 nPos, SvxFont& rFo
>0 >100 > (Proportional)
<0 >100 < (The amount, thus disproportional)
*/
- if ( ( nKerning < 0 ) && ( nStretchX > 100 ) )
+ if (nKerning < 0 && mnStretchX > 100.0)
{
// disproportional
nKerning *= 100;
- nKerning /= nStretchX;
+ nKerning /= mnStretchX;
}
else if ( nKerning )
{
// Proportional
- nKerning *= nStretchX;
+ nKerning *= mnStretchX;
nKerning /= 100;
}
rFont.SetFixKerning( static_cast<short>(nKerning) );
@@ -4428,20 +4427,20 @@ void ImpEditEngine::SetFlatMode( bool bFlat )
pActiveView->ShowCursor();
}
-void ImpEditEngine::SetCharStretching( sal_uInt16 nX, sal_uInt16 nY )
+void ImpEditEngine::SetCharStretching(double nX, double nY)
{
bool bChanged;
if ( !IsEffectivelyVertical() )
{
- bChanged = nStretchX!=nX || nStretchY!=nY;
- nStretchX = nX;
- nStretchY = nY;
+ bChanged = mnStretchX != nX || mnStretchY != nY;
+ mnStretchX = nX;
+ mnStretchY = nY;
}
else
{
- bChanged = nStretchX!=nY || nStretchY!=nX;
- nStretchX = nY;
- nStretchY = nX;
+ bChanged = mnStretchX != nY || mnStretchY != nX;
+ mnStretchX = nY;
+ mnStretchY = nX;
}
if (bChanged && aStatus.DoStretch())
diff --git a/editeng/source/editeng/impedit4.cxx
b/editeng/source/editeng/impedit4.cxx
index ee9ebe89ff2e..251ac536b46c 100644
--- a/editeng/source/editeng/impedit4.cxx
+++ b/editeng/source/editeng/impedit4.cxx
@@ -1083,7 +1083,7 @@ std::unique_ptr<EditTextObject>
ImpEditEngine::CreateTextObject( EditSelection a
// sleeper set up when Olli paragraphs not hacked!
if ( bAllowBigObjects && bOnlyFullParagraphs && IsFormatted() &&
IsUpdateLayout() && ( nTextPortions >= nBigObjectStart ) )
{
- XParaPortionList* pXList = new XParaPortionList( GetRefDevice(),
GetColumnWidth(aPaperSize), nStretchX, nStretchY );
+ XParaPortionList* pXList = new XParaPortionList( GetRefDevice(),
GetColumnWidth(aPaperSize), mnStretchX, mnStretchY );
pTxtObj->SetPortionInfo(std::unique_ptr<XParaPortionList>(pXList));
for ( nNode = nStartNode; nNode <= nEndNode; nNode++ )
{
@@ -1169,8 +1169,8 @@ EditSelection ImpEditEngine::InsertTextObject( const
EditTextObject& rTextObject
if ( pPortionInfo && (
static_cast<tools::Long>(pPortionInfo->GetPaperWidth()) ==
GetColumnWidth(aPaperSize) )
&& ( pPortionInfo->GetRefMapMode() == GetRefDevice()->GetMapMode()
)
- && ( pPortionInfo->GetStretchX() == nStretchX )
- && ( pPortionInfo->GetStretchY() == nStretchY ) )
+ && ( pPortionInfo->GetStretchX() == sal_uInt16(mnStretchX))
+ && ( pPortionInfo->GetStretchY() == sal_uInt16(mnStretchY)) )
{
if ( (pPortionInfo->GetRefDevPtr() == GetRefDevice()) ||
(pPortionInfo->RefDevIsVirtual() && GetRefDevice()->IsVirtual()) )
diff --git a/editeng/source/outliner/outlin2.cxx
b/editeng/source/outliner/outlin2.cxx
index 951f6923563f..68b1d0fb802e 100644
--- a/editeng/source/outliner/outlin2.cxx
+++ b/editeng/source/outliner/outlin2.cxx
@@ -482,9 +482,8 @@ void Outliner::QuickFormatDoc()
pEditEngine->QuickFormatDoc();
}
-void Outliner::SetGlobalCharStretching( sal_uInt16 nX, sal_uInt16 nY )
+void Outliner::SetGlobalCharStretching(double nX, double nY)
{
-
// reset bullet size
sal_Int32 nParagraphs = pParaList->GetParagraphCount();
for ( sal_Int32 nPara = 0; nPara < nParagraphs; nPara++ )
@@ -497,9 +496,9 @@ void Outliner::SetGlobalCharStretching( sal_uInt16 nX,
sal_uInt16 nY )
pEditEngine->SetGlobalCharStretching( nX, nY );
}
-void Outliner::GetGlobalCharStretching( sal_uInt16& rX, sal_uInt16& rY ) const
+void Outliner::GetGlobalCharStretching(double& rX, double& rY) const
{
- pEditEngine->GetGlobalCharStretching( rX, rY );
+ pEditEngine->GetGlobalCharStretching(rX, rY);
}
void Outliner::EraseVirtualDevice()
diff --git a/editeng/source/outliner/outliner.cxx
b/editeng/source/outliner/outliner.cxx
index d7ea27662e77..f6b8feab3833 100644
--- a/editeng/source/outliner/outliner.cxx
+++ b/editeng/source/outliner/outliner.cxx
@@ -840,7 +840,7 @@ vcl::Font Outliner::ImpCalcBulletFont( sal_Int32 nPara )
const
}
// Use original scale...
- sal_uInt16 nStretchX, nStretchY;
+ double nStretchX, nStretchY;
GetGlobalCharStretching(nStretchX, nStretchY);
sal_uInt16 nScale = pFmt->GetBulletRelSize() * nStretchY / 100;
@@ -887,12 +887,10 @@ void Outliner::PaintBullet(sal_Int32 nPara, const Point&
rStartPos, const Point&
bool bRightToLeftPara = pEditEngine->IsRightToLeft( nPara );
tools::Rectangle aBulletArea( ImpCalcBulletArea( nPara, true, false ) );
- sal_uInt16 nStretchX, nStretchY;
+ double nStretchX, nStretchY;
GetGlobalCharStretching(nStretchX, nStretchY);
- aBulletArea = tools::Rectangle( Point(aBulletArea.Left()*nStretchX/100,
- aBulletArea.Top()),
- Size(aBulletArea.GetWidth()*nStretchX/100,
- aBulletArea.GetHeight()) );
+ aBulletArea = tools::Rectangle( Point(aBulletArea.Left() * nStretchX /
100.0, aBulletArea.Top()),
+ Size(aBulletArea.GetWidth() * nStretchX / 100.0,
aBulletArea.GetHeight()) );
Paragraph* pPara = pParaList->GetParagraph( nPara );
const SvxNumberFormat* pFmt = GetNumberFormat( nPara );
diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx
index 1252487de836..f5487e779a4b 100644
--- a/include/editeng/editeng.hxx
+++ b/include/editeng/editeng.hxx
@@ -414,8 +414,8 @@ public:
void QuickDelete( const ESelection& rSel );
void QuickMarkToBeRepainted( sal_Int32 nPara );
- void SetGlobalCharStretching( sal_uInt16 nX, sal_uInt16 nY );
- void GetGlobalCharStretching( sal_uInt16& rX, sal_uInt16& rY )
const;
+ void SetGlobalCharStretching(double nX, double nY);
+ void GetGlobalCharStretching(double& rX, double& rY) const;
void SetEditTextObjectPool( SfxItemPool* pPool );
SfxItemPool* GetEditTextObjectPool() const;
diff --git a/include/editeng/outliner.hxx b/include/editeng/outliner.hxx
index 03acc7cdc633..c6d57f09a086 100644
--- a/include/editeng/outliner.hxx
+++ b/include/editeng/outliner.hxx
@@ -930,8 +930,8 @@ public:
bool IsTextPos( const Point& rPaperPos, sal_uInt16 nBorder );
bool IsTextPos( const Point& rPaperPos, sal_uInt16 nBorder,
bool* pbBulletPos );
- void SetGlobalCharStretching( sal_uInt16 nX = 100, sal_uInt16
nY = 100 );
- void GetGlobalCharStretching( sal_uInt16& rX, sal_uInt16& rY )
const;
+ void SetGlobalCharStretching(double nX = 100.0, double nY =
100.0);
+ void GetGlobalCharStretching(double& rX, double& rY) const;
void EraseVirtualDevice();
bool ShouldCreateBigTextObject() const;
diff --git a/sd/source/ui/view/drtxtob.cxx b/sd/source/ui/view/drtxtob.cxx
index b10af08289fa..d8503d0412f7 100644
--- a/sd/source/ui/view/drtxtob.cxx
+++ b/sd/source/ui/view/drtxtob.cxx
@@ -165,7 +165,7 @@ void TextObjectBar::GetAttrState( SfxItemSet& rSet )
case SID_ATTR_CHAR_STRIKEOUT:
case SID_ATTR_CHAR_CASEMAP:
{
- sal_uInt16 stretchX = 100;
+ double stretchX = 100.0;
SvxScriptSetItem aSetItem( nSlotId, GetPool() );
aSetItem.GetItemSet().Put( aAttrSet, false );
@@ -183,9 +183,9 @@ void TextObjectBar::GetAttrState( SfxItemSet& rSet )
if (OutlineView* pOView =
dynamic_cast<OutlineView*>(mpView))
pOLV =
pOView->GetViewByWindow(mpViewShell->GetActiveWindow());
- sal_uInt16 stretchY = 100;
+ double stretchY = 100.0;
if( pOutliner )
- pOutliner->GetGlobalCharStretching( stretchX, stretchY
);
+ pOutliner->GetGlobalCharStretching(stretchX, stretchY);
if(pOLV && !pOLV->GetSelection().HasRange())
{
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index fa4dc437ba0b..87fc7d49ad59 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -923,56 +923,88 @@ void SdrTextObj::ImpSetCharStretching(SdrOutliner&
rOutliner, const Size& rTextS
tools::Long nXTolMi=nWantWdt/25; // tolerance: -4%
tools::Long nXCorr =nWantWdt/20; // correction scale: 5%
- tools::Long nX=(nWantWdt*100) /nIsWdt; // calculate X stretching
- tools::Long nY=(nWantHgt*100) /nIsHgt; // calculate Y stretching
+ double nX = (nWantWdt * 100.0) / double(nIsWdt); // calculate X stretching
+ double nY = (nWantHgt * 100.0) / double(nIsHgt); // calculate Y stretching
bool bChkX = true;
- if (bNoStretching) { // might only be possible proportionally
- if (nX>nY) { nX=nY; bChkX=false; }
- else { nY=nX; }
+ if (bNoStretching)
+ { // might only be possible proportionally
+ if (nX > nY)
+ {
+ nX = nY;
+ bChkX = false;
+ }
+ else
+ {
+ nY=nX;
+ }
}
- while (nLoopCount<5 && !bNoMoreLoop) {
- if (nX<0) nX=-nX;
- if (nX<1) { nX=1; bNoMoreLoop = true; }
- if (nX>65535) { nX=65535; bNoMoreLoop = true; }
+ while (nLoopCount<5 && !bNoMoreLoop)
+ {
+ if (nX < 0.0)
+ nX = -nX;
+ if (nX < 1.0)
+ {
+ nX = 1.0;
+ bNoMoreLoop = true;
+ }
+ if (nX > 65535.0)
+ {
+ nX = 65535.0;
+ bNoMoreLoop = true;
+ }
- if (nY<0) nY=-nY;
- if (nY<1) { nY=1; bNoMoreLoop = true; }
- if (nY>65535) { nY=65535; bNoMoreLoop = true; }
+ if (nY < 0.0)
+ {
+ nY = -nY;
+ }
+ if (nY < 1.0)
+ {
+ nY = 1.0;
+ bNoMoreLoop = true;
+ }
+ if (nY > 65535.0)
+ {
+ nY = 65535.0;
+ bNoMoreLoop = true;
+ }
// exception, there is no text yet (horizontal case)
- if(nIsWdt <= 1)
+ if (nIsWdt <= 1.0)
{
nX = nY;
bNoMoreLoop = true;
}
// exception, there is no text yet (vertical case)
- if(nIsHgt <= 1)
+ if (nIsHgt <= 1)
{
nY = nX;
bNoMoreLoop = true;
}
-
-
rOutliner.SetGlobalCharStretching(static_cast<sal_uInt16>(nX),static_cast<sal_uInt16>(nY));
+ rOutliner.SetGlobalCharStretching(nX, nY);
nLoopCount++;
Size aSiz(rOutliner.CalcTextSize());
- tools::Long nXDiff=aSiz.Width()-nWantWdt;
+ tools::Long nXDiff = aSiz.Width() - nWantWdt;
rFitXCorrection=Fraction(nWantWdt,aSiz.Width());
if (((nXDiff>=nXTolMi || !bChkX) && nXDiff<=nXTolPl) ||
nXDiff==nXDiff0) {
bNoMoreLoop = true;
} else {
// correct stretching factors
- tools::Long nMul=nWantWdt;
- tools::Long nDiv=aSiz.Width();
- if (std::abs(nXDiff)<=2*nXCorr) {
- if (nMul>nDiv) nDiv+=(nMul-nDiv)/2; // but only add half of
what we calculated,
- else nMul+=(nDiv-nMul)/2; // because the EditEngine
calculates wrongly later on
+ tools::Long nMul = nWantWdt;
+ tools::Long nDiv = aSiz.Width();
+ if (std::abs(nXDiff) <= 2 * nXCorr)
+ {
+ if (nMul > nDiv)
+ nDiv += (nMul - nDiv) / 2.0; // but only add half of what
we calculated,
+ else
+ nMul += (nDiv - nMul) / 2.0;// because the EditEngine
calculates wrongly later on
}
- nX=nX*nMul/nDiv;
- if (bNoStretching) nY=nX;
+ nX = nX * nMul / nDiv;
+ if (bNoStretching)
+ nY = nX;
}
- nXDiff0=nXDiff;
+ nXDiff0 = nXDiff;
}
}
@@ -1140,7 +1172,7 @@ void SdrTextObj::ImpInitDrawOutliner( SdrOutliner& rOutl
) const
nOutlinerMode = OutlinerMode::TextObject;
rOutl.Init( nOutlinerMode );
- rOutl.SetGlobalCharStretching();
+ rOutl.SetGlobalCharStretching(100.0, 100.0);
EEControlBits nStat=rOutl.GetControlWord();
nStat &=
~EEControlBits(EEControlBits::STRETCHING|EEControlBits::AUTOPAGESIZE);
rOutl.SetControlWord(nStat);
@@ -1204,8 +1236,8 @@ sal_uInt16 SdrTextObj::GetFontScaleY() const
// This eventually calls ImpAutoFitText
UpdateOutlinerFormatting(rOutliner, o3tl::temporary(tools::Rectangle()));
- sal_uInt16 nStretchY;
- rOutliner.GetGlobalCharStretching(o3tl::temporary(sal_uInt16()),
nStretchY);
+ double nStretchY;
+ rOutliner.GetGlobalCharStretching(o3tl::temporary(double()), nStretchY);
return nStretchY;
}
@@ -1225,7 +1257,8 @@ void SdrTextObj::ImpAutoFitText(SdrOutliner& rOutliner,
const Size& rTextSize,
// line-breaking text that we need some more samples
// loop early-exits if we detect an already attained value
- sal_uInt16 nMinStretchX=0, nMinStretchY=0;
+ double nMinStretchX = 0.0;
+ double nMinStretchY = 0.0;
sal_uInt16 aOldStretchXVals[]={0,0,0,0,0,0,0,0,0,0};
const size_t aStretchArySize=SAL_N_ELEMENTS(aOldStretchXVals);
for(unsigned int i=0; i<aStretchArySize; ++i)
@@ -1250,15 +1283,15 @@ void SdrTextObj::ImpAutoFitText(SdrOutliner& rOutliner,
const Size& rTextSize,
// - bulleted words will have to go through more iterations
fFactor = std::sqrt(fFactor);
- sal_uInt16 nCurrStretchX, nCurrStretchY;
+ double nCurrStretchX, nCurrStretchY;
rOutliner.GetGlobalCharStretching(nCurrStretchX, nCurrStretchY);
if (fFactor >= 1.0 )
{
// resulting text area fits into available shape rect -
// err on the larger stretching, to optimally fill area
- nMinStretchX = std::max(nMinStretchX,nCurrStretchX);
- nMinStretchY = std::max(nMinStretchY,nCurrStretchY);
+ nMinStretchX = std::max(nMinStretchX, nCurrStretchX);
+ nMinStretchY = std::max(nMinStretchY, nCurrStretchY);
}
aOldStretchXVals[i] = nCurrStretchX;
@@ -1267,10 +1300,10 @@ void SdrTextObj::ImpAutoFitText(SdrOutliner& rOutliner,
const Size& rTextSize,
if (fFactor < 1.0 || nCurrStretchX != 100)
{
- nCurrStretchX =
sal::static_int_cast<sal_uInt16>(nCurrStretchX*fFactor);
- nCurrStretchY =
sal::static_int_cast<sal_uInt16>(nCurrStretchY*fFactor);
-
rOutliner.SetGlobalCharStretching(std::min(sal_uInt16(100),nCurrStretchX),
-
std::min(sal_uInt16(100),nCurrStretchY));
+ nCurrStretchX = nCurrStretchX * fFactor;
+ nCurrStretchY = nCurrStretchY * fFactor;
+
+ rOutliner.SetGlobalCharStretching(std::min(100.0, nCurrStretchX),
std::min(100.0, nCurrStretchY));
SAL_INFO("svx", "zoom is " << nCurrStretchX);
}
}
@@ -1283,8 +1316,7 @@ void SdrTextObj::ImpAutoFitText(SdrOutliner& rOutliner,
const Size& rTextSize,
}
SAL_INFO("svx", "final zoom is " << nMinStretchX);
- rOutliner.SetGlobalCharStretching(std::min(sal_uInt16(100),nMinStretchX),
- std::min(sal_uInt16(100),nMinStretchY));
+ rOutliner.SetGlobalCharStretching(std::min(100.0, nMinStretchX),
std::min(100.0, nMinStretchY));
}
void SdrTextObj::SetupOutlinerFormatting( SdrOutliner& rOutl,
tools::Rectangle& rPaintRect ) const
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx
b/svx/source/svdraw/svdotextdecomposition.cxx
index 0c8928891231..c6b2a8e1e964 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -1223,7 +1223,7 @@ void SdrTextObj::impDecomposeStretchTextPrimitive(
// to layout without mirroring
const double fScaleX(fabs(aScale.getX()) / aOutlinerScale.getX());
const double fScaleY(fabs(aScale.getY()) / aOutlinerScale.getY());
- rOutliner.SetGlobalCharStretching(static_cast<sal_Int16>(FRound(fScaleX *
100.0)), static_cast<sal_Int16>(FRound(fScaleY * 100.0)));
+ rOutliner.SetGlobalCharStretching(fScaleX * 100.0, fScaleY * 100.0);
// When mirroring in X and Y,
// move the null point which was top left to bottom right.
commit 8865a3ada97319f5ed78f8f70552645fc8a928ee
Author: Tomaž Vajngerl <[email protected]>
AuthorDate: Tue Oct 25 21:04:27 2022 +0200
Commit: Tomaž Vajngerl <[email protected]>
CommitDate: Wed Oct 26 13:09:11 2022 +0200
svx: SdrTextObj maRect - use getter and add funcs. for maipulation
Change-Id: I0a416fa2ac470650c2ef430dbb91bf8d5a8013cd
diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx
index 6041a74fe0aa..4446989a7e1c 100644
--- a/include/svx/svdotext.hxx
+++ b/include/svx/svdotext.hxx
@@ -165,7 +165,32 @@ protected:
// The "aRect" is also the rect of RectObj and CircObj.
// When mbTextFrame=true the text will be formatted into this rect
// When mbTextFrame=false the text will be centered around its middle
- tools::Rectangle maRect;
+ tools::Rectangle maRectangle;
+
+ tools::Rectangle const& getRectangle() const
+ {
+ return maRectangle;
+ }
+
+ void setRectangle(tools::Rectangle const& rRectangle)
+ {
+ maRectangle = rRectangle;
+ }
+
+ void setRectangleSize(sal_Int32 nWidth, sal_Int32 nHeight)
+ {
+ maRectangle.SetSize(Size(nWidth, nHeight));
+ }
+
+ void moveRectangle(sal_Int32 nXDelta, sal_Int32 nYDelta)
+ {
+ maRectangle.Move(nXDelta, nYDelta);
+ }
+
+ void moveRectanglePosition(sal_Int32 nX, sal_Int32 nY)
+ {
+ maRectangle.SetPos(Point(nX, nY));
+ }
// The GeoStat contains the rotation and shear angles
GeoStat maGeo;
diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx
index 44ecb8fefded..a6a56f417e6d 100644
--- a/svx/source/svdraw/svdoashp.cxx
+++ b/svx/source/svdraw/svdoashp.cxx
@@ -1397,7 +1397,7 @@ void SdrObjCustomShape::AdaptTextMinSize()
// check if we need to change anything before creating an SfxItemSet,
because that is expensive
const bool
bResizeShapeToFitText(GetObjectItem(SDRATTR_TEXT_AUTOGROWHEIGHT).GetValue());
- tools::Rectangle aTextBound(maRect);
+ tools::Rectangle aTextBound(getRectangle());
bool bChanged(false);
if(bResizeShapeToFitText)
bChanged = true;
@@ -1432,10 +1432,11 @@ void SdrObjCustomShape::AdaptTextMinSize()
SetObjectItemSet(aSet);
}
-void SdrObjCustomShape::NbcSetSnapRect( const tools::Rectangle& rRect )
+void SdrObjCustomShape::NbcSetSnapRect(const tools::Rectangle& rRectangle)
{
- maRect = rRect;
- ImpJustifyRect(maRect);
+ tools::Rectangle aRectangle(rRectangle);
+ ImpJustifyRect(aRectangle);
+ setRectangle(aRectangle);
InvalidateRenderGeometry();
AdaptTextMinSize();
@@ -1455,10 +1456,11 @@ void SdrObjCustomShape::SetSnapRect( const
tools::Rectangle& rRect )
SendUserCall(SdrUserCallType::Resize,aBoundRect0);
}
-void SdrObjCustomShape::NbcSetLogicRect( const tools::Rectangle& rRect )
+void SdrObjCustomShape::NbcSetLogicRect(const tools::Rectangle& rRectangle)
{
- maRect = rRect;
- ImpJustifyRect(maRect);
+ tools::Rectangle aRectangle(rRectangle);
+ ImpJustifyRect(aRectangle);
+ setRectangle(aRectangle);
InvalidateRenderGeometry();
AdaptTextMinSize();
@@ -1515,7 +1517,7 @@ void SdrObjCustomShape::NbcMove( const Size& rSiz )
void SdrObjCustomShape::NbcResize( const Point& rRef, const Fraction& rxFact,
const Fraction& ryFact )
{
// taking care of handles that should not been changed
- tools::Rectangle aOld( maRect );
+ tools::Rectangle aOld(getRectangle());
std::vector< SdrCustomShapeInteraction > aInteractionHandles(
GetInteractionHandles() );
SdrTextObj::NbcResize( rRef, rxFact, ryFact );
@@ -1543,17 +1545,17 @@ void SdrObjCustomShape::NbcResize( const Point& rRef,
const Fraction& rxFact, co
rInteraction.xInteraction->setControllerPosition(
rInteraction.aPosition );
if ( rInteraction.nMode &
CustomShapeHandleModes::RESIZE_ABSOLUTE_X )
{
- sal_Int32 nX = ( rInteraction.aPosition.X - aOld.Left() ) +
maRect.Left();
+ sal_Int32 nX = ( rInteraction.aPosition.X - aOld.Left() ) +
getRectangle().Left();
rInteraction.xInteraction->setControllerPosition(awt::Point(nX,
rInteraction.xInteraction->getPosition().Y));
}
else if ( rInteraction.nMode &
CustomShapeHandleModes::RESIZE_ABSOLUTE_NEGX )
{
- sal_Int32 nX = maRect.Right() - (aOld.Right() -
rInteraction.aPosition.X);
+ sal_Int32 nX = getRectangle().Right() - (aOld.Right() -
rInteraction.aPosition.X);
rInteraction.xInteraction->setControllerPosition(awt::Point(nX,
rInteraction.xInteraction->getPosition().Y));
}
if ( rInteraction.nMode &
CustomShapeHandleModes::RESIZE_ABSOLUTE_Y )
{
- sal_Int32 nY = ( rInteraction.aPosition.Y - aOld.Top() ) +
maRect.Top();
+ sal_Int32 nY = ( rInteraction.aPosition.Y - aOld.Top() ) +
getRectangle().Top();
rInteraction.xInteraction->setControllerPosition(awt::Point(rInteraction.xInteraction->getPosition().X,
nY));
}
}
@@ -1598,7 +1600,7 @@ void SdrObjCustomShape::NbcRotate( const Point& rRef,
Degree100 nAngle, double s
// the rotation angle for ashapes is stored in fObjectRotation, this
rotation
// has to be applied to the text object (which is internally using
maGeo.nAngle).
- SdrTextObj::NbcRotate( maRect.TopLeft(), -maGeo.nRotationAngle, //
retrieving the unrotated text object
+ SdrTextObj::NbcRotate( getRectangle().TopLeft(), -maGeo.nRotationAngle,
// retrieving the unrotated text object
-maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle );
maGeo.nRotationAngle = 0_deg100;
// resetting aGeo data
@@ -1612,7 +1614,7 @@ void SdrObjCustomShape::NbcRotate( const Point& rRef,
Degree100 nAngle, double s
nW = nW % 36000_deg100;
if ( nW < 0_deg100 )
nW = 36000_deg100 + nW;
- SdrTextObj::NbcRotate( maRect.TopLeft(), nW, //
applying text rotation
+ SdrTextObj::NbcRotate( getRectangle().TopLeft(), nW,
// applying text rotation
sin( toRadians(nW) ),
cos( toRadians(nW) ) );
@@ -1723,14 +1725,18 @@ SdrGluePoint
SdrObjCustomShape::GetVertexGluePoint(sal_uInt16 nPosNum) const
}
Point aPt;
- switch (nPosNum) {
- case 0: aPt=maRect.TopCenter(); aPt.AdjustY( -nWdt ); break;
- case 1: aPt=maRect.RightCenter(); aPt.AdjustX(nWdt ); break;
- case 2: aPt=maRect.BottomCenter(); aPt.AdjustY(nWdt ); break;
- case 3: aPt=maRect.LeftCenter(); aPt.AdjustX( -nWdt ); break;
- }
- if (maGeo.nShearAngle != 0_deg100) ShearPoint(aPt, maRect.TopLeft(),
maGeo.mfTanShearAngle);
- if (maGeo.nRotationAngle != 0_deg100) RotatePoint(aPt, maRect.TopLeft(),
maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle);
+ auto aRectangle = getRectangle();
+ switch (nPosNum)
+ {
+ case 0: aPt = aRectangle.TopCenter(); aPt.AdjustY( -nWdt ); break;
+ case 1: aPt = aRectangle.RightCenter(); aPt.AdjustX(nWdt ); break;
+ case 2: aPt = aRectangle.BottomCenter(); aPt.AdjustY(nWdt ); break;
+ case 3: aPt = aRectangle.LeftCenter(); aPt.AdjustX( -nWdt ); break;
+ }
+ if (maGeo.nShearAngle != 0_deg100)
+ ShearPoint(aPt, aRectangle.TopLeft(), maGeo.mfTanShearAngle);
+ if (maGeo.nRotationAngle != 0_deg100)
+ RotatePoint(aPt, aRectangle.TopLeft(), maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
aPt-=GetSnapRect().Center();
SdrGluePoint aGP(aPt);
aGP.SetPercent(false);
@@ -1779,19 +1785,19 @@ void
SdrObjCustomShape::ImpCheckCustomGluePointsAreAdded()
if (maGeo.nRotationAngle || nShearAngle || bMirroredX || bMirroredY)
{
- tools::Polygon aPoly( maRect );
+ tools::Polygon aPoly(getRectangle());
if( nShearAngle )
{
sal_uInt16 nPointCount=aPoly.GetSize();
for (sal_uInt16 i=0; i<nPointCount; i++)
- ShearPoint(aPoly[i],maRect.Center(), fTan );
+ ShearPoint(aPoly[i], getRectangle().Center(), fTan );
}
if (maGeo.nRotationAngle)
- aPoly.Rotate( maRect.Center(), to<Degree10>(maGeo.nRotationAngle)
);
+ aPoly.Rotate( getRectangle().Center(),
to<Degree10>(maGeo.nRotationAngle) );
tools::Rectangle aBoundRect( aPoly.GetBoundRect() );
- sal_Int32 nXDiff = aBoundRect.Left() - maRect.Left();
- sal_Int32 nYDiff = aBoundRect.Top() - maRect.Top();
+ sal_Int32 nXDiff = aBoundRect.Left() - getRectangle().Left();
+ sal_Int32 nYDiff = aBoundRect.Top() - getRectangle().Top();
if (nShearAngle && bMirroredX != bMirroredY)
{
@@ -1799,7 +1805,7 @@ void SdrObjCustomShape::ImpCheckCustomGluePointsAreAdded()
fTan = -fTan;
}
- Point aRef( maRect.GetWidth() / 2, maRect.GetHeight() / 2 );
+ Point aRef( getRectangle().GetWidth() / 2, getRectangle().GetHeight()
/ 2 );
for ( a = 0; a < aNewList.GetCount(); a++ )
{
SdrGluePoint& rPoint = aNewList[ a ];
@@ -1810,9 +1816,9 @@ void SdrObjCustomShape::ImpCheckCustomGluePointsAreAdded()
RotatePoint(aGlue, aRef, sin(basegfx::deg2rad(fObjectRotation)),
cos(basegfx::deg2rad(fObjectRotation)));
if ( bMirroredX )
- aGlue.setX( maRect.GetWidth() - aGlue.X() );
+ aGlue.setX( getRectangle().GetWidth() - aGlue.X() );
if ( bMirroredY )
- aGlue.setY( maRect.GetHeight() - aGlue.Y() );
+ aGlue.setY( getRectangle().GetHeight() - aGlue.Y() );
aGlue.AdjustX( -nXDiff );
aGlue.AdjustY( -nYDiff );
rPoint.SetPos( aGlue );
@@ -1937,7 +1943,7 @@ bool SdrObjCustomShape::beginSpecialDrag(SdrDragStat&
rDrag) const
void SdrObjCustomShape::DragResizeCustomShape( const tools::Rectangle&
rNewRect )
{
- tools::Rectangle aOld( maRect );
+ tools::Rectangle aOld(getRectangle());
bool bOldMirroredX( IsMirroredX() );
bool bOldMirroredY( IsMirroredY() );
@@ -1947,7 +1953,7 @@ void SdrObjCustomShape::DragResizeCustomShape( const
tools::Rectangle& rNewRect
std::vector< SdrCustomShapeInteraction > aInteractionHandles(
GetInteractionHandles() );
GeoStat aGeoStat( GetGeoStat() );
- if ( aNewRect.TopLeft()!= maRect.TopLeft() &&
+ if ( aNewRect.TopLeft() != getRectangle().TopLeft() &&
( maGeo.nRotationAngle || maGeo.nShearAngle ) )
{
Point aNewPos( aNewRect.TopLeft() );
@@ -1955,7 +1961,7 @@ void SdrObjCustomShape::DragResizeCustomShape( const
tools::Rectangle& rNewRect
if ( maGeo.nRotationAngle ) RotatePoint(aNewPos, aOld.TopLeft(),
aGeoStat.mfSinRotationAngle, aGeoStat.mfCosRotationAngle );
aNewRect.SetPos( aNewPos );
}
- if ( aNewRect == maRect )
+ if (aNewRect == getRectangle())
return;
SetLogicRect( aNewRect );
@@ -1991,17 +1997,17 @@ void SdrObjCustomShape::DragResizeCustomShape( const
tools::Rectangle& rNewRect
{
nX = ( rInteraction.aPosition.X - aOld.Right() );
if ( rNewRect.Left() > rNewRect.Right() )
- nX = maRect.Left() - nX;
+ nX = getRectangle().Left() - nX;
else
- nX += maRect.Right();
+ nX += getRectangle().Right();
}
else
{
nX = ( rInteraction.aPosition.X - aOld.Left() );
if ( rNewRect.Left() > rNewRect.Right() )
- nX = maRect.Right() - nX;
+ nX = getRectangle().Right() - nX;
else
- nX += maRect.Left();
+ nX += getRectangle().Left();
}
rInteraction.xInteraction->setControllerPosition(awt::Point(nX,
rInteraction.xInteraction->getPosition().Y));
}
@@ -2012,17 +2018,17 @@ void SdrObjCustomShape::DragResizeCustomShape( const
tools::Rectangle& rNewRect
{
nY = ( rInteraction.aPosition.Y - aOld.Bottom() );
if ( rNewRect.Top() > rNewRect.Bottom() )
- nY = maRect.Top() - nY;
+ nY = getRectangle().Top() - nY;
else
- nY += maRect.Bottom();
+ nY += getRectangle().Bottom();
}
else
{
nY = ( rInteraction.aPosition.Y - aOld.Top() );
if ( rNewRect.Top() > rNewRect.Bottom() )
- nY = maRect.Bottom() - nY;
+ nY = getRectangle().Bottom() - nY;
else
- nY += maRect.Top();
+ nY += getRectangle().Top();
}
rInteraction.xInteraction->setControllerPosition(awt::Point(rInteraction.xInteraction->getPosition().X,
nY));
}
@@ -2052,7 +2058,7 @@ void SdrObjCustomShape::DragMoveCustomShapeHdl( const
Point& rDestination,
sal_Int32 nXDiff = aPt.X - aInteractionHandle.aPosition.X;
sal_Int32 nYDiff = aPt.Y - aInteractionHandle.aPosition.Y;
- maRect.Move( nXDiff, nYDiff );
+ moveRectangle(nXDiff, nYDiff);
moveOutRectangle(nXDiff, nYDiff);
maSnapRect.Move( nXDiff, nYDiff );
SetBoundAndSnapRectsDirty(/*bNotMyself*/true);
@@ -2134,12 +2140,12 @@ void SdrObjCustomShape::DragCreateObject( SdrDragStat&
rStat )
if ( !aInteractionHandles.empty() )
{
sal_Int32 nHandlePos = aInteractionHandles[
aInteractionHandles.size() - 1 ].xInteraction->getPosition().X;
- aRect1.Move( maRect.Left() - nHandlePos, 0 );
+ aRect1.Move(getRectangle().Left() - nHandlePos, 0);
}
}
ImpJustifyRect( aRect1 );
rStat.SetActionRect( aRect1 );
- maRect = aRect1;
+ setRectangle(aRect1);
SetBoundAndSnapRectsDirty();
for (const auto& rInteraction : aInteractionHandles)
@@ -2446,9 +2452,9 @@ tools::Rectangle
SdrObjCustomShape::ImpCalculateTextFrame( const bool bHgt, cons
{
tools::Rectangle aReturnValue;
- tools::Rectangle aOldTextRect( maRect ); // <- initial text
rectangle
+ tools::Rectangle aOldTextRect(getRectangle()); // <- initial text
rectangle
- tools::Rectangle aNewTextRect( maRect ); // <- new text rectangle
returned from the custom shape renderer,
+ tools::Rectangle aNewTextRect(getRectangle()); // <- new text
rectangle returned from the custom shape renderer,
GetTextBounds( aNewTextRect ); // it depends to the current
logical shape size
tools::Rectangle aAdjustedTextRect( aNewTextRect );
// <- new text rectangle is being tested by AdjustTextFrameWidthAndHeight
to ensure
@@ -2457,7 +2463,7 @@ tools::Rectangle
SdrObjCustomShape::ImpCalculateTextFrame( const bool bHgt, cons
if (aAdjustedTextRect != aNewTextRect && aOldTextRect !=
aAdjustedTextRect &&
aNewTextRect.GetWidth() && aNewTextRect.GetHeight())
{
- aReturnValue = maRect;
+ aReturnValue = getRectangle();
double fXScale = static_cast<double>(aOldTextRect.GetWidth()) /
static_cast<double>(aNewTextRect.GetWidth());
double fYScale = static_cast<double>(aOldTextRect.GetHeight()) /
static_cast<double>(aNewTextRect.GetHeight());
double fRightDiff = static_cast<double>( aAdjustedTextRect.Right()
- aNewTextRect.Right() ) * fXScale;
@@ -2476,7 +2482,7 @@ tools::Rectangle
SdrObjCustomShape::ImpCalculateTextFrame( const bool bHgt, cons
bool SdrObjCustomShape::NbcAdjustTextFrameWidthAndHeight(bool bHgt, bool bWdt)
{
tools::Rectangle aNewTextRect = ImpCalculateTextFrame(bHgt, bWdt);
- const bool bRet = !aNewTextRect.IsEmpty() && aNewTextRect != maRect;
+ const bool bRet = !aNewTextRect.IsEmpty() && aNewTextRect !=
getRectangle();
if (bRet && !mbAdjustingTextFrameWidthAndHeight)
{
mbAdjustingTextFrameWidthAndHeight = true;
@@ -2484,7 +2490,7 @@ bool
SdrObjCustomShape::NbcAdjustTextFrameWidthAndHeight(bool bHgt, bool bWdt)
// taking care of handles that should not been changed
std::vector< SdrCustomShapeInteraction > aInteractionHandles(
GetInteractionHandles() );
- maRect = aNewTextRect;
+ setRectangle(aNewTextRect);
SetBoundAndSnapRectsDirty();
SetChanged();
@@ -2509,7 +2515,7 @@ bool
SdrObjCustomShape::NbcAdjustTextFrameWidthAndHeight(bool bHgt, bool bWdt)
bool SdrObjCustomShape::AdjustTextFrameWidthAndHeight()
{
tools::Rectangle aNewTextRect = ImpCalculateTextFrame( true/*bHgt*/,
true/*bWdt*/ );
- bool bRet = !aNewTextRect.IsEmpty() && ( aNewTextRect != maRect );
+ bool bRet = !aNewTextRect.IsEmpty() && ( aNewTextRect != getRectangle());
if ( bRet )
{
tools::Rectangle aBoundRect0;
@@ -2519,7 +2525,7 @@ bool SdrObjCustomShape::AdjustTextFrameWidthAndHeight()
// taking care of handles that should not been changed
std::vector< SdrCustomShapeInteraction > aInteractionHandles(
GetInteractionHandles() );
- maRect = aNewTextRect;
+ setRectangle(aNewTextRect);
SetBoundAndSnapRectsDirty();
for (const auto& rInteraction : aInteractionHandles)
@@ -2887,8 +2893,8 @@ void SdrObjCustomShape::handlePageChange(SdrPage*
pOldPage, SdrPage* pNewPage)
// invalidating rectangles by SetRectsDirty is not sufficient,
// AdjustTextFrameWidthAndHeight() also has to be made, both
// actions are done by NbcSetSnapRect
- tools::Rectangle aTmp( maRect ); //creating temporary rectangle
#i61108#
- NbcSetSnapRect( aTmp );
+ tools::Rectangle aRectangle(getRectangle()); //creating temporary
rectangle #i61108#
+ NbcSetSnapRect(aRectangle);
}
}
@@ -3109,8 +3115,8 @@ bool
SdrObjCustomShape::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegf
double fRotate = basegfx::deg2rad(fObjectRotation);
double fShearX = toRadians(maGeo.nShearAngle);
- // get aRect, this is the unrotated snaprect
- tools::Rectangle aRectangle(maRect);
+ // get aRectangle, this is the unrotated snaprect
+ tools::Rectangle aRectangle(getRectangle());
bool bMirroredX = IsMirroredX();
bool bMirroredY = IsMirroredY();
@@ -3122,7 +3128,7 @@ bool
SdrObjCustomShape::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegf
if ( bMirroredX )
{
fShearX = -fShearX;
- tools::Polygon aPol = Rect2Poly(maRect, aNewGeo);
+ tools::Polygon aPol = Rect2Poly(getRectangle(), aNewGeo);
tools::Rectangle aBoundRect( aPol.GetBoundRect() );
Point aRef1( ( aBoundRect.Left() + aBoundRect.Right() ) >> 1,
aBoundRect.Top() );
@@ -3163,7 +3169,7 @@ bool
SdrObjCustomShape::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegf
aPol[2]=aPol0[3]; // it was *not* wrong even when the reordering
aPol[3]=aPol0[2]; // *seems* to be specific for X-Mirrorings. Oh
aPol[4]=aPol0[1]; // will I be happy when this old stuff is |gone|
with aw080 (!)
- Poly2Rect(aPol,aRectangle,aNewGeo);
+ Poly2Rect(aPol, aRectangle, aNewGeo);
}
}
diff --git a/svx/source/svdraw/svdocapt.cxx b/svx/source/svdraw/svdocapt.cxx
index 6a886272bad1..14e7678499c7 100644
--- a/svx/source/svdraw/svdocapt.cxx
+++ b/svx/source/svdraw/svdocapt.cxx
@@ -308,7 +308,7 @@ bool SdrCaptionObj::beginSpecialDrag(SdrDragStat& rDrag)
const
return false;
rDrag.SetNoSnap();
- rDrag.SetActionRect(maRect);
+ rDrag.SetActionRect(getRectangle());
Point aHit(rDrag.GetStart());
@@ -341,15 +341,15 @@ bool SdrCaptionObj::applySpecialDrag(SdrDragStat& rDrag)
}
else
{
- Point aDelt(rDrag.GetNow()-rDrag.GetStart());
+ Point aDelta(rDrag.GetNow()-rDrag.GetStart());
if(!pHdl)
{
- maRect.Move(aDelt.X(),aDelt.Y());
+ moveRectangle(aDelta.X(), aDelta.Y());
}
else
{
- aTailPoly[0] += aDelt;
+ aTailPoly[0] += aDelta;
}
ImpRecalcTail();
@@ -408,7 +408,7 @@ void SdrCaptionObj::ImpRecalcTail()
{
ImpCaptParams aPara;
ImpGetCaptParams(aPara);
- ImpCalcTail(aPara, aTailPoly, maRect);
+ ImpCalcTail(aPara, aTailPoly, getRectangle());
SetBoundAndSnapRectsDirty();
SetXPolyDirty();
}
@@ -511,14 +511,15 @@ void SdrCaptionObj::ImpCalcTail(const ImpCaptParams&
rPara, tools::Polygon& rPol
bool SdrCaptionObj::BegCreate(SdrDragStat& rStat)
{
- if (maRect.IsEmpty()) return false; // Create currently only works with
the given Rect
+ if (getRectangle().IsEmpty())
+ return false; // Create currently only works with the given Rect
ImpCaptParams aPara;
ImpGetCaptParams(aPara);
- maRect.SetPos(rStat.GetNow());
+ moveRectanglePosition(rStat.GetNow().X(), rStat.GetNow().Y());
aTailPoly[0]=rStat.GetStart();
- ImpCalcTail(aPara,aTailPoly,maRect);
- rStat.SetActionRect(maRect);
+ ImpCalcTail(aPara,aTailPoly, getRectangle());
+ rStat.SetActionRect(getRectangle());
return true;
}
@@ -526,9 +527,9 @@ bool SdrCaptionObj::MovCreate(SdrDragStat& rStat)
{
ImpCaptParams aPara;
ImpGetCaptParams(aPara);
- maRect.SetPos(rStat.GetNow());
- ImpCalcTail(aPara,aTailPoly,maRect);
- rStat.SetActionRect(maRect);
+ moveRectanglePosition(rStat.GetNow().X(), rStat.GetNow().Y());
+ ImpCalcTail(aPara,aTailPoly, getRectangle());
+ rStat.SetActionRect(getRectangle());
SetBoundRectDirty();
m_bSnapRectDirty=true;
return true;
@@ -538,8 +539,8 @@ bool SdrCaptionObj::EndCreate(SdrDragStat& rStat,
SdrCreateCmd eCmd)
{
ImpCaptParams aPara;
ImpGetCaptParams(aPara);
- maRect.SetPos(rStat.GetNow());
- ImpCalcTail(aPara,aTailPoly,maRect);
+ moveRectanglePosition(rStat.GetNow().X(), rStat.GetNow().Y());
+ ImpCalcTail(aPara,aTailPoly, getRectangle());
SetBoundAndSnapRectsDirty();
return (eCmd==SdrCreateCmd::ForceEnd || rStat.GetPointCount()>=2);
}
@@ -556,7 +557,7 @@ void SdrCaptionObj::BrkCreate(SdrDragStat& /*rStat*/)
basegfx::B2DPolyPolygon SdrCaptionObj::TakeCreatePoly(const SdrDragStat&
/*rDrag*/) const
{
basegfx::B2DPolyPolygon aRetval;
- const basegfx::B2DRange aRange
=vcl::unotools::b2DRectangleFromRectangle(maRect);
+ const basegfx::B2DRange aRange
=vcl::unotools::b2DRectangleFromRectangle(getRectangle());
aRetval.append(basegfx::utils::createPolygonFromRect(aRange));
aRetval.append(aTailPoly.getB2DPolygon());
return aRetval;
@@ -598,7 +599,7 @@ Point SdrCaptionObj::GetRelativePos() const
const tools::Rectangle& SdrCaptionObj::GetLogicRect() const
{
- return maRect;
+ return getRectangle();
}
void SdrCaptionObj::NbcSetLogicRect(const tools::Rectangle& rRect)
diff --git a/svx/source/svdraw/svdocirc.cxx b/svx/source/svdraw/svdocirc.cxx
index 1207548114bf..ab8bc58ddf85 100644
--- a/svx/source/svdraw/svdocirc.cxx
+++ b/svx/source/svdraw/svdocirc.cxx
@@ -312,14 +312,14 @@ basegfx::B2DPolygon SdrCircObj::ImpCalcXPolyCirc(const
SdrCircKind eCircleKind,
void SdrCircObj::RecalcXPoly()
{
- basegfx::B2DPolygon aPolyCirc(ImpCalcXPolyCirc(meCircleKind, maRect,
nStartAngle, nEndAngle));
+ basegfx::B2DPolygon aPolyCirc(ImpCalcXPolyCirc(meCircleKind,
getRectangle(), nStartAngle, nEndAngle));
mpXPoly = XPolygon(aPolyCirc);
}
OUString SdrCircObj::TakeObjNameSingul() const
{
TranslateId pID=STR_ObjNameSingulCIRC;
- if (maRect.GetWidth() == maRect.GetHeight() && maGeo.nShearAngle==0_deg100)
+ if (getRectangle().GetWidth() == getRectangle().GetHeight() &&
maGeo.nShearAngle == 0_deg100)
{
switch (meCircleKind) {
case SdrCircKind::Full: pID=STR_ObjNameSingulCIRC; break;
@@ -348,7 +348,7 @@ OUString SdrCircObj::TakeObjNameSingul() const
OUString SdrCircObj::TakeObjNamePlural() const
{
TranslateId pID=STR_ObjNamePluralCIRC;
- if (maRect.GetWidth() == maRect.GetHeight() && maGeo.nShearAngle==0_deg100)
+ if (getRectangle().GetWidth() == getRectangle().GetHeight() &&
maGeo.nShearAngle == 0_deg100)
{
switch (meCircleKind) {
case SdrCircKind::Full: pID=STR_ObjNamePluralCIRC; break;
@@ -376,7 +376,7 @@ rtl::Reference<SdrObject>
SdrCircObj::CloneSdrObject(SdrModel& rTargetModel) con
basegfx::B2DPolyPolygon SdrCircObj::TakeXorPoly() const
{
- const basegfx::B2DPolygon aCircPolygon(ImpCalcXPolyCirc(meCircleKind,
maRect, nStartAngle, nEndAngle));
+ const basegfx::B2DPolygon aCircPolygon(ImpCalcXPolyCirc(meCircleKind,
getRectangle(), nStartAngle, nEndAngle));
return basegfx::B2DPolyPolygon(aCircPolygon);
}
@@ -423,61 +423,61 @@ void SdrCircObj::AddToHdlList(SdrHdlList& rHdlList) const
Point aPnt;
SdrHdlKind eLocalKind(SdrHdlKind::Move);
sal_uInt32 nPNum(0);
-
+ tools::Rectangle aRectangle = getRectangle();
switch (nHdlNum)
{
case 0:
- aPnt = GetAnglePnt(maRect,nStartAngle);
+ aPnt = GetAnglePnt(aRectangle, nStartAngle);
eLocalKind = SdrHdlKind::Circle;
nPNum = 1;
break;
case 1:
- aPnt = GetAnglePnt(maRect,nEndAngle);
+ aPnt = GetAnglePnt(aRectangle, nEndAngle);
eLocalKind = SdrHdlKind::Circle;
nPNum = 2;
break;
case 2:
- aPnt = maRect.TopLeft();
+ aPnt = aRectangle.TopLeft();
eLocalKind = SdrHdlKind::UpperLeft;
break;
case 3:
- aPnt = maRect.TopCenter();
+ aPnt = aRectangle.TopCenter();
eLocalKind = SdrHdlKind::Upper;
break;
case 4:
- aPnt = maRect.TopRight();
+ aPnt = aRectangle.TopRight();
eLocalKind = SdrHdlKind::UpperRight;
break;
case 5:
- aPnt = maRect.LeftCenter();
+ aPnt = aRectangle.LeftCenter();
eLocalKind = SdrHdlKind::Left;
break;
case 6:
- aPnt = maRect.RightCenter();
+ aPnt = aRectangle.RightCenter();
eLocalKind = SdrHdlKind::Right;
break;
case 7:
- aPnt = maRect.BottomLeft();
+ aPnt = aRectangle.BottomLeft();
eLocalKind = SdrHdlKind::LowerLeft;
break;
case 8:
- aPnt = maRect.BottomCenter();
+ aPnt = aRectangle.BottomCenter();
eLocalKind = SdrHdlKind::Lower;
break;
case 9:
- aPnt = maRect.BottomRight();
+ aPnt = aRectangle.BottomRight();
eLocalKind = SdrHdlKind::LowerRight;
break;
}
if (maGeo.nShearAngle)
{
- ShearPoint(aPnt, maRect.TopLeft(), maGeo.mfTanShearAngle);
+ ShearPoint(aPnt, aRectangle.TopLeft(), maGeo.mfTanShearAngle);
}
if (maGeo.nRotationAngle)
{
- RotatePoint(aPnt, maRect.TopLeft(), maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
+ RotatePoint(aPnt, aRectangle.TopLeft(), maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
}
std::unique_ptr<SdrHdl> pH(new SdrHdl(aPnt,eLocalKind));
@@ -520,15 +520,15 @@ bool SdrCircObj::applySpecialDrag(SdrDragStat& rDrag)
Point aPt(rDrag.GetNow());
if (maGeo.nRotationAngle)
- RotatePoint(aPt,maRect.TopLeft(), -maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
+ RotatePoint(aPt, getRectangle().TopLeft(),
-maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle);
if (maGeo.nShearAngle)
- ShearPoint(aPt,maRect.TopLeft(), -maGeo.mfTanShearAngle);
+ ShearPoint(aPt, getRectangle().TopLeft(), -maGeo.mfTanShearAngle);
- aPt -= maRect.Center();
+ aPt -= getRectangle().Center();
- tools::Long nWdt = maRect.Right() - maRect.Left();
- tools::Long nHgt = maRect.Bottom() - maRect.Top();
+ tools::Long nWdt = getRectangle().Right() - getRectangle().Left();
+ tools::Long nHgt = getRectangle().Bottom() - getRectangle().Top();
if(nWdt>=nHgt)
{
@@ -696,7 +696,7 @@ bool SdrCircObj::BegCreate(SdrDragStat& rStat)
tools::Rectangle aRect1(rStat.GetStart(), rStat.GetNow());
aRect1.Normalize();
rStat.SetActionRect(aRect1);
- maRect = aRect1;
+ setRectangle(aRect1);
ImpSetCreateParams(rStat);
return true;
}
@@ -706,8 +706,8 @@ bool SdrCircObj::MovCreate(SdrDragStat& rStat)
ImpSetCreateParams(rStat);
ImpCircUser* pU=static_cast<ImpCircUser*>(rStat.GetUser());
rStat.SetActionRect(pU->aR);
- maRect = pU->aR; // for ObjName
- ImpJustifyRect(maRect);
+ setRectangle(pU->aR); // for ObjName
+ ImpJustifyRect(maRectangle);
nStartAngle=pU->nStart;
nEndAngle=pU->nEnd;
SetBoundRectDirty();
@@ -733,16 +733,18 @@ bool SdrCircObj::EndCreate(SdrDragStat& rStat,
SdrCreateCmd eCmd)
if (meCircleKind==SdrCircKind::Full) {
bRet=rStat.GetPointCount()>=2;
if (bRet) {
- maRect = pU->aR;
- ImpJustifyRect(maRect);
+ tools::Rectangle aRectangle(pU->aR);
+ ImpJustifyRect(aRectangle);
+ setRectangle(aRectangle);
}
} else {
rStat.SetNoSnap(rStat.GetPointCount()>=2);
rStat.SetOrtho4Possible(rStat.GetPointCount()<2);
bRet=rStat.GetPointCount()>=4;
if (bRet) {
- maRect = pU->aR;
- ImpJustifyRect(maRect);
+ tools::Rectangle aRectangle(pU->aR);
+ ImpJustifyRect(aRectangle);
+ setRectangle(aRectangle);
nStartAngle=pU->nStart;
nEndAngle=pU->nEnd;
}
@@ -809,7 +811,7 @@ PointerStyle SdrCircObj::GetCreatePointer() const
void SdrCircObj::NbcMove(const Size& aSize)
{
- maRect.Move(aSize);
+ moveRectangle(aSize.Width(), aSize.Height());
moveOutRectangle(aSize.Width(), aSize.Height());
maSnapRect.Move(aSize);
SetXPolyDirty();
@@ -880,9 +882,9 @@ void SdrCircObj::NbcMirror(const Point& rRef1, const Point&
rRef2)
Point aTmpPt1;
Point aTmpPt2;
if (bFreeMirr) { // some preparations for using an arbitrary axis of
reflection
- Point aCenter(maRect.Center());
- tools::Long nWdt=maRect.GetWidth()-1;
- tools::Long nHgt=maRect.GetHeight()-1;
+ Point aCenter(getRectangle().Center());
+ tools::Long nWdt = getRectangle().GetWidth() - 1;
+ tools::Long nHgt = getRectangle().GetHeight() - 1;
tools::Long nMaxRad=(std::max(nWdt,nHgt)+1) /2;
// starting point
double a = toRadians(nStartAngle);
@@ -898,13 +900,13 @@ void SdrCircObj::NbcMirror(const Point& rRef1, const
Point& rRef2)
aTmpPt2+=aCenter;
if (maGeo.nRotationAngle)
{
- RotatePoint(aTmpPt1, maRect.TopLeft(), maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
- RotatePoint(aTmpPt2, maRect.TopLeft(), maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
+ RotatePoint(aTmpPt1, getRectangle().TopLeft(),
maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle);
+ RotatePoint(aTmpPt2, getRectangle().TopLeft(),
maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle);
}
if (maGeo.nShearAngle)
{
- ShearPoint(aTmpPt1, maRect.TopLeft(), maGeo.mfTanShearAngle);
- ShearPoint(aTmpPt2, maRect.TopLeft(), maGeo.mfTanShearAngle);
+ ShearPoint(aTmpPt1, getRectangle().TopLeft(),
maGeo.mfTanShearAngle);
+ ShearPoint(aTmpPt2, getRectangle().TopLeft(),
maGeo.mfTanShearAngle);
}
}
SdrTextObj::NbcMirror(rRef1,rRef2);
@@ -914,16 +916,16 @@ void SdrCircObj::NbcMirror(const Point& rRef1, const
Point& rRef2)
// unrotate:
if (maGeo.nRotationAngle)
{
- RotatePoint(aTmpPt1, maRect.TopLeft(), -maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle); // -sin for reversion
- RotatePoint(aTmpPt2, maRect.TopLeft(), -maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle); // -sin for reversion
+ RotatePoint(aTmpPt1, getRectangle().TopLeft(),
-maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle); // -sin for reversion
+ RotatePoint(aTmpPt2, getRectangle().TopLeft(),
-maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle); // -sin for reversion
}
// unshear:
if (maGeo.nShearAngle)
{
- ShearPoint(aTmpPt1, maRect.TopLeft(), -maGeo.mfTanShearAngle); //
-tan for reversion
- ShearPoint(aTmpPt2, maRect.TopLeft(), -maGeo.mfTanShearAngle); //
-tan for reversion
+ ShearPoint(aTmpPt1, getRectangle().TopLeft(),
-maGeo.mfTanShearAngle); // -tan for reversion
+ ShearPoint(aTmpPt2, getRectangle().TopLeft(),
-maGeo.mfTanShearAngle); // -tan for reversion
}
- Point aCenter(maRect.Center());
+ Point aCenter(getRectangle().Center());
aTmpPt1-=aCenter;
aTmpPt2-=aCenter;
// because it's mirrored, the angles are swapped, too
@@ -971,37 +973,37 @@ static void Union(tools::Rectangle& rR, const Point& rP)
void SdrCircObj::TakeUnrotatedSnapRect(tools::Rectangle& rRect) const
{
- rRect = maRect;
+ rRect = getRectangle();
if (meCircleKind!=SdrCircKind::Full) {
- const Point aPntStart(GetAnglePnt(maRect,nStartAngle));
- const Point aPntEnd(GetAnglePnt(maRect,nEndAngle));
+ const Point aPntStart(GetAnglePnt(getRectangle(), nStartAngle));
+ const Point aPntEnd(GetAnglePnt(getRectangle(), nEndAngle));
Degree100 a=nStartAngle;
Degree100 e=nEndAngle;
- rRect.SetLeft(maRect.Right() );
- rRect.SetRight(maRect.Left() );
- rRect.SetTop(maRect.Bottom() );
- rRect.SetBottom(maRect.Top() );
+ rRect.SetLeft(getRectangle().Right() );
+ rRect.SetRight(getRectangle().Left() );
+ rRect.SetTop(getRectangle().Bottom() );
+ rRect.SetBottom(getRectangle().Top() );
Union(rRect,aPntStart);
Union(rRect,aPntEnd);
if ((a<=18000_deg100 && e>=18000_deg100) || (a>e && (a<=18000_deg100
|| e>=18000_deg100))) {
- Union(rRect,maRect.LeftCenter());
+ Union(rRect, getRectangle().LeftCenter());
}
if ((a<=27000_deg100 && e>=27000_deg100) || (a>e && (a<=27000_deg100
|| e>=27000_deg100))) {
- Union(rRect,maRect.BottomCenter());
+ Union(rRect, getRectangle().BottomCenter());
}
if (a>e) {
- Union(rRect,maRect.RightCenter());
+ Union(rRect, getRectangle().RightCenter());
}
if ((a<=9000_deg100 && e>=9000_deg100) || (a>e && (a<=9000_deg100 ||
e>=9000_deg100))) {
- Union(rRect,maRect.TopCenter());
+ Union(rRect, getRectangle().TopCenter());
}
if (meCircleKind==SdrCircKind::Section) {
- Union(rRect,maRect.Center());
+ Union(rRect, getRectangle().Center());
}
if (maGeo.nRotationAngle)
{
Point aDst(rRect.TopLeft());
- aDst-=maRect.TopLeft();
+ aDst -= getRectangle().TopLeft();
Point aDst0(aDst);
RotatePoint(aDst,Point(), maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
aDst-=aDst0;
@@ -1046,8 +1048,8 @@ void SdrCircObj::NbcSetSnapRect(const tools::Rectangle&
rRect)
NbcResize(maSnapRect.TopLeft(),Fraction(nWdt1,nWdt0),Fraction(nHgt1,nHgt0));
NbcMove(Size(rRect.Left()-aSR0.Left(),rRect.Top()-aSR0.Top()));
} else {
- maRect=rRect;
- ImpJustifyRect(maRect);
+ setRectangle(rRect);
+ ImpJustifyRect(maRectangle);
}
SetBoundAndSnapRectsDirty();
SetXPolyDirty();
@@ -1065,10 +1067,11 @@ sal_uInt32 SdrCircObj::GetSnapPointCount() const
Point SdrCircObj::GetSnapPoint(sal_uInt32 i) const
{
- switch (i) {
- case 1 : return GetAnglePnt(maRect,nStartAngle);
- case 2 : return GetAnglePnt(maRect,nEndAngle);
- default: return maRect.Center();
+ switch (i)
+ {
+ case 1 : return GetAnglePnt(getRectangle(), nStartAngle);
+ case 2 : return GetAnglePnt(getRectangle(), nEndAngle);
+ default: return getRectangle().Center();
}
}
@@ -1140,7 +1143,7 @@ void SdrCircObj::ImpSetCircInfoToAttr()
rtl::Reference<SdrObject> SdrCircObj::DoConvertToPolyObj(bool bBezier, bool
bAddText) const
{
const bool bFill(meCircleKind != SdrCircKind::Arc);
- const basegfx::B2DPolygon aCircPolygon(ImpCalcXPolyCirc(meCircleKind,
maRect, nStartAngle, nEndAngle));
+ const basegfx::B2DPolygon aCircPolygon(ImpCalcXPolyCirc(meCircleKind,
getRectangle(), nStartAngle, nEndAngle));
rtl::Reference<SdrObject> pRet =
ImpConvertMakeObj(basegfx::B2DPolyPolygon(aCircPolygon), bFill, bBezier);
if(bAddText)
diff --git a/svx/source/svdraw/svdoedge.cxx b/svx/source/svdraw/svdoedge.cxx
index f84ee128a6e0..81bb8bdf79af 100644
--- a/svx/source/svdraw/svdoedge.cxx
+++ b/svx/source/svdraw/svdoedge.cxx
@@ -1718,7 +1718,7 @@ void SdrEdgeObj::SetEdgeTrackPath( const
basegfx::B2DPolyPolygon& rPoly )
// #i110629# also set aRect and maSnapeRect depending on pEdgeTrack
const tools::Rectangle aPolygonBounds(pEdgeTrack->GetBoundRect());
- maRect = aPolygonBounds;
+ setRectangle(aPolygonBounds);
maSnapRect = aPolygonBounds;
}
}
@@ -2273,11 +2273,11 @@ void SdrEdgeObj::NbcSetSnapRect(const tools::Rectangle&
rRect)
if(aOld == rRect)
return;
- if (maRect.IsEmpty() && 0 == pEdgeTrack->GetPointCount())
+ if (getRectangle().IsEmpty() && 0 == pEdgeTrack->GetPointCount())
{
// #i110629# When initializing, do not scale on empty Rectangle; this
// will mirror the underlying text object (!)
- maRect = rRect;
+ setRectangle(rRect);
maSnapRect = rRect;
}
else
diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx
index 1c1be8a7a69a..00981a355e84 100644
--- a/svx/source/svdraw/svdograf.cxx
+++ b/svx/source/svdraw/svdograf.cxx
@@ -921,7 +921,7 @@ rtl::Reference<SdrObject>
SdrGrafObj::DoConvertToPolyObj(bool bBezier, bool bAdd
ImpSdrGDIMetaFileImport aFilter(
getSdrModelFromSdrObject(),
GetLayer(),
- maRect);
+ getRectangle());
rtl::Reference<SdrObjGroup> pGrp = new
SdrObjGroup(getSdrModelFromSdrObject());
if(aFilter.DoImport(aMtf, *pGrp->GetSubList(), 0))
@@ -933,13 +933,13 @@ rtl::Reference<SdrObject>
SdrGrafObj::DoConvertToPolyObj(bool bBezier, bool bAdd
if(aGeoStat.nShearAngle)
{
aGeoStat.RecalcTan();
- pGrp->NbcShear(maRect.TopLeft(), aGeoStat.nShearAngle,
aGeoStat.mfTanShearAngle, false);
+ pGrp->NbcShear(getRectangle().TopLeft(),
aGeoStat.nShearAngle, aGeoStat.mfTanShearAngle, false);
}
if(aGeoStat.nRotationAngle)
{
aGeoStat.RecalcSinCos();
- pGrp->NbcRotate(maRect.TopLeft(),
aGeoStat.nRotationAngle, aGeoStat.mfSinRotationAngle,
aGeoStat.mfCosRotationAngle);
+ pGrp->NbcRotate(getRectangle().TopLeft(),
aGeoStat.nRotationAngle, aGeoStat.mfSinRotationAngle,
aGeoStat.mfCosRotationAngle);
}
}
@@ -1105,7 +1105,7 @@ void SdrGrafObj::AdjustToMaxRect( const tools::Rectangle&
rMaxRect, bool bShrink
}
if( bShrinkOnly )
- aPos = maRect.TopLeft();
+ aPos = getRectangle().TopLeft();
aPos.AdjustX( -(aSize.Width() / 2) );
aPos.AdjustY( -(aSize.Height() / 2) );
diff --git a/svx/source/svdraw/svdomeas.cxx b/svx/source/svdraw/svdomeas.cxx
index 5e402646ef66..ee53dc085b32 100644
--- a/svx/source/svdraw/svdomeas.cxx
+++ b/svx/source/svdraw/svdomeas.cxx
@@ -698,7 +698,7 @@ void SdrMeasureObj::TakeUnrotatedSnapRect(tools::Rectangle&
rRect) const
aTextSize2.AdjustWidth( 1 ); aTextSize2.AdjustHeight( 1 ); // because of
the Rect-Ctor's odd behavior
rRect=tools::Rectangle(aTextPos,aTextSize2);
rRect.Normalize();
- const_cast<SdrMeasureObj*>(this)->maRect=rRect;
+ const_cast<SdrMeasureObj*>(this)->setRectangle(rRect);
if (aMPol.nTextAngle != maGeo.nRotationAngle) {
const_cast<SdrMeasureObj*>(this)->maGeo.nRotationAngle=aMPol.nTextAngle;
diff --git a/svx/source/svdraw/svdomedia.cxx b/svx/source/svdraw/svdomedia.cxx
index 421ead2fe082..08c6dd2ca095 100644
--- a/svx/source/svdraw/svdomedia.cxx
+++ b/svx/source/svdraw/svdomedia.cxx
@@ -241,7 +241,7 @@ void SdrMediaObj::AdjustToMaxRect( const tools::Rectangle&
rMaxRect, bool bShrin
}
if( bShrinkOnly )
- aPos = maRect.TopLeft();
+ aPos = getRectangle().TopLeft();
aPos.AdjustX( -(aSize.Width() / 2) );
aPos.AdjustY( -(aSize.Height() / 2) );
diff --git a/svx/source/svdraw/svdoole2.cxx b/svx/source/svdraw/svdoole2.cxx
index a5ebed7ce7ce..3661aa260d14 100644
--- a/svx/source/svdraw/svdoole2.cxx
+++ b/svx/source/svdraw/svdoole2.cxx
@@ -1476,8 +1476,8 @@ void SdrOle2Obj::ImpSetVisAreaSize()
MapUnit aMapUnit = VCLUnoHelper::UnoEmbed2VCLMapUnit(
mpImpl->mxObjRef->getMapUnit( GetAspect() ) );
Size aVisSize;
if (sal_Int32(aScaleWidth) != 0 && sal_Int32(aScaleHeight) != 0)
// avoid div by zero
- aVisSize = Size( static_cast<tools::Long>( Fraction(
maRect.GetWidth() ) / aScaleWidth ),
- static_cast<tools::Long>( Fraction(
maRect.GetHeight() ) / aScaleHeight ) );
+ aVisSize = Size( static_cast<tools::Long>( Fraction(
getRectangle().GetWidth() ) / aScaleWidth ),
+ static_cast<tools::Long>( Fraction(
getRectangle().GetHeight() ) / aScaleHeight ) );
aVisSize = OutputDevice::LogicToLogic(
aVisSize,
@@ -1503,18 +1503,15 @@ void SdrOle2Obj::ImpSetVisAreaSize()
// server changed VisArea to its liking and the VisArea is
different than the suggested one
// store the new value as given by the object
MapUnit aNewMapUnit = VCLUnoHelper::UnoEmbed2VCLMapUnit(
mpImpl->mxObjRef->getMapUnit( GetAspect() ) );
- maRect.SetSize(
- OutputDevice::LogicToLogic(
- aAcceptedVisArea.GetSize(),
- MapMode(aNewMapUnit),
- MapMode(getSdrModelFromSdrObject().GetScaleUnit())));
+ auto aSize =
OutputDevice::LogicToLogic(aAcceptedVisArea.GetSize(), MapMode(aNewMapUnit),
MapMode(getSdrModelFromSdrObject().GetScaleUnit()));
+ setRectangleSize(aSize.Width(), aSize.Height());
}
// make the new object area known to the client
// compared to the "else" branch aRect might have been changed by
the object and no additional scaling was applied
// WHY this -> OSL_ASSERT( pClient );
if( pClient )
- pClient->SetObjArea(maRect);
+ pClient->SetObjArea(getRectangle());
// we need a new replacement image as the object has resized itself
@@ -1535,7 +1532,7 @@ void SdrOle2Obj::ImpSetVisAreaSize()
{
if ( pClient )
{
- tools::Rectangle aScaleRect(maRect.TopLeft(),
aObjAreaSize);
+ tools::Rectangle aScaleRect(getRectangle().TopLeft(),
aObjAreaSize);
pClient->SetObjAreaAndScale( aScaleRect, aScaleWidth,
aScaleHeight);
}
else
@@ -1556,8 +1553,8 @@ void SdrOle2Obj::ImpSetVisAreaSize()
const MapUnit aMapUnit(
VCLUnoHelper::UnoEmbed2VCLMapUnit(
mpImpl->mxObjRef->getMapUnit(GetAspect())));
- const Point aTL( maRect.TopLeft() );
- const Point aBR( maRect.BottomRight() );
+ const Point aTL( getRectangle().TopLeft() );
+ const Point aBR( getRectangle().BottomRight() );
const Point aTL2(
OutputDevice::LogicToLogic(
aTL,
@@ -1868,7 +1865,7 @@ bool SdrOle2Obj::CalculateNewScaling( Fraction&
aScaleWidth, Fraction& aScaleHei
MapMode aMapMode(getSdrModelFromSdrObject().GetScaleUnit());
aObjAreaSize = mpImpl->mxObjRef.GetSize( &aMapMode );
- Size aSize = maRect.GetSize();
+ Size aSize = getRectangle().GetSize();
aScaleWidth = Fraction(aSize.Width(), aObjAreaSize.Width() );
aScaleHeight = Fraction(aSize.Height(), aObjAreaSize.Height() );
diff --git a/svx/source/svdraw/svdopath.cxx b/svx/source/svdraw/svdopath.cxx
index b304426bf647..6a22074ccc7c 100644
--- a/svx/source/svdraw/svdopath.cxx
+++ b/svx/source/svdraw/svdopath.cxx
@@ -1685,7 +1685,7 @@ void SdrPathObj::ImpForceLineAngle()
maGeo.RecalcTan();
// for SdrTextObj, keep aRect up to date
- maRect = tools::Rectangle::Normalize(aPoint0, aPoint1);
+ setRectangle(tools::Rectangle::Normalize(aPoint0, aPoint1));
}
void SdrPathObj::ImpForceKind()
@@ -1749,7 +1749,7 @@ void SdrPathObj::ImpForceKind()
// #i10659# for SdrTextObj, keep aRect up to date
if(GetPathPoly().count())
{
- maRect = lcl_ImpGetBoundRect(GetPathPoly());
+ setRectangle(lcl_ImpGetBoundRect(GetPathPoly()));
}
}
@@ -2478,7 +2478,7 @@ void SdrPathObj::NbcSetPoint(const Point& rPnt,
sal_uInt32 nHdlNum)
if(GetPathPoly().count())
{
// #i10659# for SdrTextObj, keep aRect up to date
- maRect = lcl_ImpGetBoundRect(GetPathPoly());
+ setRectangle(lcl_ImpGetBoundRect(GetPathPoly()));
}
}
diff --git a/svx/source/svdraw/svdorect.cxx b/svx/source/svdraw/svdorect.cxx
index 989fe0685e6b..a11151fb280d 100644
--- a/svx/source/svdraw/svdorect.cxx
+++ b/svx/source/svdraw/svdorect.cxx
@@ -122,14 +122,14 @@ XPolygon SdrRectObj::ImpCalcXPoly(const tools::Rectangle&
rRect1, tools::Long nR
aXPoly=aNewPoly;
// these angles always relate to the top left corner of aRect
- if (maGeo.nShearAngle)
ShearXPoly(aXPoly,maRect.TopLeft(),maGeo.mfTanShearAngle);
- if (maGeo.nRotationAngle)
RotateXPoly(aXPoly,maRect.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle);
+ if (maGeo.nShearAngle) ShearXPoly(aXPoly, getRectangle().TopLeft(),
maGeo.mfTanShearAngle);
+ if (maGeo.nRotationAngle) RotateXPoly(aXPoly, getRectangle().TopLeft(),
maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle);
return aXPoly;
}
void SdrRectObj::RecalcXPoly()
{
- mpXPoly = ImpCalcXPoly(maRect,GetEckenradius());
+ mpXPoly = ImpCalcXPoly(getRectangle(), GetEckenradius());
}
const XPolygon& SdrRectObj::GetXPoly() const
@@ -177,11 +177,11 @@ SdrObjKind SdrRectObj::GetObjIdentifier() const
void SdrRectObj::TakeUnrotatedSnapRect(tools::Rectangle& rRect) const
{
- rRect = maRect;
+ rRect = getRectangle();
if (maGeo.nShearAngle==0_deg100)
return;
- tools::Long nDst=FRound((maRect.Bottom()-maRect.Top()) *
maGeo.mfTanShearAngle);
+ tools::Long nDst=FRound((getRectangle().Bottom()-getRectangle().Top()) *
maGeo.mfTanShearAngle);
if (maGeo.nShearAngle>0_deg100)
{
Point aRef(rRect.TopLeft());
@@ -210,7 +210,7 @@ OUString SdrRectObj::TakeObjNameSingul() const
{
pResId = bRounded ? STR_ObjNameSingulPARALRND :
STR_ObjNameSingulPARAL; // parallelogram or, maybe, rhombus
}
- else if (maRect.GetWidth() == maRect.GetHeight())
+ else if (getRectangle().GetWidth() == getRectangle().GetHeight())
{
pResId = bRounded ? STR_ObjNameSingulQUADRND : STR_ObjNameSingulQUAD;
// square
}
@@ -236,7 +236,7 @@ OUString SdrRectObj::TakeObjNamePlural() const
{
pResId = bRounded ? STR_ObjNamePluralPARALRND :
STR_ObjNamePluralPARAL; // parallelogram or rhombus
}
- else if (maRect.GetWidth() == maRect.GetHeight())
+ else if (getRectangle().GetWidth() == getRectangle().GetHeight())
{
pResId = bRounded ? STR_ObjNamePluralQUADRND : STR_ObjNamePluralQUAD;
// square
}
@@ -252,7 +252,7 @@ rtl::Reference<SdrObject>
SdrRectObj::CloneSdrObject(SdrModel& rTargetModel) con
basegfx::B2DPolyPolygon SdrRectObj::TakeXorPoly() const
{
XPolyPolygon aXPP;
- aXPP.Insert(ImpCalcXPoly(maRect,GetEckenradius()));
+ aXPP.Insert(ImpCalcXPoly(getRectangle(), GetEckenradius()));
return aXPP.getB2DPolyPolygon();
}
@@ -289,7 +289,7 @@ void SdrRectObj::AddToHdlList(SdrHdlList& rHdlList) const
if(IsTextFrame())
{
OSL_ENSURE(!IsTextEditActive(), "Do not use an ImpTextframeHdl for
highlighting text in active text edit, this will collide with EditEngine paints
(!)");
- std::unique_ptr<SdrHdl> pH(new ImpTextframeHdl(maRect));
+ std::unique_ptr<SdrHdl> pH(new ImpTextframeHdl(getRectangle()));
pH->SetObj(const_cast<SdrRectObj*>(this));
pH->SetRotationAngle(maGeo.nRotationAngle);
rHdlList.AddHdl(std::move(pH));
@@ -299,37 +299,37 @@ void SdrRectObj::AddToHdlList(SdrHdlList& rHdlList) const
{
Point aPnt;
SdrHdlKind eKind = SdrHdlKind::Move;
-
+ auto const& rRectangle = getRectangle();
switch(nHdlNum)
{
case 1: // Handle for changing the corner radius
{
tools::Long a = GetEckenradius();
- tools::Long b =
std::max(maRect.GetWidth(),maRect.GetHeight())/2; // rounded up, because
GetWidth() adds 1
+ tools::Long b = std::max(rRectangle.GetWidth(),
rRectangle.GetHeight())/2; // rounded up, because GetWidth() adds 1
if (a>b) a=b;
if (a<0) a=0;
- aPnt=maRect.TopLeft();
+ aPnt = rRectangle.TopLeft();
aPnt.AdjustX(a );
eKind = SdrHdlKind::Circle;
break;
}
- case 2: aPnt=maRect.TopLeft(); eKind = SdrHdlKind::UpperLeft;
break;
- case 3: aPnt=maRect.TopCenter(); eKind = SdrHdlKind::Upper;
break;
- case 4: aPnt=maRect.TopRight(); eKind =
SdrHdlKind::UpperRight; break;
- case 5: aPnt=maRect.LeftCenter(); eKind = SdrHdlKind::Left ;
break;
- case 6: aPnt=maRect.RightCenter(); eKind = SdrHdlKind::Right;
break;
- case 7: aPnt=maRect.BottomLeft(); eKind = SdrHdlKind::LowerLeft;
break;
- case 8: aPnt=maRect.BottomCenter(); eKind = SdrHdlKind::Lower;
break;
- case 9: aPnt=maRect.BottomRight(); eKind =
SdrHdlKind::LowerRight; break;
+ case 2: aPnt = rRectangle.TopLeft(); eKind =
SdrHdlKind::UpperLeft; break;
+ case 3: aPnt = rRectangle.TopCenter(); eKind =
SdrHdlKind::Upper; break;
+ case 4: aPnt = rRectangle.TopRight(); eKind =
SdrHdlKind::UpperRight; break;
+ case 5: aPnt = rRectangle.LeftCenter(); eKind = SdrHdlKind::Left
; break;
+ case 6: aPnt = rRectangle.RightCenter(); eKind =
SdrHdlKind::Right; break;
+ case 7: aPnt = rRectangle.BottomLeft(); eKind =
SdrHdlKind::LowerLeft; break;
+ case 8: aPnt = rRectangle.BottomCenter(); eKind =
SdrHdlKind::Lower; break;
+ case 9: aPnt = rRectangle.BottomRight(); eKind =
SdrHdlKind::LowerRight; break;
}
if (maGeo.nShearAngle)
{
- ShearPoint(aPnt,maRect.TopLeft(),maGeo.mfTanShearAngle);
+ ShearPoint(aPnt,rRectangle.TopLeft(),maGeo.mfTanShearAngle);
}
if (maGeo.nRotationAngle)
{
-
RotatePoint(aPnt,maRect.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle);
+
RotatePoint(aPnt,rRectangle.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle);
}
std::unique_ptr<SdrHdl> pH(new SdrHdl(aPnt,eKind));
@@ -367,9 +367,9 @@ bool SdrRectObj::applySpecialDrag(SdrDragStat& rDrag)
Point aPt(rDrag.GetNow());
if (maGeo.nRotationAngle)
- RotatePoint(aPt, maRect.TopLeft(), -maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
+ RotatePoint(aPt, getRectangle().TopLeft(),
-maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle);
- sal_Int32 nRad(aPt.X() - maRect.Left());
+ sal_Int32 nRad(aPt.X() - getRectangle().Left());
if (nRad < 0)
nRad = 0;
@@ -405,9 +405,9 @@ OUString SdrRectObj::getSpecialDragComment(const
SdrDragStat& rDrag) const
// -sin for reversal
if (maGeo.nRotationAngle)
- RotatePoint(aPt, maRect.TopLeft(), -maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
+ RotatePoint(aPt, getRectangle().TopLeft(),
-maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle);
- sal_Int32 nRad(aPt.X() - maRect.Left());
+ sal_Int32 nRad(aPt.X() - getRectangle().Left());
if(nRad < 0)
nRad = 0;
@@ -484,14 +484,17 @@ SdrGluePoint SdrRectObj::GetVertexGluePoint(sal_uInt16
nPosNum) const
}
Point aPt;
+ auto const& rRectangle = getRectangle();
switch (nPosNum) {
- case 0: aPt=maRect.TopCenter(); aPt.AdjustY( -nWdt ); break;
- case 1: aPt=maRect.RightCenter(); aPt.AdjustX(nWdt ); break;
- case 2: aPt=maRect.BottomCenter(); aPt.AdjustY(nWdt ); break;
- case 3: aPt=maRect.LeftCenter(); aPt.AdjustX( -nWdt ); break;
+ case 0: aPt = rRectangle.TopCenter(); aPt.AdjustY( -nWdt ); break;
+ case 1: aPt = rRectangle.RightCenter(); aPt.AdjustX(nWdt ); break;
+ case 2: aPt = rRectangle.BottomCenter(); aPt.AdjustY(nWdt ); break;
+ case 3: aPt = rRectangle.LeftCenter(); aPt.AdjustX( -nWdt ); break;
}
- if (maGeo.nShearAngle) ShearPoint(aPt, maRect.TopLeft(),
maGeo.mfTanShearAngle);
- if (maGeo.nRotationAngle) RotatePoint(aPt, maRect.TopLeft(),
maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle);
+ if (maGeo.nShearAngle)
+ ShearPoint(aPt, rRectangle.TopLeft(), maGeo.mfTanShearAngle);
+ if (maGeo.nRotationAngle)
+ RotatePoint(aPt, rRectangle.TopLeft(), maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
aPt-=GetSnapRect().Center();
SdrGluePoint aGP(aPt);
aGP.SetPercent(false);
@@ -510,14 +513,17 @@ SdrGluePoint SdrRectObj::GetCornerGluePoint(sal_uInt16
nPosNum) const
}
Point aPt;
+ auto const& rRectangle = getRectangle();
switch (nPosNum) {
- case 0: aPt=maRect.TopLeft(); aPt.AdjustX( -nWdt ); aPt.AdjustY(
-nWdt ); break;
- case 1: aPt=maRect.TopRight(); aPt.AdjustX(nWdt ); aPt.AdjustY(
-nWdt ); break;
- case 2: aPt=maRect.BottomRight(); aPt.AdjustX(nWdt ); aPt.AdjustY(nWdt
); break;
- case 3: aPt=maRect.BottomLeft(); aPt.AdjustX( -nWdt );
aPt.AdjustY(nWdt ); break;
+ case 0: aPt = rRectangle.TopLeft(); aPt.AdjustX( -nWdt );
aPt.AdjustY( -nWdt ); break;
+ case 1: aPt = rRectangle.TopRight(); aPt.AdjustX(nWdt );
aPt.AdjustY( -nWdt ); break;
+ case 2: aPt = rRectangle.BottomRight(); aPt.AdjustX(nWdt );
aPt.AdjustY(nWdt ); break;
+ case 3: aPt = rRectangle.BottomLeft(); aPt.AdjustX( -nWdt );
aPt.AdjustY(nWdt ); break;
}
- if (maGeo.nShearAngle)
ShearPoint(aPt,maRect.TopLeft(),maGeo.mfTanShearAngle);
- if (maGeo.nRotationAngle)
RotatePoint(aPt,maRect.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle);
+ if (maGeo.nShearAngle)
+ ShearPoint(aPt, rRectangle.TopLeft(),maGeo.mfTanShearAngle);
+ if (maGeo.nRotationAngle)
+ RotatePoint(aPt,
rRectangle.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle);
aPt-=GetSnapRect().Center();
SdrGluePoint aGP(aPt);
aGP.SetPercent(false);
@@ -526,7 +532,7 @@ SdrGluePoint SdrRectObj::GetCornerGluePoint(sal_uInt16
nPosNum) const
rtl::Reference<SdrObject> SdrRectObj::DoConvertToPolyObj(bool bBezier, bool
bAddText) const
{
- XPolygon aXP(ImpCalcXPoly(maRect,GetEckenradius()));
+ XPolygon aXP(ImpCalcXPoly(getRectangle(), GetEckenradius()));
{ // TODO: this is only for the moment, until we have the new TakeContour()
aXP.Remove(0,1);
aXP[aXP.GetPointCount()-1]=aXP[0];
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index 53b32ddf28b2..fa4dc437ba0b 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -101,7 +101,7 @@ SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrTextObj
const & rSource)
// #i25616#
mbSupportTextIndentingOnLineWidthChange = true;
- maRect = rSource.maRect;
+ maRectangle = rSource.maRectangle;
maGeo = rSource.maGeo;
maTextSize = rSource.maTextSize;
@@ -135,7 +135,6 @@ SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrTextObj
const & rSource)
SdrTextObj::SdrTextObj(SdrModel& rSdrModel, const tools::Rectangle& rNewRect)
: SdrAttrObj(rSdrModel)
- , maRect(rNewRect)
, mpEditingOutliner(nullptr)
, meTextKind(SdrObjKind::Text)
, maTextEditOffset(Point(0, 0))
@@ -147,7 +146,9 @@ SdrTextObj::SdrTextObj(SdrModel& rSdrModel, const
tools::Rectangle& rNewRect)
, mbTextAnimationAllowed(true)
, mbInDownScale(false)
{
- ImpJustifyRect(maRect);
+ tools::Rectangle aRectangle(rNewRect);
+ ImpJustifyRect(aRectangle);
+ setRectangle(aRectangle);
// #i25616#
mbSupportTextIndentingOnLineWidthChange = true;
@@ -173,7 +174,6 @@ SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrObjKind
eNewTextKind)
SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrObjKind eNewTextKind,
const tools::Rectangle& rNewRect)
: SdrAttrObj(rSdrModel)
- , maRect(rNewRect)
, mpEditingOutliner(nullptr)
, meTextKind(eNewTextKind)
, maTextEditOffset(Point(0, 0))
@@ -185,7 +185,9 @@ SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrObjKind
eNewTextKind,
, mbTextAnimationAllowed(true)
, mbInDownScale(false)
{
- ImpJustifyRect(maRect);
+ tools::Rectangle aRectangle(rNewRect);
+ ImpJustifyRect(aRectangle);
+ setRectangle(aRectangle);
// #i25616#
mbSupportTextIndentingOnLineWidthChange = true;
@@ -199,14 +201,14 @@ SdrTextObj::~SdrTextObj()
void SdrTextObj::FitFrameToTextSize()
{
- ImpJustifyRect(maRect);
+ ImpJustifyRect(maRectangle);
SdrText* pText = getActiveText();
if(pText==nullptr || !pText->GetOutlinerParaObject())
return;
SdrOutliner& rOutliner=ImpGetDrawOutliner();
-
rOutliner.SetPaperSize(Size(maRect.Right()-maRect.Left(),maRect.Bottom()-maRect.Top()));
+ rOutliner.SetPaperSize(Size(getRectangle().Right() -
getRectangle().Left(), getRectangle().Bottom() - getRectangle().Top()));
rOutliner.SetUpdateLayout(true);
rOutliner.SetText(*pText->GetOutlinerParaObject());
Size aNewSize(rOutliner.CalcTextSize());
@@ -214,12 +216,12 @@ void SdrTextObj::FitFrameToTextSize()
aNewSize.AdjustWidth( 1 ); // because of possible rounding errors
aNewSize.AdjustWidth(GetTextLeftDistance()+GetTextRightDistance() );
aNewSize.AdjustHeight(GetTextUpperDistance()+GetTextLowerDistance() );
- tools::Rectangle aNewRect(maRect);
+ tools::Rectangle aNewRect(getRectangle());
aNewRect.SetSize(aNewSize);
ImpJustifyRect(aNewRect);
- if (aNewRect!=maRect) {
+
+ if (aNewRect != getRectangle())
SetLogicRect(aNewRect);
- }
}
void SdrTextObj::NbcSetText(const OUString& rStr)
@@ -523,7 +525,7 @@ void SdrTextObj::AdaptTextMinSize()
{
// Set minimum width.
const tools::Long nDist = GetTextLeftDistance() +
GetTextRightDistance();
- const tools::Long nW = std::max<tools::Long>(0, maRect.GetWidth() - 1
- nDist); // text width without margins
+ const tools::Long nW = std::max<tools::Long>(0,
getRectangle().GetWidth() - 1 - nDist); // text width without margins
aSet.Put(makeSdrTextMinFrameWidthItem(nW));
@@ -538,7 +540,7 @@ void SdrTextObj::AdaptTextMinSize()
{
// Set Minimum height.
const tools::Long nDist = GetTextUpperDistance() +
GetTextLowerDistance();
- const tools::Long nH = std::max<tools::Long>(0, maRect.GetHeight() - 1
- nDist); // text height without margins
+ const tools::Long nH = std::max<tools::Long>(0,
getRectangle().GetHeight() - 1 - nDist); // text height without margins
aSet.Put(makeSdrTextMinFrameHeightItem(nH));
@@ -610,7 +612,7 @@ void SdrTextObj::ImpSetContourPolygon( SdrOutliner&
rOutliner, tools::Rectangle
void SdrTextObj::TakeUnrotatedSnapRect(tools::Rectangle& rRect) const
{
- rRect=maRect;
+ rRect = getRectangle();
}
// See also: <unnamed>::getTextAnchorRange in
svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
@@ -649,7 +651,7 @@ void SdrTextObj::AdjustRectToTextDistance(tools::Rectangle&
rAnchorRect) const
void SdrTextObj::TakeTextAnchorRect(tools::Rectangle& rAnchorRect) const
{
- tools::Rectangle aAnkRect(maRect); // the rectangle in which we anchor
+ tools::Rectangle aAnkRect(getRectangle()); // the rectangle in which we
anchor
bool bFrame=IsTextFrame();
if (!bFrame) {
TakeUnrotatedSnapRect(aAnkRect);
@@ -1058,9 +1060,11 @@ rtl::Reference<SdrObject>
SdrTextObj::CloneSdrObject(SdrModel& rTargetModel) con
basegfx::B2DPolyPolygon SdrTextObj::TakeXorPoly() const
{
- tools::Polygon aPol(maRect);
- if (maGeo.nShearAngle)
ShearPoly(aPol,maRect.TopLeft(),maGeo.mfTanShearAngle);
- if (maGeo.nRotationAngle)
RotatePoly(aPol,maRect.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle);
+ tools::Polygon aPol(getRectangle());
+ if (maGeo.nShearAngle)
+ ShearPoly(aPol, getRectangle().TopLeft(), maGeo.mfTanShearAngle);
+ if (maGeo.nRotationAngle)
+ RotatePoly(aPol, getRectangle().TopLeft(), maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
basegfx::B2DPolyPolygon aRetval;
aRetval.append(aPol.getB2DPolygon());
@@ -1098,9 +1102,9 @@ void SdrTextObj::RecalcSnapRect()
{
if (maGeo.nRotationAngle || maGeo.nShearAngle)
{
- maSnapRect = Rect2Poly(maRect, maGeo).GetBoundRect();
+ maSnapRect = Rect2Poly(getRectangle(), maGeo).GetBoundRect();
} else {
- maSnapRect = maRect;
+ maSnapRect = getRectangle();
}
}
@@ -1112,15 +1116,18 @@ sal_uInt32 SdrTextObj::GetSnapPointCount() const
Point SdrTextObj::GetSnapPoint(sal_uInt32 i) const
{
Point aP;
+ auto aRectangle = getRectangle();
switch (i) {
- case 0: aP=maRect.TopLeft(); break;
- case 1: aP=maRect.TopRight(); break;
- case 2: aP=maRect.BottomLeft(); break;
- case 3: aP=maRect.BottomRight(); break;
- default: aP=maRect.Center(); break;
- }
- if (maGeo.nShearAngle)
ShearPoint(aP,maRect.TopLeft(),maGeo.mfTanShearAngle);
- if (maGeo.nRotationAngle)
RotatePoint(aP,maRect.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle);
+ case 0: aP = aRectangle.TopLeft(); break;
+ case 1: aP = aRectangle.TopRight(); break;
+ case 2: aP = aRectangle.BottomLeft(); break;
+ case 3: aP = aRectangle.BottomRight(); break;
+ default: aP = aRectangle.Center(); break;
+ }
+ if (maGeo.nShearAngle)
+ ShearPoint(aP, aRectangle.TopLeft(), maGeo.mfTanShearAngle);
+ if (maGeo.nRotationAngle)
+ RotatePoint(aP, aRectangle.TopLeft(), maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
return aP;
}
@@ -1401,7 +1408,7 @@ void SdrTextObj::SaveGeoData(SdrObjGeoData& rGeo) const
{
SdrAttrObj::SaveGeoData(rGeo);
SdrTextObjGeoData& rTGeo=static_cast<SdrTextObjGeoData&>(rGeo);
- rTGeo.maRect = maRect;
+ rTGeo.maRect = getRectangle();
rTGeo.maGeo = maGeo;
}
@@ -1426,7 +1433,7 @@ drawing::TextFitToSizeType SdrTextObj::GetFitToSize()
const
const tools::Rectangle& SdrTextObj::GetGeoRect() const
{
- return maRect;
+ return getRectangle();
}
void SdrTextObj::ForceOutlinerParaObject()
@@ -1559,7 +1566,7 @@ bool SdrTextObj::TRGetBaseGeometry(basegfx::B2DHomMatrix&
rMatrix, basegfx::B2DP
double fShearX = toRadians(maGeo.nShearAngle);
// get aRect, this is the unrotated snaprect
- tools::Rectangle aRectangle(maRect);
+ tools::Rectangle aRectangle(getRectangle());
// fill other values
basegfx::B2DTuple aScale(aRectangle.GetWidth(), aRectangle.GetHeight());
diff --git a/svx/source/svdraw/svdotxat.cxx b/svx/source/svdraw/svdotxat.cxx
index 49f7b2e79d2c..be87d5dd7577 100644
--- a/svx/source/svdraw/svdotxat.cxx
+++ b/svx/source/svdraw/svdotxat.cxx
@@ -240,7 +240,9 @@ bool SdrTextObj::AdjustTextFrameWidthAndHeight(
tools::Rectangle& rR, bool bHgt,
bool SdrTextObj::NbcAdjustTextFrameWidthAndHeight(bool bHgt, bool bWdt)
{
- bool bRet = AdjustTextFrameWidthAndHeight(maRect,bHgt,bWdt);
+ tools::Rectangle aRectangle(getRectangle());
+ bool bRet = AdjustTextFrameWidthAndHeight(aRectangle, bHgt, bWdt);
+ setRectangle(aRectangle);
if (bRet)
{
SetBoundAndSnapRectsDirty();
@@ -256,11 +258,11 @@ bool SdrTextObj::NbcAdjustTextFrameWidthAndHeight(bool
bHgt, bool bWdt)
bool SdrTextObj::AdjustTextFrameWidthAndHeight()
{
- tools::Rectangle aNewRect(maRect);
- bool bRet=AdjustTextFrameWidthAndHeight(aNewRect);
+ tools::Rectangle aNewRect(getRectangle());
+ bool bRet = AdjustTextFrameWidthAndHeight(aNewRect);
if (bRet) {
tools::Rectangle aBoundRect0; if (m_pUserCall!=nullptr)
aBoundRect0=GetLastBoundRect();
- maRect = aNewRect;
+ setRectangle(aNewRect);
SetBoundAndSnapRectsDirty();
if (auto pRectObj = dynamic_cast<SdrRectObj *>(this)) { // this is a
hack
pRectObj->SetXPolyDirty();
diff --git a/svx/source/svdraw/svdotxdr.cxx b/svx/source/svdraw/svdotxdr.cxx
index a64da65dd1e9..c4a9046d0c0e 100644
--- a/svx/source/svdraw/svdotxdr.cxx
+++ b/svx/source/svdraw/svdotxdr.cxx
@@ -44,18 +44,21 @@ void SdrTextObj::AddToHdlList(SdrHdlList& rHdlList) const
{
Point aPnt;
SdrHdlKind eKind = SdrHdlKind::UpperLeft;
+ auto aRectangle = getRectangle();
switch (nHdlNum) {
- case 0: aPnt=maRect.TopLeft(); eKind=SdrHdlKind::UpperLeft;
break;
- case 1: aPnt=maRect.TopCenter(); eKind=SdrHdlKind::Upper; break;
- case 2: aPnt=maRect.TopRight(); eKind=SdrHdlKind::UpperRight;
break;
- case 3: aPnt=maRect.LeftCenter(); eKind=SdrHdlKind::Left ; break;
- case 4: aPnt=maRect.RightCenter(); eKind=SdrHdlKind::Right; break;
- case 5: aPnt=maRect.BottomLeft(); eKind=SdrHdlKind::LowerLeft;
break;
- case 6: aPnt=maRect.BottomCenter(); eKind=SdrHdlKind::Lower; break;
- case 7: aPnt=maRect.BottomRight(); eKind=SdrHdlKind::LowerRight;
break;
+ case 0: aPnt = aRectangle.TopLeft();
eKind=SdrHdlKind::UpperLeft; break;
+ case 1: aPnt = aRectangle.TopCenter(); eKind=SdrHdlKind::Upper;
break;
+ case 2: aPnt = aRectangle.TopRight();
eKind=SdrHdlKind::UpperRight; break;
+ case 3: aPnt = aRectangle.LeftCenter(); eKind=SdrHdlKind::Left ;
break;
+ case 4: aPnt = aRectangle.RightCenter(); eKind=SdrHdlKind::Right;
break;
+ case 5: aPnt = aRectangle.BottomLeft();
eKind=SdrHdlKind::LowerLeft; break;
+ case 6: aPnt = aRectangle.BottomCenter(); eKind=SdrHdlKind::Lower;
break;
+ case 7: aPnt = aRectangle.BottomRight();
eKind=SdrHdlKind::LowerRight; break;
}
- if (maGeo.nShearAngle)
ShearPoint(aPnt,maRect.TopLeft(),maGeo.mfTanShearAngle);
- if (maGeo.nRotationAngle)
RotatePoint(aPnt,maRect.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle);
+ if (maGeo.nShearAngle)
+ ShearPoint(aPnt, aRectangle.TopLeft(), maGeo.mfTanShearAngle);
+ if (maGeo.nRotationAngle)
+ RotatePoint(aPnt, aRectangle.TopLeft(), maGeo.mfSinRotationAngle,
maGeo.mfCosRotationAngle);
std::unique_ptr<SdrHdl> pH(new SdrHdl(aPnt,eKind));
pH->SetObj(const_cast<SdrTextObj*>(this));
pH->SetRotationAngle(maGeo.nRotationAngle);
@@ -71,7 +74,7 @@ bool SdrTextObj::hasSpecialDrag() const
tools::Rectangle SdrTextObj::ImpDragCalcRect(const SdrDragStat& rDrag) const
{
- tools::Rectangle aTmpRect(maRect);
+ tools::Rectangle aTmpRect(getRectangle());
const SdrHdl* pHdl=rDrag.GetHdl();
SdrHdlKind eHdl=pHdl==nullptr ? SdrHdlKind::Move : pHdl->GetKind();
bool bEcke=(eHdl==SdrHdlKind::UpperLeft || eHdl==SdrHdlKind::UpperRight ||
eHdl==SdrHdlKind::LowerLeft || eHdl==SdrHdlKind::LowerRight);
@@ -92,8 +95,8 @@ tools::Rectangle SdrTextObj::ImpDragCalcRect(const
SdrDragStat& rDrag) const
if (bTop) aTmpRect.SetTop(aPos.Y() );
if (bBtm) aTmpRect.SetBottom(aPos.Y() );
if (bOrtho) { // Ortho
- tools::Long nWdt0=maRect.Right() -maRect.Left();
- tools::Long nHgt0=maRect.Bottom()-maRect.Top();
+ tools::Long nWdt0=getRectangle().Right() - getRectangle().Left();
+ tools::Long nHgt0=getRectangle().Bottom() - getRectangle().Top();
tools::Long nXMul=aTmpRect.Right() -aTmpRect.Left();
tools::Long nYMul=aTmpRect.Bottom()-aTmpRect.Top();
tools::Long nXDiv=nWdt0;
@@ -125,13 +128,13 @@ tools::Rectangle SdrTextObj::ImpDragCalcRect(const
SdrDragStat& rDrag) const
}
} else { // apex handles
if ((bLft || bRgt) && nXDiv!=0) {
- tools::Long nHgt0b=maRect.Bottom()-maRect.Top();
+ tools::Long nHgt0b=getRectangle().Bottom() -
getRectangle().Top();
tools::Long
nNeed=tools::Long(BigInt(nHgt0b)*BigInt(nXMul)/BigInt(nXDiv));
aTmpRect.AdjustTop( -((nNeed-nHgt0b)/2) );
aTmpRect.SetBottom(aTmpRect.Top()+nNeed );
}
if ((bTop || bBtm) && nYDiv!=0) {
- tools::Long nWdt0b=maRect.Right()-maRect.Left();
+ tools::Long nWdt0b=getRectangle().Right() -
getRectangle().Left();
tools::Long
nNeed=tools::Long(BigInt(nWdt0b)*BigInt(nYMul)/BigInt(nYDiv));
aTmpRect.AdjustLeft( -((nNeed-nWdt0b)/2) );
aTmpRect.SetRight(aTmpRect.Left()+nNeed );
@@ -150,20 +153,20 @@ bool SdrTextObj::applySpecialDrag(SdrDragStat& rDrag)
{
tools::Rectangle aNewRect(ImpDragCalcRect(rDrag));
- if(aNewRect.TopLeft() != maRect.TopLeft() && (maGeo.nRotationAngle ||
maGeo.nShearAngle))
+ if(aNewRect.TopLeft() != getRectangle().TopLeft() && (maGeo.nRotationAngle
|| maGeo.nShearAngle))
{
Point aNewPos(aNewRect.TopLeft());
if (maGeo.nShearAngle)
- ShearPoint(aNewPos,maRect.TopLeft(),maGeo.mfTanShearAngle);
+ ShearPoint(aNewPos, getRectangle().TopLeft(),
maGeo.mfTanShearAngle);
if (maGeo.nRotationAngle)
-
RotatePoint(aNewPos,maRect.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle);
+ RotatePoint(aNewPos, getRectangle().TopLeft(),
maGeo.mfSinRotationAngle, maGeo.mfCosRotationAngle);
aNewRect.SetPos(aNewPos);
}
- if (aNewRect != maRect)
+ if (aNewRect != getRectangle())
{
NbcSetLogicRect(aNewRect);
}
@@ -185,7 +188,7 @@ bool SdrTextObj::BegCreate(SdrDragStat& rStat)
tools::Rectangle aRect1(rStat.GetStart(), rStat.GetNow());
aRect1.Normalize();
rStat.SetActionRect(aRect1);
- maRect = aRect1;
+ setRectangle(aRect1);
return true;
}
@@ -195,7 +198,7 @@ bool SdrTextObj::MovCreate(SdrDragStat& rStat)
rStat.TakeCreateRect(aRect1);
ImpJustifyRect(aRect1);
rStat.SetActionRect(aRect1);
- maRect = aRect1; // for ObjName
+ setRectangle(aRect1); // for ObjName
SetBoundRectDirty();
m_bSnapRectDirty=true;
if (auto pRectObj = dynamic_cast<SdrRectObj *>(this)) {
@@ -206,8 +209,10 @@ bool SdrTextObj::MovCreate(SdrDragStat& rStat)
bool SdrTextObj::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
{
- rStat.TakeCreateRect(maRect);
- ImpJustifyRect(maRect);
+ tools::Rectangle aRectangle(getRectangle());
+ rStat.TakeCreateRect(aRectangle);
+ ImpJustifyRect(aRectangle);
+ setRectangle(aRectangle);
AdaptTextMinSize();
diff --git a/svx/source/svdraw/svdotxtr.cxx b/svx/source/svdraw/svdotxtr.cxx
index 17d4f8efc126..523a820a4165 100644
--- a/svx/source/svdraw/svdotxtr.cxx
+++ b/svx/source/svdraw/svdotxtr.cxx
... etc. - the rest is truncated