Rebased ref, commits from common ancestor: commit 1c240218323b100844f55a61fe918df8c3431e87 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Wed Jun 11 22:39:19 2025 +0200 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jun 11 22:39:45 2025 +0200
svx: Simplify multiple similar constructors of SdrTextObj into one Change-Id: I8ca01d8dedb3232ac6763bd554a9de2b6cca0b0c diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx index a972ccf5ba00..38ec1addcf2b 100644 --- a/filter/source/msfilter/msdffimp.cxx +++ b/filter/source/msfilter/msdffimp.cxx @@ -5370,10 +5370,7 @@ rtl::Reference<SdrObject> SvxMSDffManager::ProcessObj(SvStream& rSt, } } - pTextObj = new SdrRectObj( - *pSdrModel, - SdrObjKind::Text, - rTextRect); + pTextObj = new SdrRectObj(*pSdrModel, rTextRect, SdrObjKind::Text); pTextImpRec = new SvxMSDffImportRec(*pImpRec); bDeleteTextImpRec = true; diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index 3f69def9cf52..3f3fb724100e 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -1068,7 +1068,7 @@ rtl::Reference<SdrObject> SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData pRet = nullptr; } pTObj = new SdrRectObj( - *pSdrModel, + *pSdrModel, tools::Rectangle(), eTextKind != SdrObjKind::Rectangle ? eTextKind : SdrObjKind::Text); SfxItemSet aSet( pSdrModel->GetItemPool() ); if ( !pRet ) diff --git a/include/svx/svdocapt.hxx b/include/svx/svdocapt.hxx index 16683fffd05b..7bf457fc59e0 100644 --- a/include/svx/svdocapt.hxx +++ b/include/svx/svdocapt.hxx @@ -73,12 +73,11 @@ private: public: SAL_DLLPRIVATE SdrCaptionObj(SdrModel& rSdrModel); + // Copy constructor SAL_DLLPRIVATE SdrCaptionObj(SdrModel& rSdrModel, SdrCaptionObj const & rSource); - SdrCaptionObj( - SdrModel& rSdrModel, - const tools::Rectangle& rRect, - const Point& rTail); + + SdrCaptionObj(SdrModel& rSdrModel, const tools::Rectangle& rRect, const Point& rTail); // tdf#118662 getter for SuppressGetBitmap bool isSuppressGetBitmap() const { return mbSuppressGetBitmap; } diff --git a/include/svx/svdorect.hxx b/include/svx/svdorect.hxx index 7b1c1fca7629..f0f2844246bc 100644 --- a/include/svx/svdorect.hxx +++ b/include/svx/svdorect.hxx @@ -68,19 +68,9 @@ public: * * Constructor of a rectangular drawing object */ - SdrRectObj(SdrModel& rSdrModel); - SdrRectObj( - SdrModel& rSdrModel, - const tools::Rectangle& rRect); - - // Constructor of a text frame - SdrRectObj( - SdrModel& rSdrModel, - SdrObjKind eNewTextKind); - SdrRectObj( - SdrModel& rSdrModel, - SdrObjKind eNewTextKind, - const tools::Rectangle& rRect); + SdrRectObj(SdrModel& rSdrModel, + const tools::Rectangle& rRectangle = tools::Rectangle(), + SdrObjKind eTextKind = SdrObjKind::Text); // Onnly valid types Text, OutlineText, TitleText // Copy constructor SdrRectObj(SdrModel& rSdrModel, SdrRectObj const & rSource); diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx index 5f8ed57e9e02..6193120c5889 100644 --- a/include/svx/svdotext.hxx +++ b/include/svx/svdotext.hxx @@ -345,23 +345,12 @@ protected: // and object sizes virtual void AdaptTextMinSize(); - // constructors for labeled graphical objects - SdrTextObj(SdrModel& rSdrModel); - SdrTextObj( - SdrModel& rSdrModel, - const tools::Rectangle& rNewRect); - - // constructors for text frames - SdrTextObj( - SdrModel& rSdrModel, - SdrObjKind eNewTextKind); - SdrTextObj( - SdrModel& rSdrModel, - SdrObjKind eNewTextKind, - const tools::Rectangle& rNewRect); - + // constructor + SdrTextObj(SdrModel& rSdrModel, + const tools::Rectangle& rNewRect = tools::Rectangle(), + std::optional<SdrObjKind> oeTextKind = std::nullopt); // copy constructor - SdrTextObj(SdrModel& rSdrModel, SdrTextObj const & rSource); + SdrTextObj(SdrModel& rSdrModel, SdrTextObj const& rSource); // protected destructor virtual ~SdrTextObj() override; diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx index 5ae97e8bdf21..6acc1abb983f 100644 --- a/sd/source/core/sdpage.cxx +++ b/sd/source/core/sdpage.cxx @@ -298,7 +298,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t { case PresObjKind::Title: { - pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), SdrObjKind::TitleText); + pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), tools::Rectangle(), SdrObjKind::TitleText); if (mbMaster) { @@ -309,7 +309,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t case PresObjKind::Outline: { - pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), SdrObjKind::OutlineText); + pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), tools::Rectangle(), SdrObjKind::OutlineText); if (mbMaster) { @@ -320,7 +320,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t case PresObjKind::Notes: { - pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), SdrObjKind::Text); + pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), tools::Rectangle(), SdrObjKind::Text); if (mbMaster) { @@ -331,7 +331,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t case PresObjKind::Text: { - pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), SdrObjKind::Text); + pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), tools::Rectangle(), SdrObjKind::Text); } break; @@ -433,7 +433,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t case PresObjKind::DateTime: case PresObjKind::SlideNumber: { - pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), SdrObjKind::Text); + pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), tools::Rectangle(), SdrObjKind::Text); bEmptyPresObj = false; bForceText = true; } diff --git a/sd/source/ui/annotations/annotationmanager.cxx b/sd/source/ui/annotations/annotationmanager.cxx index f480487a4786..c22724090d15 100644 --- a/sd/source/ui/annotations/annotationmanager.cxx +++ b/sd/source/ui/annotations/annotationmanager.cxx @@ -1076,7 +1076,7 @@ void AnnotationManagerImpl::SyncAnnotationObjects() } else if (rInfo.meType == sdr::annotation::AnnotationType::FreeText) { - rtl::Reference<SdrRectObj> pRectangleObject = new SdrRectObj(rModel, SdrObjKind::Text, aRectangle); + rtl::Reference<SdrRectObj> pRectangleObject = new SdrRectObj(rModel, aRectangle, SdrObjKind::Text); pNewObject = pRectangleObject; applyAnnotationCommon(*pNewObject, xAnnotation); diff --git a/sd/source/ui/func/fuinsfil.cxx b/sd/source/ui/func/fuinsfil.cxx index aa26cb8609f9..011d9245a4f4 100644 --- a/sd/source/ui/func/fuinsfil.cxx +++ b/sd/source/ui/func/fuinsfil.cxx @@ -486,8 +486,7 @@ void FuInsertFile::InsTextOrRTFinDrMode(SfxMedium* pMedium) else { rtl::Reference<SdrRectObj> pTO = new SdrRectObj( - mpView->getSdrModelFromSdrView(), - SdrObjKind::Text); + mpView->getSdrModelFromSdrView(), ::tools::Rectangle(), SdrObjKind::Text); pTO->SetOutlinerParaObject(std::move(pOPO)); const bool bUndo = mpView->IsUndoEnabled(); diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx index a9d14dabb16d..cb49d368a7d8 100644 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -605,7 +605,7 @@ public: rtl::Reference<SdrRectObj> pObject = new SdrRectObj( *m_rDrawViewShell.GetDoc(), // TTTT should be reference - SdrObjKind::Text); + ::tools::Rectangle(), SdrObjKind::Text); pObject->SetMergedItem(makeSdrTextAutoGrowWidthItem(true)); pObject->SetOutlinerParaObject(pOutliner->CreateParaObject()); pMasterPage->InsertObject(pObject.get()); @@ -3118,8 +3118,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) std::optional<OutlinerParaObject> pOutlParaObject = pOutl->CreateParaObject(); rtl::Reference<SdrRectObj> pRectObj = new SdrRectObj( - *GetDoc(), - SdrObjKind::Text); + *GetDoc(), ::tools::Rectangle(), SdrObjKind::Text); pRectObj->SetMergedItem(makeSdrTextAutoGrowWidthItem(true)); pOutl->UpdateFields(); diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx index 718b634f22b4..3db14bad6062 100644 --- a/sd/source/ui/view/drviewse.cxx +++ b/sd/source/ui/view/drviewse.cxx @@ -1593,8 +1593,7 @@ void DrawViewShell::InsertURLField(const OUString& rURL, const OUString& rText, std::optional<OutlinerParaObject> pOutlParaObject = pOutl->CreateParaObject(); rtl::Reference<SdrRectObj> pRectObj = new SdrRectObj( - GetView()->getSdrModelFromSdrView(), - SdrObjKind::Text); + GetView()->getSdrModelFromSdrView(), ::tools::Rectangle(), SdrObjKind::Text); pOutl->UpdateFields(); pOutl->SetUpdateLayout( true ); diff --git a/svx/source/sdr/contact/viewcontactofgraphic.cxx b/svx/source/sdr/contact/viewcontactofgraphic.cxx index b9f7755b5a03..c72040f5e05b 100644 --- a/svx/source/sdr/contact/viewcontactofgraphic.cxx +++ b/svx/source/sdr/contact/viewcontactofgraphic.cxx @@ -246,7 +246,7 @@ namespace sdr::contact // needed and can be deleted. // create temp RectObj as TextObj and set needed attributes - rtl::Reference<SdrRectObj> pRectObj(new SdrRectObj(GetGrafObject().getSdrModelFromSdrObject(), SdrObjKind::Text)); + rtl::Reference<SdrRectObj> pRectObj(new SdrRectObj(GetGrafObject().getSdrModelFromSdrObject(), tools::Rectangle(), SdrObjKind::Text)); pRectObj->NbcSetText(aDraftText); pRectObj->SetMergedItem(SvxColorItem(COL_LIGHTRED, EE_CHAR_COLOR)); diff --git a/svx/source/svdraw/svdedtv2.cxx b/svx/source/svdraw/svdedtv2.cxx index 1dbc7afd83f1..5dc8998e9c87 100644 --- a/svx/source/svdraw/svdedtv2.cxx +++ b/svx/source/svdraw/svdedtv2.cxx @@ -1279,7 +1279,7 @@ void SdrEditView::CombineMarkedTextObjects() if ( rMarkList.GetMarkCount() > 1 ) { - rtl::Reference<SdrRectObj> pReplacement = new SdrRectObj( getSdrModelFromSdrView(), SdrObjKind::Text ); + rtl::Reference<SdrRectObj> pReplacement = new SdrRectObj( getSdrModelFromSdrView(), tools::Rectangle(), SdrObjKind::Text ); pReplacement->SetOutlinerParaObject( rDrawOutliner.CreateParaObject() ); pReplacement->SetSnapRect( GetMarkedObjRect() ); diff --git a/svx/source/svdraw/svdfmtf.cxx b/svx/source/svdraw/svdfmtf.cxx index 8cb0c248d59d..3552b8b21525 100644 --- a/svx/source/svdraw/svdfmtf.cxx +++ b/svx/source/svdraw/svdfmtf.cxx @@ -1039,10 +1039,7 @@ void ImpSdrGDIMetaFileImport::ImportText( const Point& rPos, const OUString& rSt aPos.AdjustY( -nTextHeight ); tools::Rectangle aTextRect( aPos, aSize ); - rtl::Reference<SdrRectObj> pText = new SdrRectObj( - *mpModel, - SdrObjKind::Text, - aTextRect); + rtl::Reference<SdrRectObj> pText = new SdrRectObj(*mpModel, aTextRect, SdrObjKind::Text); pText->SetMergedItem ( makeSdrTextUpperDistItem (0)); pText->SetMergedItem ( makeSdrTextLowerDistItem (0)); @@ -1417,7 +1414,8 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaGradientAction const & rAct) floor(aRange.getMinX()), floor(aRange.getMinY()), ceil(aRange.getMaxX()), - ceil(aRange.getMaxY()))); + ceil(aRange.getMaxY())), + SdrObjKind::Text); // #i125211# Use the ranges from the SdrObject to create a new empty SfxItemSet SfxItemSet aGradientAttr(mpModel->GetItemPool(), pRect->GetMergedItemSet().GetRanges()); const XFillGradientItem aXFillGradientItem( diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index da26a8852a88..69d889e6a3d8 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -3411,16 +3411,13 @@ rtl::Reference<SdrObject> SdrObjFactory::MakeNewObject( if(nullptr != pSnapRect) { pObj = new SdrRectObj( - rSdrModel, - nIdentifier, - *pSnapRect); + rSdrModel, *pSnapRect, nIdentifier); bSetSnapRect = false; } else { pObj = new SdrRectObj( - rSdrModel, - nIdentifier); + rSdrModel, tools::Rectangle(), nIdentifier); } } break; diff --git a/svx/source/svdraw/svdocapt.cxx b/svx/source/svdraw/svdocapt.cxx index d3032f6ba108..ea90f5f57cd7 100644 --- a/svx/source/svdraw/svdocapt.cxx +++ b/svx/source/svdraw/svdocapt.cxx @@ -180,14 +180,24 @@ std::unique_ptr<sdr::contact::ViewContact> SdrCaptionObj::CreateObjectSpecificVi SdrCaptionObj::SdrCaptionObj(SdrModel& rSdrModel) -: SdrRectObj(rSdrModel, SdrObjKind::Text), - maTailPoly(3), // default size: 3 points = 2 lines - mbSpecialTextBoxShadow(false), - mbFixedTail(false), - mbSuppressGetBitmap(false) + : SdrRectObj(rSdrModel, tools::Rectangle(), SdrObjKind::Text) + , maTailPoly(3) // default size: 3 points = 2 lines + , mbSpecialTextBoxShadow(false) + , mbFixedTail(false) + , mbSuppressGetBitmap(false) { } +SdrCaptionObj::SdrCaptionObj(SdrModel& rSdrModel, const tools::Rectangle& rRect, const Point& rTail) + : SdrRectObj(rSdrModel, rRect, SdrObjKind::Text) + , maTailPoly(3) // default size: 3 points = 2 lines + , mbSpecialTextBoxShadow(false) + , mbFixedTail(false) + , mbSuppressGetBitmap(false) +{ + maTailPoly[0] = maFixedTailPos = rTail; +} + SdrCaptionObj::SdrCaptionObj(SdrModel& rSdrModel, SdrCaptionObj const & rSource) : SdrRectObj(rSdrModel, rSource), mbSuppressGetBitmap(false) @@ -198,22 +208,7 @@ SdrCaptionObj::SdrCaptionObj(SdrModel& rSdrModel, SdrCaptionObj const & rSource) maFixedTailPos = rSource.maFixedTailPos; } -SdrCaptionObj::SdrCaptionObj( - SdrModel& rSdrModel, - const tools::Rectangle& rRect, - const Point& rTail) -: SdrRectObj(rSdrModel, SdrObjKind::Text,rRect), - maTailPoly(3), // default size: 3 points = 2 lines - mbSpecialTextBoxShadow(false), - mbFixedTail(false), - mbSuppressGetBitmap(false) -{ - maTailPoly[0]=maFixedTailPos=rTail; -} - -SdrCaptionObj::~SdrCaptionObj() -{ -} +SdrCaptionObj::~SdrCaptionObj() = default; void SdrCaptionObj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const { diff --git a/svx/source/svdraw/svdorect.cxx b/svx/source/svdraw/svdorect.cxx index dfd04fd299b5..271f25340ab9 100644 --- a/svx/source/svdraw/svdorect.cxx +++ b/svx/source/svdraw/svdorect.cxx @@ -49,54 +49,24 @@ std::unique_ptr<sdr::contact::ViewContact> SdrRectObj::CreateObjectSpecificViewC return std::make_unique<sdr::contact::ViewContactOfSdrRectObj>(*this); } - -SdrRectObj::SdrRectObj(SdrModel& rSdrModel) -: SdrTextObj(rSdrModel) +SdrRectObj::SdrRectObj(SdrModel& rSdrModel, const tools::Rectangle& rRectangle, SdrObjKind eTextKind) + : SdrTextObj(rSdrModel, rRectangle, eTextKind) { - m_bClosedObj=true; + DBG_ASSERT(meTextKind == SdrObjKind::Text || + meTextKind == SdrObjKind::OutlineText || meTextKind == SdrObjKind::TitleText, + "SdrRectObj::SdrRectObj(SdrObjKind,...) can only be applied to text frames."); + + m_bClosedObj = true; } SdrRectObj::SdrRectObj(SdrModel& rSdrModel, SdrRectObj const & rSource) : SdrTextObj(rSdrModel, rSource) { - m_bClosedObj=true; + m_bClosedObj = true; mpXPoly = rSource.mpXPoly; } -SdrRectObj::SdrRectObj( - SdrModel& rSdrModel, - const tools::Rectangle& rRect) -: SdrTextObj(rSdrModel, rRect) -{ - m_bClosedObj=true; -} - -SdrRectObj::SdrRectObj( - SdrModel& rSdrModel, - SdrObjKind eNewTextKind) -: SdrTextObj(rSdrModel, eNewTextKind) -{ - DBG_ASSERT(meTextKind == SdrObjKind::Text || - meTextKind == SdrObjKind::OutlineText || meTextKind == SdrObjKind::TitleText, - "SdrRectObj::SdrRectObj(SdrObjKind) can only be applied to text frames."); - m_bClosedObj=true; -} - -SdrRectObj::SdrRectObj( - SdrModel& rSdrModel, - SdrObjKind eNewTextKind, - const tools::Rectangle& rRect) -: SdrTextObj(rSdrModel, eNewTextKind, rRect) -{ - DBG_ASSERT(meTextKind == SdrObjKind::Text || - meTextKind == SdrObjKind::OutlineText || meTextKind == SdrObjKind::TitleText, - "SdrRectObj::SdrRectObj(SdrObjKind,...) can only be applied to text frames."); - m_bClosedObj=true; -} - -SdrRectObj::~SdrRectObj() -{ -} +SdrRectObj::~SdrRectObj() = default; void SdrRectObj::SetXPolyDirty() { @@ -525,6 +495,7 @@ SdrGluePoint SdrRectObj::GetCornerGluePoint(sal_uInt16 nPosNum) const if (maGeo.m_nRotationAngle) RotatePoint(aPt, rRectangle.TopLeft(),maGeo.mfSinRotationAngle,maGeo.mfCosRotationAngle); aPt-=GetSnapRect().Center(); + SdrGluePoint aGP(aPt); aGP.SetPercent(false); return aGP; diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index f9e8d7d4c071..05dcbb9076f5 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -71,11 +71,11 @@ std::unique_ptr<sdr::contact::ViewContact> SdrTextObj::CreateObjectSpecificViewC return std::make_unique<sdr::contact::ViewContactOfTextObj>(*this); } -SdrTextObj::SdrTextObj(SdrModel& rSdrModel) +SdrTextObj::SdrTextObj(SdrModel& rSdrModel, const tools::Rectangle& rRectangle, std::optional<SdrObjKind> oeTextKind) : SdrAttrObj(rSdrModel) , mpEditingOutliner(nullptr) - , meTextKind(SdrObjKind::Text) - , maTextEditOffset(Point(0, 0)) + , meTextKind(oeTextKind ? *oeTextKind : SdrObjKind::Text) + , maTextEditOffset(Point()) , mbTextFrame(false) , mbNoShear(false) , mbTextSizeDirty(false) @@ -84,7 +84,19 @@ SdrTextObj::SdrTextObj(SdrModel& rSdrModel) , mbTextAnimationAllowed(true) , mbInDownScale(false) { - // #i25616# + if (!rRectangle.IsEmpty()) + { + tools::Rectangle aRectangle(rRectangle); + ImpJustifyRect(aRectangle); + setRectangle(aRectangle); + } + + if (oeTextKind) + { + mbTextFrame = true; + mbNoShear = true; + } + mbSupportTextIndentingOnLineWidthChange = true; } @@ -136,66 +148,6 @@ SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrTextObj const & rSource) ImpSetTextStyleSheetListeners(); } -SdrTextObj::SdrTextObj(SdrModel& rSdrModel, const tools::Rectangle& rNewRect) - : SdrAttrObj(rSdrModel) - , mpEditingOutliner(nullptr) - , meTextKind(SdrObjKind::Text) - , maTextEditOffset(Point(0, 0)) - , mbTextFrame(false) - , mbNoShear(false) - , mbTextSizeDirty(false) - , mbInEditMode(false) - , mbDisableAutoWidthOnDragging(false) - , mbTextAnimationAllowed(true) - , mbInDownScale(false) -{ - tools::Rectangle aRectangle(rNewRect); - ImpJustifyRect(aRectangle); - setRectangle(aRectangle); - - // #i25616# - mbSupportTextIndentingOnLineWidthChange = true; -} - -SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrObjKind eNewTextKind) - : SdrAttrObj(rSdrModel) - , mpEditingOutliner(nullptr) - , meTextKind(eNewTextKind) - , maTextEditOffset(Point(0, 0)) - , mbTextFrame(true) - , mbNoShear(true) - , mbTextSizeDirty(false) - , mbInEditMode(false) - , mbDisableAutoWidthOnDragging(false) - , mbTextAnimationAllowed(true) - , mbInDownScale(false) -{ - // #i25616# - mbSupportTextIndentingOnLineWidthChange = true; -} - -SdrTextObj::SdrTextObj(SdrModel& rSdrModel, SdrObjKind eNewTextKind, - const tools::Rectangle& rNewRect) - : SdrAttrObj(rSdrModel) - , mpEditingOutliner(nullptr) - , meTextKind(eNewTextKind) - , maTextEditOffset(Point(0, 0)) - , mbTextFrame(true) - , mbNoShear(true) - , mbTextSizeDirty(false) - , mbInEditMode(false) - , mbDisableAutoWidthOnDragging(false) - , mbTextAnimationAllowed(true) - , mbInDownScale(false) -{ - tools::Rectangle aRectangle(rNewRect); - ImpJustifyRect(aRectangle); - setRectangle(aRectangle); - - // #i25616# - mbSupportTextIndentingOnLineWidthChange = true; -} - SdrTextObj::~SdrTextObj() { mxText.clear(); diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx index 7c0251c8b0b1..a519ebd45cca 100644 --- a/svx/source/svdraw/svdpdf.cxx +++ b/svx/source/svdraw/svdpdf.cxx @@ -796,7 +796,7 @@ void ImpSdrPdfImport::InsertTextObject(const Point& rPos, const Size& rSize, con aPosition.AdjustY(-nTextHeight); tools::Rectangle aTextRect(aPosition, aSize); - rtl::Reference<SdrRectObj> pText = new SdrRectObj(*mpModel, SdrObjKind::Text, aTextRect); + rtl::Reference<SdrRectObj> pText = new SdrRectObj(*mpModel, aTextRect, SdrObjKind::Text); pText->SetMergedItem(makeSdrTextUpperDistItem(0)); pText->SetMergedItem(makeSdrTextLowerDistItem(0)); diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx index 3e86051e4f0e..8a50c888664e 100644 --- a/svx/source/svdraw/svdxcgv.cxx +++ b/svx/source/svdraw/svdxcgv.cxx @@ -145,9 +145,7 @@ bool SdrExchangeView::Paste(const OUString& rStr, const Point& rPos, SdrObjList* aTextRect.SetSize(pPage->getSize().toToolsSize()); } rtl::Reference<SdrRectObj> pObj = new SdrRectObj( - getSdrModelFromSdrView(), - SdrObjKind::Text, - aTextRect); + getSdrModelFromSdrView(), aTextRect, SdrObjKind::Text); pObj->SetLayer(nLayer); pObj->NbcSetText(rStr); // SetText before SetAttr, else SetAttr doesn't work! @@ -185,9 +183,7 @@ bool SdrExchangeView::Paste(SvStream& rInput, EETextFormat eFormat, const Point& aTextRect.SetSize(pPage->getSize().toToolsSize()); } rtl::Reference<SdrRectObj> pObj = new SdrRectObj( - getSdrModelFromSdrView(), - SdrObjKind::Text, - aTextRect); + getSdrModelFromSdrView(), aTextRect, SdrObjKind::Text); pObj->SetLayer(nLayer); if (mpDefaultStyleSheet!=nullptr) pObj->NbcSetStyleSheet(mpDefaultStyleSheet, false); diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx index 377bf099aa98..981b30248ba8 100644 --- a/sw/source/filter/ww8/ww8graf.cxx +++ b/sw/source/filter/ww8/ww8graf.cxx @@ -1306,9 +1306,7 @@ rtl::Reference<SdrObject> SwWW8ImplReader::ReadTextBox(WW8_DPHEAD const * pHd, S aP1.AdjustY(SVBT16ToInt16(pHd->dya)); rtl::Reference<SdrRectObj> pObj = new SdrRectObj( - *m_pDrawModel, - SdrObjKind::Text, - tools::Rectangle(aP0, aP1)); + *m_pDrawModel, tools::Rectangle(aP0, aP1), SdrObjKind::Text); pObj->NbcSetSnapRect(tools::Rectangle(aP0, aP1)); Size aSize(SVBT16ToInt16(pHd->dxa), SVBT16ToInt16(pHd->dya)); @@ -2966,9 +2964,7 @@ SwFrameFormat* SwWW8ImplReader::MungeTextIntoDrawBox(SvxMSDffImportRec& rRecord, // Group objects don't have text. Insert a text object into // the group for holding the text. pSdrTextObj = new SdrRectObj( - *m_pDrawModel, - SdrObjKind::Text, - pThisGroup->GetCurrentBoundRect()); + *m_pDrawModel, pThisGroup->GetCurrentBoundRect(), SdrObjKind::Text); SfxItemSet aSet(m_pDrawModel->GetItemPool()); aSet.Put(XFillStyleItem(drawing::FillStyle_NONE)); diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index fb9f4d3f7d85..68357d899a26 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -800,9 +800,7 @@ rtl::Reference<SdrObject> SwMSDffManager::ProcessObj(SvStream& rSt, if (bIsSimpleDrawingTextBox) { pObj = new SdrRectObj( - *pSdrModel, - SdrObjKind::Text, - rTextRect); + *pSdrModel, rTextRect,SdrObjKind::Text ); } // The vertical paragraph justification are contained within the commit 4ffdc899aa187788ae7e46d610e55905862d181d Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Wed Jun 11 21:26:18 2025 +0200 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Jun 11 21:26:18 2025 +0200 svx: convert SnapRect to SnapRange which uses gfx::Range2DLWrap Change-Id: Ib84b6a95847742e14f2b35b3b77e3731f0187542 diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx index c53223601501..9ecc0176fbe6 100644 --- a/include/svx/svdobj.hxx +++ b/include/svx/svdobj.hxx @@ -551,6 +551,12 @@ public: /// SetSnapRect() tries to size the Object so that it fits into the /// passed Rect (without stroke width, ...) virtual void RecalcSnapRect(); + + virtual const gfx::Range2DL& getSnapRange() const + { + return m_aOutterRange; + } + virtual const tools::Rectangle& GetSnapRect() const; virtual void SetSnapRect(const tools::Rectangle& rRect); virtual void NbcSetSnapRect(const tools::Rectangle& rRect); diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index 4433c023baa8..da26a8852a88 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -33,6 +33,7 @@ #include <basegfx/polygon/b2dpolypolygoncutter.hxx> #include <basegfx/polygon/b2dpolypolygontools.hxx> #include <basegfx/units/Range2DLWrap.hxx> +#include <basegfx/units/Tuple2DLWrap.hxx> #include <basegfx/units/LengthTypes.hxx> #include <basegfx/range/b2drange.hxx> #include <drawinglayer/processor2d/contourextractor2d.hxx> @@ -2314,16 +2315,40 @@ SdrGluePoint SdrObject::GetVertexGluePoint(sal_uInt16 nPosNum) const SdrGluePoint SdrObject::GetCornerGluePoint(sal_uInt16 nPosNum) const { - tools::Rectangle aR(GetCurrentBoundRect()); - Point aPt; - switch (nPosNum) { - case 0 : aPt=aR.TopLeft(); break; - case 1 : aPt=aR.TopRight(); break; - case 2 : aPt=aR.BottomRight(); break; - case 3 : aPt=aR.BottomLeft(); break; + auto const& rCurrentBoundRange = getCurrentBoundRange(); + + gfx::Length x; + gfx::Length y; + + switch (nPosNum) + { + case 0: + x = rCurrentBoundRange.getMinX(); + y = rCurrentBoundRange.getMinY(); + break; + + case 1: + x = rCurrentBoundRange.getMaxX(); + y = rCurrentBoundRange.getMinY(); + break; + case 2: + x = rCurrentBoundRange.getMaxX(); + y = rCurrentBoundRange.getMaxY(); + break; + case 3: + x = rCurrentBoundRange.getMinX(); + y = rCurrentBoundRange.getMaxY(); + break; } - aPt-=GetSnapRect().Center(); - SdrGluePoint aGP(aPt); + + x -= getSnapRange().getCenterX(); + y -= getSnapRange().getCenterY(); + + auto eUnit = getSdrModelFromSdrObject().getUnit(); + gfx::Tuple2DLWrap aTuple2D(x, y, eUnit); + + // TODO + SdrGluePoint aGP(aTuple2D.toPoint()); aGP.SetPercent(false); return aGP; } commit 9c274116a50f55f2c234571653bb8795921cda38 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Tue Jun 10 11:16:32 2025 +0200 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Tue Jun 10 11:50:26 2025 +0200 sw: convert SwTwips to use gfx::Length to store values in EMU Change-Id: Idcd3da864974738108c5031a46844104780e5885 diff --git a/sw/inc/EnhancedPDFExportHelper.hxx b/sw/inc/EnhancedPDFExportHelper.hxx index 333348c4e5ab..24abd4bcf7a3 100644 --- a/sw/inc/EnhancedPDFExportHelper.hxx +++ b/sw/inc/EnhancedPDFExportHelper.hxx @@ -127,7 +127,7 @@ struct lt_TableColumn { bool operator()( tools::Long nVal1, tools::Long nVal2 ) const { - return nVal1 + ( MINLAY - 1 ) < nVal2; + return nVal1 + ( MINLAY - 1_twip ) < nVal2; } }; diff --git a/sw/inc/SwTwips.hxx b/sw/inc/SwTwips.hxx new file mode 100644 index 000000000000..a386a1c2baf0 --- /dev/null +++ b/sw/inc/SwTwips.hxx @@ -0,0 +1,135 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include <basegfx/units/Length.hxx> +#include <o3tl/concepts.hxx> + +class SW_DLLPUBLIC SwTwips +{ +private: + gfx::Length maValue; + +public: + constexpr SwTwips() = default; + + constexpr SwTwips(tools::Long aInput) + : maValue(gfx::Length::from(gfx::LengthUnit::twip, aInput)) + { + } + + constexpr SwTwips(gfx::Length const& rLength) + : maValue(rLength) + { + } + + operator tools::Long() const { return std::lround(maValue.as_twip()); } + + constexpr SwTwips& operator+=(tools::Long const& value) + { + gfx::Length nLength = gfx::Length::from(gfx::LengthUnit::twip, value); + maValue += nLength; + return *this; + } + + constexpr SwTwips& operator++() + { + maValue += 1_twip; + return *this; + } + + constexpr SwTwips& operator-=(tools::Long const& value) + { + gfx::Length nLength = gfx::Length::from(gfx::LengthUnit::twip, value); + maValue -= nLength; + return *this; + } + + template <typename INPUT> constexpr SwTwips& operator/=(INPUT const& value) + { + maValue /= value; + return *this; + } + + template <typename INPUT> constexpr SwTwips& operator*=(INPUT const& value) + { + maValue *= value; + return *this; + } + + constexpr SwTwips& operator-() + { + maValue = -maValue; + return *this; + } + + constexpr gfx::Length const& data() const { return maValue; } +}; + +inline SwTwips operator+(const SwTwips& rA, const SwTwips& rB) +{ + SwTwips aNew(rA.data() + rB.data()); + return aNew; +} + +inline SwTwips operator-(const SwTwips& rA, const SwTwips& rB) +{ + SwTwips aNew(rA.data() - rB.data()); + return aNew; +} + +inline SwTwips operator+(const SwTwips& rA, const gfx::Length& rB) +{ + SwTwips aNew(rA.data() + rB); + return aNew; +} + +inline SwTwips operator-(const SwTwips& rA, const gfx::Length& rB) +{ + SwTwips aNew(rA.data() - rB); + return aNew; +} + +inline SwTwips operator+(const SwTwips& rA, const tools::Long& rB) +{ + SwTwips aNew(rA.data() + SwTwips(rB).data()); + return aNew; +} + +inline SwTwips operator-(const SwTwips& rA, const tools::Long& rB) +{ + SwTwips aNew(rA.data() - SwTwips(rB).data()); + return aNew; +} + +inline SwTwips operator+(const tools::Long& rA, const SwTwips& rB) +{ + SwTwips aNew(SwTwips(rA).data() + rB.data()); + return aNew; +} + +inline SwTwips operator-(const tools::Long& rA, const SwTwips& rB) +{ + SwTwips aNew(SwTwips(rA).data() - rB.data()); + return aNew; +} + +namespace std +{ +template <> struct hash<SwTwips> +{ + std::size_t operator()(SwTwips const& rLength) const + { + return std::hash<sal_Int64>()(rLength.data().data()); + } +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/inc/swtypes.hxx b/sw/inc/swtypes.hxx index 88a33b983ec4..a70927e3f76e 100644 --- a/sw/inc/swtypes.hxx +++ b/sw/inc/swtypes.hxx @@ -16,8 +16,10 @@ * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ + #ifndef INCLUDED_SW_INC_SWTYPES_HXX #define INCLUDED_SW_INC_SWTYPES_HXX + #include <rtl/ustring.hxx> #include <limits.h> @@ -29,6 +31,7 @@ #include <i18nlangtag/lang.h> #include <vcl/outdev.hxx> #include <unotools/resmgr.hxx> +#include "SwTwips.hxx" namespace com::sun::star { namespace linguistic2{ @@ -48,33 +51,32 @@ class CharClass; class CollatorWrapper; class LanguageTag; -typedef tools::Long SwTwips; +//typedef tools::Long SwTwips; #define INVALID_TWIPS LONG_MAX #define TWIPS_MAX (LONG_MAX - 1) constexpr sal_Int32 COMPLETE_STRING = SAL_MAX_INT32; -constexpr SwTwips cMinHdFtHeight = 56; // ~1mm +constexpr SwTwips cMinHdFtHeight(1_mm); // ~1mm -#define MINFLY 23 // Minimal size for FlyFrames. -#define MINLAY 23 // Minimal size for other Frames. +constexpr SwTwips MINFLY(23_twip); // Minimal size for FlyFrames. +constexpr SwTwips MINLAY(23_twip); // Minimal size for other Frames. // Default column distance of two text columns corresponds to 0.3 cm. -constexpr SwTwips DEF_GUTTER_WIDTH = o3tl::toTwips(3, o3tl::Length::mm); +constexpr SwTwips DEF_GUTTER_WIDTH(3_mm); // Minimal distance (distance to text) for border attribute // in order not to crock up aligned lines. // 28 Twips == 0,5mm -constexpr SwTwips MIN_BORDER_DIST = 28; // ~0.5mm +constexpr SwTwips MIN_BORDER_DIST(50_hmm); // ~0.5mm // Minimal document border: 20mm. -constexpr tools::Long lMinBorderInMm(20); -constexpr SwTwips lMinBorder = o3tl::toTwips(lMinBorderInMm, o3tl::Length::mm); +constexpr SwTwips lMinBorder(20_mm); // Margin left and above document. // Half of it is gap between the pages. //TODO: Replace with SwViewOption::defDocumentBorder -constexpr SwTwips DOCUMENTBORDER = 284; // ~5mm +constexpr SwTwips DOCUMENTBORDER(5_mm); // ~5mm // For inserting of captions (what and where to insert). // It's here because it is not big enough to justify its own hxx @@ -93,8 +95,8 @@ constexpr sal_uInt8 MAXLEVEL = 10; // (For more levels the values have to be multiplied with the levels+1; // levels 0 ..4!) -constexpr short lBulletIndent = o3tl::toTwips(25, o3tl::Length::in100); // 0.25 inch -constexpr short lBulletFirstLineOffset = -lBulletIndent; +constexpr SwTwips lBulletIndent(0.25_in); // 0.25 inch +constexpr short lBulletFirstLineOffset(std::round(-lBulletIndent.data().as_twip())); constexpr sal_uInt16 lNumberIndent = o3tl::toTwips(25, o3tl::Length::in100); // 0.25 inch constexpr short lNumberFirstLineOffset = -lNumberIndent; constexpr short lOutlineMinTextDistance = o3tl::toTwips(15, o3tl::Length::in100); // 0.15 inch = 0.38 cm diff --git a/sw/source/core/doc/docfly.cxx b/sw/source/core/doc/docfly.cxx index fdd7d866628b..d28488ad93c5 100644 --- a/sw/source/core/doc/docfly.cxx +++ b/sw/source/core/doc/docfly.cxx @@ -383,7 +383,7 @@ sal_Int8 SwDoc::SetFlyFrameAnchor( SwFrameFormat& rFormat, SfxItemSet& rSet, boo && text::HoriOrientation::NONE == pHoriOrientItem->GetHoriOrient() && aOldH.GetPos() == pHoriOrientItem->GetPos()) { - SwTwips nPos = (RndStdIds::FLY_AS_CHAR == nOld) ? 0 : aOldH.GetPos(); + SwTwips nPos = (RndStdIds::FLY_AS_CHAR == nOld) ? SwTwips(0) : aOldH.GetPos(); nPos += aOldAnchorPos.getX() - aNewAnchorPos.getX(); assert(aOldH.GetRelationOrient() != pHoriOrientItem->GetRelationOrient()); @@ -416,7 +416,7 @@ sal_Int8 SwDoc::SetFlyFrameAnchor( SwFrameFormat& rFormat, SfxItemSet& rSet, boo && text::VertOrientation::NONE == pVertOrientItem->GetVertOrient() && aOldV.GetPos() == pVertOrientItem->GetPos()) { - SwTwips nPos = (RndStdIds::FLY_AS_CHAR == nOld) ? 0 : aOldV.GetPos(); + SwTwips nPos = (RndStdIds::FLY_AS_CHAR == nOld) ? SwTwips(0) : aOldV.GetPos(); nPos += aOldAnchorPos.getY() - aNewAnchorPos.getY(); assert(aOldV.GetRelationOrient() != pVertOrientItem->GetRelationOrient()); diff --git a/sw/source/core/doc/htmltbl.cxx b/sw/source/core/doc/htmltbl.cxx index 1400028ec9da..d957fb3e76df 100644 --- a/sw/source/core/doc/htmltbl.cxx +++ b/sw/source/core/doc/htmltbl.cxx @@ -620,11 +620,11 @@ void SwHTMLTableLayout::AutoLayoutPass1() } // Respect minimum width for content - if( nMinNoAlignCell < MINLAY ) + if (nMinNoAlignCell < sal_uLong(MINLAY)) nMinNoAlignCell = MINLAY; - if( nMaxNoAlignCell < MINLAY ) + if (nMaxNoAlignCell < sal_uLong(MINLAY)) nMaxNoAlignCell = MINLAY; - if( nAbsMinNoAlignCell < MINLAY ) + if (nAbsMinNoAlignCell < sal_uLong(MINLAY)) nAbsMinNoAlignCell = MINLAY; // Respect the border and distance to the content @@ -1504,7 +1504,7 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv // to the border width. // In the last case we probably exported the table ourselves. if( m_nRelLeftFill && - ( m_nWidthSet>0 || nAbsLeftFill<MINLAY+m_nInhLeftBorderWidth || + ( m_nWidthSet>0 || nAbsLeftFill < sal_uInt16(MINLAY) + m_nInhLeftBorderWidth || (HasColTags() && nAbsLeftFill < nAbsLeftSpace+nParentInhAbsLeftSpace+20) ) ) { SwHTMLTableLayoutColumn *pColumn = GetColumn( 0 ); @@ -1514,7 +1514,7 @@ void SwHTMLTableLayout::AutoLayoutPass2( sal_uInt16 nAbsAvail, sal_uInt16 nRelAv m_nInhAbsLeftSpace = nAbsLeftSpace + nParentInhAbsLeftSpace; } if( m_nRelRightFill && - ( m_nWidthSet>0 || nAbsRightFill<MINLAY+m_nInhRightBorderWidth || + ( m_nWidthSet>0 || nAbsRightFill < sal_uInt16(MINLAY) + m_nInhRightBorderWidth || (HasColTags() && nAbsRightFill < nAbsRightSpace+nParentInhAbsRightSpace+20) ) ) { SwHTMLTableLayoutColumn *pColumn = GetColumn( m_nCols-1 ); @@ -1621,7 +1621,7 @@ void SwHTMLTableLayout::SetWidths( bool bCallPass2, sal_uInt16 nAbsAvail, SwTwips nCalcTabWidth = 0; for( const SwTableLine *pLine : m_pSwTable->GetTabLines() ) lcl_ResizeLine( pLine, &nCalcTabWidth ); - SAL_WARN_IF( std::abs( m_nRelTabWidth-nCalcTabWidth ) >= COLFUZZY, "sw.core", + SAL_WARN_IF( std::abs(SwTwips(m_nRelTabWidth) - nCalcTabWidth) >= COLFUZZY, "sw.core", "Table width is not equal to the row width" ); // Lock the table format when altering it, or else the box formats diff --git a/sw/source/core/doc/tblrwcl.cxx b/sw/source/core/doc/tblrwcl.cxx index 5e321bfe2a9b..8424346eb85b 100644 --- a/sw/source/core/doc/tblrwcl.cxx +++ b/sw/source/core/doc/tblrwcl.cxx @@ -62,8 +62,8 @@ using namespace com::sun::star; -#define COLFUZZY 20 -#define ROWFUZZY 10 +constexpr SwTwips COLFUZZY(20); +constexpr SwTwips ROWFUZZY(10); #ifdef DBG_UTIL #define CHECK_TABLE(t) (t).CheckConsistency(); @@ -754,7 +754,7 @@ void DeleteBox_( SwTable& rTable, SwTableBox* pBox, SwUndo* pUndo, if( bCalcNewSize ) { SwFormatFrameSize aNew( pBox->GetFrameFormat()->GetFrameSize() ); - aNew.SetWidth( aNew.GetWidth() + nBoxSz ); + aNew.SetWidth(SwTwips(aNew.GetWidth()) + nBoxSz); if( pShareFormats ) pShareFormats->SetSize( *pBox, aNew ); else @@ -2382,16 +2382,16 @@ static bool lcl_SetSelBoxWidth( SwTableLine* pLine, CR_SetBoxWidth& rParam, // Collect all "ContentBoxes" bGreaterBox = (TableChgMode::FixedWidthChangeAbs != rParam.nMode) - && ((nDist + (rParam.bLeft ? 0 : nWidth)) >= rParam.nSide); + && ((nDist + (rParam.bLeft ? SwTwips(0) : nWidth)) >= rParam.nSide); if (bGreaterBox || (!rParam.bBigger - && (std::abs(nDist + ((rParam.nMode != TableChgMode::FixedWidthChangeAbs && rParam.bLeft) ? 0 : nWidth) - rParam.nSide) < COLFUZZY))) + && (std::abs(nDist + ((rParam.nMode != TableChgMode::FixedWidthChangeAbs && rParam.bLeft) ? SwTwips(0) : nWidth) - rParam.nSide) < COLFUZZY))) { SwTwips nLowerDiff; if( bGreaterBox && TableChgMode::FixedWidthChangeProp == rParam.nMode ) { // The "other Boxes" have been adapted, so change by this value - nLowerDiff = (nDist + ( rParam.bLeft ? 0 : nWidth ) ) - rParam.nSide; + nLowerDiff = (nDist + ( rParam.bLeft ? SwTwips(0) : nWidth ) ) - rParam.nSide; nLowerDiff *= rParam.nDiff; nLowerDiff /= rParam.nMaxSize; nLowerDiff = rParam.nDiff - nLowerDiff; @@ -2418,8 +2418,8 @@ static bool lcl_SetSelBoxWidth( SwTableLine* pLine, CR_SetBoxWidth& rParam, if( nLowerDiff || (bGreaterBox = !nOldLower && TableChgMode::FixedWidthChangeAbs != rParam.nMode && - ( nDist + ( rParam.bLeft ? 0 : nWidth ) ) >= rParam.nSide) || - ( std::abs( nDist + ( (rParam.nMode != TableChgMode::FixedWidthChangeAbs && rParam.bLeft) ? 0 : nWidth ) + ( nDist + ( rParam.bLeft ? SwTwips(0) : nWidth ) ) >= rParam.nSide) || + ( std::abs( nDist + ( (rParam.nMode != TableChgMode::FixedWidthChangeAbs && rParam.bLeft) ? SwTwips(0) : nWidth ) - rParam.nSide ) < COLFUZZY )) { // This column contains the Cursor - so decrease/increase @@ -2430,7 +2430,7 @@ static bool lcl_SetSelBoxWidth( SwTableLine* pLine, CR_SetBoxWidth& rParam, if( bGreaterBox && TableChgMode::FixedWidthChangeProp == rParam.nMode ) { // The "other Boxes" have been adapted, so change by this value - nLowerDiff = (nDist + ( rParam.bLeft ? 0 : nWidth ) ) - rParam.nSide; + nLowerDiff = (nDist + ( rParam.bLeft ? SwTwips(0) : nWidth ) ) - rParam.nSide; nLowerDiff *= rParam.nDiff; nLowerDiff /= rParam.nMaxSize; nLowerDiff = rParam.nDiff - nLowerDiff; @@ -2630,9 +2630,9 @@ bool SwTable::SetColWidth( SwTableBox& rCurrentBox, TableChgWidthHeightType eTyp // Only needed for manipulating the width const SwTwips nDist = ::lcl_GetDistance( &rCurrentBox, bLeft ); SwTwips nDistStt = 0; - CR_SetBoxWidth aParam( eType, nRelDiff, nDist, - bLeft ? nDist : rSz.GetWidth() - nDist, - const_cast<SwTableNode*>(rCurrentBox.GetSttNd()->FindTableNode()) ); + SwTwips nMax = bLeft ? nDist : SwTwips(rSz.GetWidth()) - nDist; + CR_SetBoxWidth aParam(eType, nRelDiff, nDist, nMax, + const_cast<SwTableNode*>(rCurrentBox.GetSttNd()->FindTableNode())); bBigger = aParam.bBigger; FN_lcl_SetBoxWidth fnSelBox, fnOtherBox; @@ -2653,7 +2653,7 @@ bool SwTable::SetColWidth( SwTableBox& rCurrentBox, TableChgWidthHeightType eTyp !rSz.GetWidthPercent() ) { // silence -Wsign-compare on Android with the static cast - bRet = rSz.GetWidth() < static_cast<unsigned short>(USHRT_MAX) - nRelDiff; + bRet = rSz.GetWidth() < static_cast<sal_uInt16>(USHRT_MAX) - sal_uInt16(nRelDiff); bChgLRSpace = bLeft ? rLR.ResolveLeft({}) >= nAbsDiff : rLR.ResolveRight({}) >= nAbsDiff; } @@ -2700,7 +2700,7 @@ bool SwTable::SetColWidth( SwTableBox& rCurrentBox, TableChgWidthHeightType eTyp { // If the Table does not have any room to grow, we need to create some! // silence -Wsign-compare on Android with the static cast - if( aSz.GetWidth() + nRelDiff > static_cast<unsigned short>(USHRT_MAX) ) + if (SwTwips(aSz.GetWidth()) + nRelDiff > static_cast<unsigned short>(USHRT_MAX) ) { // Break down to USHRT_MAX / 2 CR_SetBoxWidth aTmpPara( TableChgWidthHeightType::ColLeft, aSz.GetWidth() / 2, @@ -2715,16 +2715,16 @@ bool SwTable::SetColWidth( SwTableBox& rCurrentBox, TableChgWidthHeightType eTyp if( bLeft ) aLR.SetLeft( - SvxIndentValue::twips(sal_uInt16(aLR.ResolveLeft({}) - nAbsDiff))); + SvxIndentValue::twips(SwTwips(aLR.ResolveLeft({})) - nAbsDiff)); else aLR.SetRight( - SvxIndentValue::twips(sal_uInt16(aLR.ResolveRight({}) - nAbsDiff))); + SvxIndentValue::twips(SwTwips(aLR.ResolveRight({})) - nAbsDiff)); } else if( bLeft ) - aLR.SetLeft(SvxIndentValue::twips(sal_uInt16(aLR.ResolveLeft({}) + nAbsDiff))); + aLR.SetLeft(SvxIndentValue::twips(SwTwips(aLR.ResolveLeft({})) + nAbsDiff)); else aLR.SetRight( - SvxIndentValue::twips(sal_uInt16(aLR.ResolveRight({}) + nAbsDiff))); + SvxIndentValue::twips(SwTwips(aLR.ResolveRight({})) + nAbsDiff)); if( bChgLRSpace ) GetFrameFormat()->SetFormatAttr( aLR ); @@ -2758,9 +2758,9 @@ bool SwTable::SetColWidth( SwTableBox& rCurrentBox, TableChgWidthHeightType eTyp } if( bBigger ) - aSz.SetWidth( aSz.GetWidth() + nRelDiff ); + aSz.SetWidth(SwTwips(aSz.GetWidth()) + nRelDiff); else - aSz.SetWidth( aSz.GetWidth() - nRelDiff ); + aSz.SetWidth(SwTwips(aSz.GetWidth()) - nRelDiff); if (rSz.GetWidthPercent()) aSz.SetWidthPercent(static_cast<sal_uInt8>( @@ -2789,7 +2789,7 @@ bool SwTable::SetColWidth( SwTableBox& rCurrentBox, TableChgWidthHeightType eTyp } } } - else if( bLeft ? nDist != 0 : std::abs( rSz.GetWidth() - nDist ) > COLFUZZY ) + else if( bLeft ? nDist != 0 : std::abs(SwTwips(rSz.GetWidth()) - nDist) > COLFUZZY ) { bRet = true; if( bLeft && TableChgMode::FixedWidthChangeAbs == m_eTableChgMode ) @@ -2867,7 +2867,7 @@ bool SwTable::SetColWidth( SwTableBox& rCurrentBox, TableChgWidthHeightType eTyp m_eTableChgMode = eOld; return bRet; } - else if( bLeft ? nDist != 0 : (rSz.GetWidth() - nDist) > COLFUZZY ) + else if( bLeft ? nDist != 0 : (SwTwips(rSz.GetWidth()) - nDist) > COLFUZZY ) { if( bLeft && TableChgMode::FixedWidthChangeAbs == m_eTableChgMode ) aParam.bBigger = !bBigger; @@ -2893,8 +2893,7 @@ bool SwTable::SetColWidth( SwTableBox& rCurrentBox, TableChgWidthHeightType eTyp if( bLeft ) aParam.nMaxSize = aParam.nSide; else - aParam.nMaxSize = pLine->GetUpper()->GetFrameFormat()-> - GetFrameSize().GetWidth() - aParam.nSide; + aParam.nMaxSize = SwTwips(pLine->GetUpper()->GetFrameFormat()->GetFrameSize().GetWidth()) - aParam.nSide; } // First, see if there is enough room at all diff --git a/sw/source/core/doc/textboxhelper.cxx b/sw/source/core/doc/textboxhelper.cxx index 0d45170fd621..0eb5f0c82072 100644 --- a/sw/source/core/doc/textboxhelper.cxx +++ b/sw/source/core/doc/textboxhelper.cxx @@ -1139,10 +1139,10 @@ void SwTextBoxHelper::syncFlyFrameAttr(SwFrameFormat& rShape, SfxItemSet const& if (!bInlineAnchored) { aVertOrient.SetPos( - (pObj ? pObj->GetRelativePos().getX() : aVertOrient.GetPos()) + (pObj ? SwTwips(pObj->GetRelativePos().getX()) : aVertOrient.GetPos()) + aRect.Top()); aHoriOrient.SetPos( - (pObj ? pObj->GetRelativePos().getY() : aHoriOrient.GetPos()) + (pObj ? SwTwips(pObj->GetRelativePos().getY()) : aHoriOrient.GetPos()) + aRect.Left()); aTextBoxSet.Put(aVertOrient); @@ -1397,22 +1397,24 @@ bool SwTextBoxHelper::doTextBoxPositioning(SwFrameFormat* pShape, SdrObject* pOb // case 1: The textbox should be in that position where the shape is. // case 2: The shape has negative offset so that have to be subtracted // case 3: The shape and its parent shape also has negative offset, so subtract - aNewVOri.SetPos( - ((pObj->GetRelativePos().getY()) > 0 - ? (pShape->GetVertOrient().GetPos() > 0 - ? pObj->GetRelativePos().getY() - : pObj->GetRelativePos().getY() - pShape->GetVertOrient().GetPos()) - : (pShape->GetVertOrient().GetPos() > 0 - ? 0 // Is this can be a variation? - : pObj->GetRelativePos().getY() - pShape->GetVertOrient().GetPos())) - + aRect.Top()); + aNewVOri.SetPos(((pObj->GetRelativePos().getY()) > 0 + ? (pShape->GetVertOrient().GetPos() > 0 + ? SwTwips(pObj->GetRelativePos().getY()) + : SwTwips(pObj->GetRelativePos().getY()) + - pShape->GetVertOrient().GetPos()) + : (pShape->GetVertOrient().GetPos() > 0 + ? SwTwips(0) // Is this can be a variation? + : SwTwips(pObj->GetRelativePos().getY()) + - pShape->GetVertOrient().GetPos())) + + aRect.Top()); } else { // Simple textboxes: vertical position equals to the vertical offset of the shape - aNewVOri.SetPos( - ((pShape->GetVertOrient().GetPos()) > 0 ? pShape->GetVertOrient().GetPos() : 0) - + aRect.Top()); + aNewVOri.SetPos(((pShape->GetVertOrient().GetPos()) > 0 + ? pShape->GetVertOrient().GetPos() + : SwTwips(0)) + + aRect.Top()); } // Special cases when the shape is aligned to the line @@ -1467,11 +1469,11 @@ bool SwTextBoxHelper::doTextBoxPositioning(SwFrameFormat* pShape, SdrObject* pOb aNewHOri.SetHoriOrient(text::HoriOrientation::NONE); aNewHOri.SetPos( - (bIsGroupObj && pObj ? pObj->GetRelativePos().getX() : aNewHOri.GetPos()) + (bIsGroupObj && pObj ? SwTwips(pObj->GetRelativePos().getX()) : aNewHOri.GetPos()) + aRect.Left()); SwFormatVertOrient aNewVOri(pShape->GetVertOrient()); aNewVOri.SetPos( - (bIsGroupObj && pObj ? pObj->GetRelativePos().getY() : aNewVOri.GetPos()) + (bIsGroupObj && pObj ? SwTwips(pObj->GetRelativePos().getY()) : aNewVOri.GetPos()) + aRect.Top()); // Get the distance of the child shape inside its parent diff --git a/sw/source/core/docnode/ndtbl1.cxx b/sw/source/core/docnode/ndtbl1.cxx index c94d40fb8e5b..e67ae75541dc 100644 --- a/sw/source/core/docnode/ndtbl1.cxx +++ b/sw/source/core/docnode/ndtbl1.cxx @@ -1428,9 +1428,9 @@ static sal_uInt16 lcl_CalcCellFit( const SwLayoutFrame *pCell ) // pFrame does not necessarily have to be a SwTextFrame! const SwTwips nCalcFitToContent = pFrame->IsTextFrame() ? const_cast<SwTextFrame*>(static_cast<const SwTextFrame*>(pFrame))->CalcFitToContent() : - aRectFnSet.GetWidth(pFrame->getFramePrintArea()); + SwTwips(aRectFnSet.GetWidth(pFrame->getFramePrintArea())); - nRet = std::max( nRet, nCalcFitToContent + nAdd ); + nRet = std::max( nRet, SwTwips(nCalcFitToContent + nAdd)); pFrame = pFrame->GetNext(); } // Surrounding border as well as left and Right Border also need to be respected @@ -1462,7 +1462,7 @@ static void lcl_CalcSubColValues( std::vector<sal_uInt16> &rToFill, const SwTabC { const sal_uInt16 nWish = bWishValues ? ::lcl_CalcCellFit( pCell ) : - MINLAY + sal_uInt16(pCell->getFrameArea().Width() - pCell->getFramePrintArea().Width()); + sal_uInt16(MINLAY) + sal_uInt16(pCell->getFrameArea().Width() - pCell->getFramePrintArea().Width()); SwRectFnSet aRectFnSet(pTab); @@ -1584,7 +1584,7 @@ static void lcl_CalcColValues( std::vector<sal_uInt16> &rToFill, const SwTabCols nFit = nWish; } else - { const sal_uInt16 nMin = MINLAY + sal_uInt16(pCell->getFrameArea().Width() - + { const sal_uInt16 nMin = sal_uInt16(MINLAY) + sal_uInt16(pCell->getFrameArea().Width() - pCell->getFramePrintArea().Width()); if ( !nFit || nMin < nFit ) nFit = nMin; diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx index d650b135d247..0656e12c1be8 100644 --- a/sw/source/core/draw/dflyobj.cxx +++ b/sw/source/core/draw/dflyobj.cxx @@ -1066,9 +1066,9 @@ void SwVirtFlyDrawObj::NbcResize(const Point& rRef, const Fraction& xFact, const { for ( const auto &rC : rCol.GetColumns() ) { - nMin += rC.GetLeft() + rC.GetRight() + MINFLY; + nMin += rC.GetLeft() + rC.GetRight() + tools::Long(MINFLY); } - nMin -= MINFLY; + nMin -= tools::Long(MINFLY); } aSz.setWidth( std::max( aSz.Width(), nMin ) ); } diff --git a/sw/source/core/edit/autofmt.cxx b/sw/source/core/edit/autofmt.cxx index 8b5dd3c05224..be149e3213c1 100644 --- a/sw/source/core/edit/autofmt.cxx +++ b/sw/source/core/edit/autofmt.cxx @@ -1563,11 +1563,11 @@ void SwAutoFormat::BuildEnum( sal_uInt16 nLvl, sal_uInt16 nDigitLevel ) } } - sal_Int32 nAbsPos = lBulletIndent; + SwTwips nAbsPos = lBulletIndent; SwTwips nSpaceSteps = nLvl - ? nLeftTextPos / nLvl + ? SwTwips(nLeftTextPos / nLvl) : lBulletIndent; - for( sal_uInt8 n = 0; n < MAXLEVEL; ++n, nAbsPos = nAbsPos + nSpaceSteps ) + for (sal_uInt8 n = 0; n < MAXLEVEL; ++n, nAbsPos = nAbsPos + nSpaceSteps) { SwNumFormat aFormat( aRule.Get( n ) ); aFormat.SetBulletFont( pBullFnt ); @@ -1576,7 +1576,7 @@ void SwAutoFormat::BuildEnum( sal_uInt16 nLvl, sal_uInt16 nDigitLevel ) // #i93908# clear suffix for bullet lists aFormat.SetListFormat(u""_ustr, u""_ustr, n); aFormat.SetFirstLineOffset( lBulletFirstLineOffset ); - aFormat.SetAbsLSpace( nAbsPos ); + aFormat.SetAbsLSpace(sal_Int32(nAbsPos)); if( !aFormat.GetCharFormat() ) aFormat.SetCharFormat( pCFormat ); if( bRTL ) @@ -1681,7 +1681,7 @@ void SwAutoFormat::BuildEnum( sal_uInt16 nLvl, sal_uInt16 nDigitLevel ) aFormat.SetIncludeUpperLevels( MAXLEVEL ); if( bDefStep ) aFormat.SetAbsLSpace( nLeftTextPos + - SwNumRule::GetNumIndent(static_cast<sal_uInt8>(n-nLvl))); + SwTwips(SwNumRule::GetNumIndent(static_cast<sal_uInt8>(n-nLvl)))); else aFormat.SetAbsLSpace( nSpaceSteps * n + lNumberIndent ); diff --git a/sw/source/core/frmedt/fews.cxx b/sw/source/core/frmedt/fews.cxx index 90d93f5a1004..35fd434d8035 100644 --- a/sw/source/core/frmedt/fews.cxx +++ b/sw/source/core/frmedt/fews.cxx @@ -1123,7 +1123,7 @@ void SwFEShell::CalcBoundRect( SwRect& _orRect, const SwTwips nBaseOfstForFly = ( pFrame->IsTextFrame() && pFly ) ? static_cast<const SwTextFrame*>(pFrame)->GetBaseOffsetForFly( !bWrapThrough ) : - 0; + SwTwips(0); if( aRectFnSet.IsVert() || aRectFnSet.IsVertL2R() ) { bVertic = aRectFnSet.IsVert(); @@ -1141,7 +1141,7 @@ void SwFEShell::CalcBoundRect( SwRect& _orRect, case text::RelOrientation::PRINT_AREA: { aPos += aRectFnSet.GetPos(pFrame->getFramePrintArea()); - aPos.setY(aPos.getY() + nBaseOfstForFly); + aPos.setY(SwTwips(aPos.getY()) + nBaseOfstForFly); break; } case text::RelOrientation::PAGE_RIGHT: @@ -1162,7 +1162,7 @@ void SwFEShell::CalcBoundRect( SwRect& _orRect, } case text::RelOrientation::FRAME: { - aPos.setY(aPos.getY() + nBaseOfstForFly); + aPos.setY(SwTwips(aPos.getY()) + nBaseOfstForFly); break; } default: break; @@ -1195,7 +1195,7 @@ void SwFEShell::CalcBoundRect( SwRect& _orRect, case text::RelOrientation::PRINT_AREA: aPos.setX(pFrame->getFrameArea().Left() + pFrame->getFramePrintArea().Left() + pFrame->getFramePrintArea().Width()); - aPos.setX(aPos.getX() + nBaseOfstForFly); + aPos.setX(SwTwips(aPos.getX()) + nBaseOfstForFly); break; case text::RelOrientation::PAGE_LEFT: @@ -1213,7 +1213,7 @@ void SwFEShell::CalcBoundRect( SwRect& _orRect, break; case text::RelOrientation::FRAME: - aPos.setX(aPos.getX() + nBaseOfstForFly); + aPos.setX(SwTwips(aPos.getX()) + nBaseOfstForFly); break; default: break; } @@ -1228,7 +1228,7 @@ void SwFEShell::CalcBoundRect( SwRect& _orRect, break; case text::RelOrientation::PRINT_AREA: aPos += pFrame->getFramePrintArea().Pos(); - aPos.setX(aPos.getX() + nBaseOfstForFly); + aPos.setX(SwTwips(aPos.getX()) + nBaseOfstForFly); break; case text::RelOrientation::PAGE_RIGHT: aPos.setX(pPage->getFrameArea().Left() + pPage->getFramePrintArea().Right()); @@ -1241,7 +1241,7 @@ void SwFEShell::CalcBoundRect( SwRect& _orRect, aPos.setX(pPage->getFrameArea().Left()); break; case text::RelOrientation::FRAME: - aPos.setX(aPos.getX() + nBaseOfstForFly); + aPos.setX(SwTwips(aPos.getX()) + nBaseOfstForFly); break; default: break; } diff --git a/sw/source/core/inc/txtfly.hxx b/sw/source/core/inc/txtfly.hxx index 9047e127e7d8..72a974e49338 100644 --- a/sw/source/core/inc/txtfly.hxx +++ b/sw/source/core/inc/txtfly.hxx @@ -129,7 +129,7 @@ class SwTextFly const SwTextFrame * m_pMaster; std::unique_ptr<SwAnchoredObjList> mpAnchoredObjList; - tools::Long m_nMinBottom; + SwTwips m_nMinBottom; tools::Long m_nNextTop; /// Stores the upper edge of the "next" frame SwNodeOffset m_nCurrFrameNodeIndex; diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx index 19c4be53fd08..d78a7159e8f4 100644 --- a/sw/source/core/layout/atrfrm.cxx +++ b/sw/source/core/layout/atrfrm.cxx @@ -306,11 +306,14 @@ bool SwFormatFrameSize::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const rVal <<= static_cast<sal_Int32>(convertTwipToMm100(GetWidth())); break; case MID_FRMSIZE_HEIGHT: + { // #95848# returned size should never be zero. // (there was a bug that allowed for setting height to 0. // Thus there some documents existing with that not allowed // attribute value which may cause problems on import.) - rVal <<= static_cast<sal_Int32>(convertTwipToMm100(GetHeight() < MINLAY ? MINLAY : GetHeight() )); + SwTwips aValue = GetHeight() < MINLAY ? MINLAY : SwTwips(GetHeight()); + rVal <<= sal_Int32(aValue.data().as_hmm()); + } break; case MID_FRMSIZE_SIZE_TYPE: rVal <<= static_cast<sal_Int16>(GetHeightSizeType()); @@ -1148,7 +1151,7 @@ bool SwFormatCol::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const xCols->setColumnCount(GetNumCols()); const sal_uInt16 nItemGutterWidth = GetGutterWidth(); sal_Int32 nAutoDistance = IsOrtho() ? USHRT_MAX == nItemGutterWidth - ? DEF_GUTTER_WIDTH + ? sal_Int32(DEF_GUTTER_WIDTH) : static_cast<sal_Int32>(nItemGutterWidth) : 0; nAutoDistance = convertTwipToMm100(nAutoDistance); @@ -1477,7 +1480,7 @@ bool SwFormatVertOrient::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const rVal <<= m_eRelation; break; case MID_VERTORIENT_POSITION: - rVal <<= static_cast<sal_Int32>(convertTwipToMm100(GetPos())); + rVal <<= sal_Int32(GetPos().data().as_hmm()); break; default: OSL_ENSURE( false, "unknown MemberId" ); @@ -1587,7 +1590,7 @@ bool SwFormatHoriOrient::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const rVal <<= m_eRelation; break; case MID_HORIORIENT_POSITION: - rVal <<= static_cast<sal_Int32>(convertTwipToMm100(GetPos())); + rVal <<= sal_Int32(GetPos().data().as_hmm()); break; case MID_HORIORIENT_PAGETOGGLE: rVal <<= IsPosToggle(); diff --git a/sw/source/core/layout/calcmove.cxx b/sw/source/core/layout/calcmove.cxx index e05024d7f2b6..0f47343be939 100644 --- a/sw/source/core/layout/calcmove.cxx +++ b/sw/source/core/layout/calcmove.cxx @@ -2227,7 +2227,7 @@ bool SwContentFrame::WouldFit_( SwTwips nSpace, bCommonBorder && !static_cast<const SwTextFrame*>(this)->IsEmpty() ) ? nUpper : - 0; + SwTwips(0); nUpper += bCommonBorder ? rAttrs.GetBottomLine( *pFrame ) : diff --git a/sw/source/core/layout/colfrm.cxx b/sw/source/core/layout/colfrm.cxx index 9b13a5686a53..26ee2aad2da7 100644 --- a/sw/source/core/layout/colfrm.cxx +++ b/sw/source/core/layout/colfrm.cxx @@ -154,7 +154,7 @@ static bool lcl_AddColumns( SwLayoutFrame *pCont, sal_uInt16 nCount ) bool bRet; SwTwips nMax = pCont->IsPageBodyFrame() ? - pCont->FindPageFrame()->GetMaxFootnoteHeight() : LONG_MAX; + pCont->FindPageFrame()->GetMaxFootnoteHeight() : SwTwips(TWIPS_MAX); if ( pNeighbourCol ) { bRet = false; @@ -364,7 +364,7 @@ void SwLayoutFrame::AdjustColumns( const SwFormatCol *pAttr, bool bAdjustAttribu { const SwTwips nWidth = i == (pAttr->GetNumCols() - 1) ? nAvail : - pAttr->CalcColWidth( i, sal_uInt16( fnRect.GetWidth(getFramePrintArea()) ) ); + SwTwips(pAttr->CalcColWidth(i, sal_uInt16(fnRect.GetWidth(getFramePrintArea())))); const Size aColSz = fnRect.IsVert() ? Size( getFramePrintArea().Width(), nWidth ) : diff --git a/sw/source/core/layout/flowfrm.cxx b/sw/source/core/layout/flowfrm.cxx index ead94615e359..973cf5cd0f64 100644 --- a/sw/source/core/layout/flowfrm.cxx +++ b/sw/source/core/layout/flowfrm.cxx @@ -652,7 +652,7 @@ bool SwFlowFrame::PasteTree( SwFrame *pStart, SwLayoutFrame *pParent, SwFrame *p else bRet = true; - nGrowVal = o3tl::saturating_add(nGrowVal, aRectFnSet.GetHeight(pFloat->getFrameArea())); + nGrowVal = o3tl::saturating_add(nGrowVal, SwTwips(aRectFnSet.GetHeight(pFloat->getFrameArea()))); if ( pFloat->GetNext() ) pFloat = pFloat->GetNext(); else @@ -1654,7 +1654,7 @@ SwTwips SwFlowFrame::CalcUpperSpace( const SwBorderAttrs *pAttrs, if( rIDSA.get(DocumentSettingId::PARA_SPACE_MAX) ) { // FIXME: apply bHalfContextualSpacing for better portability? - nUpper = bContextualSpacing ? 0 : nPrevLowerSpace + pAttrs->GetULSpace().GetUpper(); + nUpper = bContextualSpacing ? SwTwips(0) : nPrevLowerSpace + SwTwips(pAttrs->GetULSpace().GetUpper()); SwTwips nAdd = nPrevLineSpacing; // i#11859 - consideration of the line spacing // for the upper spacing of a text frame @@ -1885,7 +1885,7 @@ SwTwips SwFlowFrame::GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid() cons GetUpperSpaceAmountConsideredForPrevFrame() + ( m_rThis.GetUpper()->GetFormat()->GetDoc()->IsSquaredPageMode() ? GetUpperSpaceAmountConsideredForPageGrid_( CalcUpperSpace( nullptr, nullptr, false ) ) - : 0 ); + : SwTwips(0) ); } return nUpperSpaceAmountConsideredForPrevFrameAndPageGrid; diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx index 4b8c953d8ac0..55f002de7f01 100644 --- a/sw/source/core/layout/fly.cxx +++ b/sw/source/core/layout/fly.cxx @@ -216,7 +216,7 @@ SwFlyFrame::SwFlyFrame( SwFlyFrameFormat *pFormat, SwFrame* pSib, SwFrame *pAnch { SwFrameAreaDefinition::FrameAreaWriteAccess aFrm(*this); aFrm.Width( rFrameSize.GetWidth() ); - aFrm.Height( rFrameSize.GetHeightSizeType() == SwFrameSize::Variable ? MINFLY : rFrameSize.GetHeight() ); + aFrm.Height( rFrameSize.GetHeightSizeType() == SwFrameSize::Variable ? MINFLY : SwTwips(rFrameSize.GetHeight())); } // Fixed or variable Height? @@ -761,8 +761,8 @@ bool SwFlyFrame::FrameSizeChg( const SwFormatFrameSize &rFrameSize ) { SwFrameAreaDefinition::FrameAreaWriteAccess aFrm(*this); - aFrm.Height( aFrm.Height() - nDiffHeight ); - aFrm.Width ( aFrm.Width() - nDiffWidth ); + aFrm.Height(SwTwips(aFrm.Height()) - nDiffHeight); + aFrm.Width(SwTwips(aFrm.Width()) - nDiffWidth); } // #i68520# @@ -770,8 +770,8 @@ bool SwFlyFrame::FrameSizeChg( const SwFormatFrameSize &rFrameSize ) { SwFrameAreaDefinition::FramePrintAreaWriteAccess aPrt(*this); - aPrt.Height( aPrt.Height() - nDiffHeight ); - aPrt.Width ( aPrt.Width() - nDiffWidth ); + aPrt.Height(SwTwips(aPrt.Height()) - nDiffHeight); + aPrt.Width(SwTwips(aPrt.Width()) - nDiffWidth); } ChgLowersProp( aOldSz ); @@ -1373,7 +1373,7 @@ void SwFlyFrame::ChgRelPos( const Point &rNewPos ) SwFrameFormat *pFormat = GetFormat(); const bool bVert = GetAnchorFrame()->IsVertical(); const SwTwips nNewY = bVert ? rNewPos.X() : rNewPos.Y(); - SwTwips nTmpY = nNewY == LONG_MAX ? 0 : nNewY; + SwTwips nTmpY = nNewY == LONG_MAX ? SwTwips(0) : nNewY; if( bVert ) nTmpY = -nTmpY; SfxItemSetFixed<RES_VERT_ORIENT, RES_HORI_ORIENT> aSet( pFormat->GetDoc()->GetAttrPool() ); @@ -1431,7 +1431,7 @@ void SwFlyFrame::ChgRelPos( const Point &rNewPos ) if ( !IsFlyInContentFrame() ) { const SwTwips nNewX = bVert ? rNewPos.Y() : rNewPos.X(); - SwTwips nTmpX = nNewX == LONG_MAX ? 0 : nNewX; + SwTwips nTmpX = nNewX == LONG_MAX ? SwTwips(0) : nNewX; SwFormatHoriOrient aHori( pFormat->GetHoriOrient() ); // #i34948# - handle also at-page and at-fly anchored // Writer fly frames @@ -1528,7 +1528,7 @@ void SwFlyFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBorderA SwTwips nRemaining = CalcContentHeight(pAttrs, nMinHeight, nUL); if( IsMinHeight() && (nRemaining + nUL) < nMinHeight ) - nRemaining = nMinHeight - nUL; + nRemaining = SwTwips(nMinHeight) - nUL; // Because the Grow/Shrink of the Flys does not directly // set the size - only indirectly by triggering a Format() // via Invalidate() - the sizes need to be set here. @@ -1552,7 +1552,7 @@ void SwFlyFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBorderA // anchor. SwTwips nDeadline = GetFlyAnchorBottom(this, *pAnchor); SwTwips nTop = aRectFnSet.GetTop(getFrameArea()); - SwTwips nBottom = aRectFnSet.GetTop(getFrameArea()) + nRemaining; + SwTwips nBottom = SwTwips(aRectFnSet.GetTop(getFrameArea())) + nRemaining; if (nBottom > nDeadline) { if (nDeadline > nTop) @@ -1645,7 +1645,7 @@ void SwFlyFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBorderA if ( nAutoWidth ) { if( SwFrameSize::Minimum == rFrameSz.GetWidthSizeType() ) - nNewSize = std::max( nNewSize - nLR, nAutoWidth ); + nNewSize = std::max(SwTwips(nNewSize - nLR), nAutoWidth); else nNewSize = nAutoWidth; } @@ -2143,20 +2143,20 @@ void SwFlyFrame::MakeContentPos( const SwBorderAttrs &rAttrs ) if( nAdjust == SDRTEXTVERTADJUST_CENTER ) { if( aRectFnSet.IsVertL2R() ) - aNewContentPos.setX(aNewContentPos.getX() + nDiff/2); + aNewContentPos.setX(SwTwips(aNewContentPos.getX()) + nDiff / 2); else if( aRectFnSet.IsVert() ) - aNewContentPos.setX(aNewContentPos.getX() - nDiff/2); + aNewContentPos.setX(SwTwips(aNewContentPos.getX()) - nDiff / 2); else - aNewContentPos.setY(aNewContentPos.getY() + nDiff/2); + aNewContentPos.setY(SwTwips(aNewContentPos.getY()) + nDiff / 2); } else if( nAdjust == SDRTEXTVERTADJUST_BOTTOM ) { if( aRectFnSet.IsVertL2R() ) - aNewContentPos.setX(aNewContentPos.getX() + nDiff); + aNewContentPos.setX(SwTwips(aNewContentPos.getX()) + nDiff); else if( aRectFnSet.IsVert() ) - aNewContentPos.setX(aNewContentPos.getX() - nDiff); + aNewContentPos.setX(SwTwips(aNewContentPos.getX()) - nDiff); else - aNewContentPos.setY(aNewContentPos.getY() + nDiff); + aNewContentPos.setY(SwTwips(aNewContentPos.getY()) + nDiff); } } } @@ -2299,8 +2299,8 @@ SwTwips SwFlyFrame::Grow_(SwTwips nDist, SwResizeLimitReason& reason, bool bTst) SwRectFnSet aRectFnSet(this); SwTwips nSize = aRectFnSet.GetHeight(getFrameArea()); - if( nSize > 0 && nDist > ( LONG_MAX - nSize ) ) - nDist = LONG_MAX - nSize; + if( nSize > 0 && nDist > (SwTwips(LONG_MAX) - nSize) ) + nDist = SwTwips(LONG_MAX) - nSize; if ( nDist <= 0 ) { @@ -2451,7 +2451,7 @@ SwTwips SwFlyFrame::Shrink_( SwTwips nDist, bool bTst ) const SwFormatFrameSize& rFormatSize = GetFormat()->GetFrameSize(); SwTwips nFormatHeight = aRectFnSet.IsVert() ? rFormatSize.GetWidth() : rFormatSize.GetHeight(); - nVal = std::min( nDist, nHeight - nFormatHeight ); + nVal = std::min(nDist, SwTwips(nHeight - nFormatHeight)); } if ( nVal <= 0 ) diff --git a/sw/source/core/layout/flycnt.cxx b/sw/source/core/layout/flycnt.cxx index eb34e63caacc..accb1bc3de39 100644 --- a/sw/source/core/layout/flycnt.cxx +++ b/sw/source/core/layout/flycnt.cxx @@ -67,11 +67,11 @@ SwTwips lcl_GetTopForObjPos(const SwContentFrame* pCnt, const bool bVert, const if ( bVertL2R ) aResult += pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid(); else - aResult += pCnt->getFrameArea().Width() - pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid(); + aResult += SwTwips(pCnt->getFrameArea().Width()) - pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid(); return aResult; } else - return pCnt->getFrameArea().Top() + pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid(); + return SwTwips(pCnt->getFrameArea().Top()) + pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid(); } } @@ -662,12 +662,12 @@ static const SwFrame * lcl_CalcDownDist( SwDistance &rRet, if( bVert ) { if ( bVertL2R ) - rRet.m_nMain = rPt.X() - nTopForObjPos; + rRet.m_nMain = SwTwips(rPt.X()) - nTopForObjPos; else rRet.m_nMain = nTopForObjPos - rPt.X(); } else - rRet.m_nMain = rPt.Y() - nTopForObjPos; + rRet.m_nMain = SwTwips(rPt.Y()) - nTopForObjPos; return pCnt; } else if ( rPt.Y() <= pUp->getFrameArea().Top() ) @@ -691,7 +691,7 @@ static const SwFrame * lcl_CalcDownDist( SwDistance &rRet, if( bVert ) { if ( bVertL2R ) - rRet.m_nMain = rPt.X() - nTopForObjPos; + rRet.m_nMain = SwTwips(rPt.X()) - nTopForObjPos; else rRet.m_nMain = nTopForObjPos - rPt.X(); } @@ -906,7 +906,7 @@ static const SwFrame * lcl_CalcDownDist( SwDistance &rRet, if ( pLay->getFrameArea().Contains( rPt ) ) { SwTwips nDiff = pLay->IsVertical() ? ( pLay->IsVertLR() ? ( rPt.X() - nFrameTop ) : ( nFrameTop - rPt.X() ) ) - : ( rPt.Y() - nFrameTop ); + : ( SwTwips(rPt.Y()) - nFrameTop ); if( bSct || pSect ) rRet.m_nSub += nDiff; else @@ -1300,7 +1300,7 @@ void SwFlyAtContentFrame::SetAbsPos( const Point &rNew ) nY -= pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid(); } else - nY = rNew.Y() - pCnt->getFrameArea().Top() - pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid(); + nY = SwTwips(rNew.Y() - pCnt->getFrameArea().Top()) - pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid(); } else { @@ -1361,13 +1361,13 @@ void SwFlyAtContentFrame::SetAbsPos( const Point &rNew ) if( bVert ) { if ( bVertL2R ) - nY = rNew.X() - nTopForObjPos; + nY = SwTwips(rNew.X()) - nTopForObjPos; else nY = nTopForObjPos - rNew.X(); } else { - nY = rNew.Y() - nTopForObjPos; + nY = SwTwips(rNew.Y()) - nTopForObjPos; } } diff --git a/sw/source/core/layout/ftnfrm.cxx b/sw/source/core/layout/ftnfrm.cxx index 23ed26c972cd..ebf6eff3d472 100644 --- a/sw/source/core/layout/ftnfrm.cxx +++ b/sw/source/core/layout/ftnfrm.cxx @@ -270,7 +270,7 @@ SwTwips FootnoteSeparatorHeight(SwDoc& rDoc, SwPageFootnoteInfo const& rInf) } // Writer style: calculate from the page style. - return rInf.GetTopDist() + rInf.GetBottomDist() + rInf.GetLineWidth(); + return SwTwips(rInf.GetTopDist()) + SwTwips(rInf.GetBottomDist()) + SwTwips(rInf.GetLineWidth()); } } // namespace sw diff --git a/sw/source/core/layout/hffrm.cxx b/sw/source/core/layout/hffrm.cxx index f773e8393911..e9adec2676ef 100644 --- a/sw/source/core/layout/hffrm.cxx +++ b/sw/source/core/layout/hffrm.cxx @@ -166,9 +166,9 @@ void SwHeadFootFrame::FormatPrt(SwTwips & nUL, const SwBorderAttrs * pAttrs) /* calculate real vertical space between frame and print area */ if (IsHeaderFrame()) - nUL = pAttrs->CalcTop() + nSpace; + nUL = SwTwips(pAttrs->CalcTop()) + nSpace; else - nUL = pAttrs->CalcBottom() + nSpace; + nUL = SwTwips(pAttrs->CalcBottom()) + nSpace; /* set print area */ SwTwips nLR = pAttrs->CalcLeft( this ) + pAttrs->CalcRight( this ); @@ -185,13 +185,13 @@ void SwHeadFootFrame::FormatPrt(SwTwips & nUL, const SwBorderAttrs * pAttrs) aPrt.Top(nSpace); } - aPrt.Width(getFrameArea().Width() - nLR); + aPrt.Width(SwTwips(getFrameArea().Width()) - nLR); SwTwips nNewHeight; if (nUL < getFrameArea().Height()) { - nNewHeight = getFrameArea().Height() - nUL; + nNewHeight = SwTwips(getFrameArea().Height()) - nUL; } else { @@ -210,8 +210,8 @@ void SwHeadFootFrame::FormatPrt(SwTwips & nUL, const SwBorderAttrs * pAttrs) // Set sizes - the sizes are given by the surrounding Frame, just // subtract the borders. SwTwips nLR = pAttrs->CalcLeft( this ) + pAttrs->CalcRight( this ); - aPrt.Width ( getFrameArea().Width() - nLR ); - aPrt.Height( getFrameArea().Height()- nUL ); + aPrt.Width (SwTwips(getFrameArea().Width()) - nLR); + aPrt.Height(SwTwips(getFrameArea().Height()) - nUL); } setFramePrintAreaValid(true); @@ -314,7 +314,7 @@ void SwHeadFootFrame::FormatSize(SwTwips nUL, const SwBorderAttrs * pAttrs) nMaxHeight = nOldHeight; if( nRemaining <= nMinHeight ) - nRemaining = ( nMaxHeight + nMinHeight + 1 ) / 2; + nRemaining = (nMaxHeight + nMinHeight + 1_twip) / 2; } else { @@ -322,7 +322,7 @@ void SwHeadFootFrame::FormatSize(SwTwips nUL, const SwBorderAttrs * pAttrs) nMinHeight = nOldHeight; if( nRemaining >= nMaxHeight ) - nRemaining = ( nMaxHeight + nMinHeight + 1 ) / 2; + nRemaining = (nMaxHeight + nMinHeight + 1_twip) / 2; } nDiff = nRemaining - nOldHeight; @@ -384,7 +384,7 @@ void SwHeadFootFrame::FormatSize(SwTwips nUL, const SwBorderAttrs * pAttrs) aFrm.Bottom( nDeadLine ); SwFrameAreaDefinition::FramePrintAreaWriteAccess aPrt(*this); - aPrt.Height( getFrameArea().Height() - nBorder ); + aPrt.Height(SwTwips(getFrameArea().Height()) - nBorder ); } } @@ -591,8 +591,8 @@ SwTwips SwHeadFootFrame::ShrinkFrame( SwTwips nDist, bool bTst, bool bInfo ) /* minimal height of print area */ SwTwips nMinPrtHeight = nMinHeight - - pAttrs->CalcTop() - - pAttrs->CalcBottom(); + - SwTwips(pAttrs->CalcTop()) + - SwTwips(pAttrs->CalcBottom()); if (nMinPrtHeight < 0) nMinPrtHeight = 0; diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx index ec87aa49831c..96719b247d5e 100644 --- a/sw/source/core/layout/layact.cxx +++ b/sw/source/core/layout/layact.cxx @@ -1408,7 +1408,7 @@ bool SwLayAction::FormatLayout( OutputDevice *pRenderContext, SwLayoutFrame *pLa // right aSpaceToNextPage = aPageRect; - aSpaceToNextPage.Right( aSpaceToNextPage.Right() + nHalfDocBorder ); + aSpaceToNextPage.Right(SwTwips(aSpaceToNextPage.Right()) + nHalfDocBorder ); aSpaceToNextPage.Left( pLay->getFrameArea().Right() ); if(!aSpaceToNextPage.IsEmpty()) m_pImp->GetShell().AddPaintRect( aSpaceToNextPage ); diff --git a/sw/source/core/layout/pagechg.cxx b/sw/source/core/layout/pagechg.cxx index 61eb3f325286..96dfc74a193f 100644 --- a/sw/source/core/layout/pagechg.cxx +++ b/sw/source/core/layout/pagechg.cxx @@ -205,8 +205,9 @@ SwPageFrame::SwPageFrame( SwFrameFormat *pFormat, SwFrame* pSib, SwPageDesc *pPg } else m_bHasGrid = false; - SetMaxFootnoteHeight( pPgDsc->GetFootnoteInfo().GetHeight() ? - pPgDsc->GetFootnoteInfo().GetHeight() : LONG_MAX ); + SetMaxFootnoteHeight( + pPgDsc->GetFootnoteInfo().GetHeight() ? + pPgDsc->GetFootnoteInfo().GetHeight() : SwTwips(TWIPS_MAX)); mnFrameType = SwFrameType::Page; m_bInvalidLayout = m_bInvalidContent = m_bInvalidSpelling = m_bInvalidSmartTags = m_bInvalidAutoCmplWrds = m_bInvalidWordCount = true; m_bInvalidFlyLayout = m_bInvalidFlyContent = m_bInvalidFlyInCnt = m_bFootnotePage = m_bEndNotePage = false; @@ -1878,7 +1879,8 @@ void SwRootFrame::ImplCalcBrowseWidth() mbBrowseWidthValid = true; SwViewShell *pSh = getRootFrame()->GetCurrShell(); - mnBrowseWidth = (!comphelper::LibreOfficeKit::isActive() && pSh)? MINLAY + 2 * pSh->GetOut()-> PixelToLogic( pSh->GetBrowseBorder() ).Width(): MIN_BROWSE_WIDTH; + mnBrowseWidth = (!comphelper::LibreOfficeKit::isActive() && pSh) ? + MINLAY + 2 * pSh->GetOut()-> PixelToLogic( pSh->GetBrowseBorder() ).Width() : SwTwips(MIN_BROWSE_WIDTH); do { @@ -2394,12 +2396,10 @@ void SwRootFrame::CheckViewLayout( const SwViewOption* pViewOpt, const SwRect* p if ( mbBookMode ) pFormatPage = &pPageToAdjust->GetFormatPage(); - const SwTwips nCurrentPageWidth = pFormatPage->getFrameArea().Width() + (pFormatPage->IsEmptyPage() ? 0 : nSidebarWidth); + const SwTwips nCurrentPageWidth = pFormatPage->getFrameArea().Width() + (pFormatPage->IsEmptyPage() ? SwTwips(0) : nSidebarWidth); const Point aOldPagePos = pPageToAdjust->getFrameArea().Pos(); const bool bLeftSidebar = pPageToAdjust->SidebarPosition() == sw::sidebarwindows::SidebarPosition::LEFT; - const SwTwips nLeftPageAddOffset = bLeftSidebar ? - nSidebarWidth : - 0; + const SwTwips nLeftPageAddOffset = bLeftSidebar ? nSidebarWidth : SwTwips(0); Point aNewPagePos( nBorder + nX, nBorder + nSumRowHeight ); Point aNewPagePosWithLeftOffset( nBorder + nX + nLeftPageAddOffset, nBorder + nSumRowHeight ); diff --git a/sw/source/core/layout/sectfrm.cxx b/sw/source/core/layout/sectfrm.cxx index 12d67f5a6dc8..ff8305314c59 100644 --- a/sw/source/core/layout/sectfrm.cxx +++ b/sw/source/core/layout/sectfrm.cxx @@ -3095,9 +3095,9 @@ SwTwips SwSectionFrame::CalcUndersize() const SwTwips SwSectionFrame::Undersize() { - const auto nRet = CalcUndersize(); + const SwTwips nRet = CalcUndersize(); m_bUndersized = (nRet > 0); - return nRet <= 0 ? 0 : nRet; + return nRet <= 0 ? SwTwips(0) : nRet; } void SwSectionFrame::CalcFootnoteContent() diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx index 2c33166f12ec..11f95e9027c5 100644 --- a/sw/source/core/layout/tabfrm.cxx +++ b/sw/source/core/layout/tabfrm.cxx @@ -735,7 +735,7 @@ static bool lcl_RecalcSplitLine( SwRowFrame& rLastLine, SwRowFrame& rFollowLine, // Shrink the table to account for the shrunk last row, as well as lower rows // that had been moved to follow table in SwTabFrame::Split. // It will grow later when last line will recalc its height. - rTab.Shrink(nAlreadyFree + nCurLastLineHeight - nRemainingSpaceForLastRow + 1); + rTab.Shrink(nAlreadyFree + nCurLastLineHeight - nRemainingSpaceForLastRow + 1_twip); // Lock this tab frame and its follow bool bUnlockMaster = false; @@ -3745,7 +3745,7 @@ void SwTabFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBorderA // otherwise non negative wished right indent is hold. nRightSpacing = nRightLine + ( ( (nWishRight+nLeftOffset) < 0 ) ? - (nWishRight+nLeftOffset) : + SwTwips(nWishRight+nLeftOffset) : std::max( SwTwips(0), nWishRight ) ); } } @@ -3776,7 +3776,7 @@ void SwTabFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBorderA // otherwise non negative wished left indent is hold. nLeftSpacing = nLeftLine + ( ( (nWishLeft+nRightOffset) < 0 ) ? - (nWishLeft+nRightOffset) : + SwTwips(nWishLeft+nRightOffset) : std::max( SwTwips(0), nWishLeft ) ); } } @@ -3844,7 +3844,7 @@ void SwTabFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBorderA } // OD 10.03.2003 #i9040# - consider right and left line attribute. const SwTwips nWishRight = - nMax - (nLeftSpacing-pAttrs->CalcLeftLine()) - nWishedTableWidth; + nMax - (nLeftSpacing - SwTwips(pAttrs->CalcLeftLine())) - nWishedTableWidth; nRightSpacing = nRightLine + ( (nRightOffset > 0) ? std::max( nWishRight, SwTwips(nRightOffset) ) : @@ -3941,7 +3941,7 @@ SwTwips SwTabFrame::GrowFrame(SwTwips nDist, SwResizeLimitReason& reason, bool b if ( IsRestrictTableGrowth() ) { - nTmp = std::min( tools::Long(nDist), nReal + nTmp ); + nTmp = std::min(SwTwips(nDist), nReal + nTmp); nDist = nTmp < 0 ? 0 : nTmp; } } @@ -4851,7 +4851,7 @@ tools::Long CalcHeightWithFlys( const SwFrame *pFrame ) aRectFnSet.GetTop(pTmp->getFrameArea()), aRectFnSet.GetTop(pFrame->getFrameArea()) ); - nHeight = std::max( nHeight, nDistOfFlyBottomToAnchorTop + nFrameDiff - + nHeight = std::max(SwTwips(nHeight), nDistOfFlyBottomToAnchorTop + nFrameDiff - aRectFnSet.GetHeight(pFrame->getFrameArea()) ); // #i56115# The first height calculation @@ -5450,7 +5450,7 @@ void SwRowFrame::AdjustCells( const SwTwips nHeight, const bool bHeight ) // Use new height for the current row: nSumRowHeight += pToAdjustRow == this ? nHeight : - aRectFnSet.GetHeight(pToAdjustRow->getFrameArea()); + SwTwips(aRectFnSet.GetHeight(pToAdjustRow->getFrameArea())); if ( nRowSpan-- == 1 ) break; @@ -5597,8 +5597,8 @@ SwTwips SwRowFrame::ShrinkFrame( SwTwips nDist, bool bTst, bool bInfo ) const SwFormatFrameSize &rSz = pMod->GetFrameSize(); SwTwips nMinHeight = 0; if (rSz.GetHeightSizeType() == SwFrameSize::Minimum) - nMinHeight = std::max(rSz.GetHeight() - lcl_calcHeightOfRowBeforeThisFrame(*this), - tools::Long(0)); + nMinHeight = std::max(SwTwips(rSz.GetHeight()) - lcl_calcHeightOfRowBeforeThisFrame(*this), + SwTwips(0)); // Only necessary to calculate minimal row height if height // of pRow is at least nMinHeight. Otherwise nMinHeight is the @@ -5633,7 +5633,7 @@ SwTwips SwRowFrame::ShrinkFrame( SwTwips nDist, bool bTst, bool bInfo ) } SwLayoutFrame* pFrame = GetUpper(); - SwTwips nTmp = pFrame ? pFrame->Shrink(nReal, bTst) : 0; + SwTwips nTmp = pFrame ? pFrame->Shrink(nReal, bTst) : SwTwips(0); if ( !bShrinkAnyway && !GetNext() && nTmp != nReal ) { //The last one gets the leftover in the upper and therefore takes @@ -6032,7 +6032,7 @@ void SwCellFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBorder // #i26945# tools::Long nRemaining = GetTabBox()->getRowSpan() >= 1 ? ::lcl_CalcMinCellHeight( this, pTab->IsConsiderObjsForMinCellHeight(), pAttrs ) : - 0; + SwTwips(0); if ( !isFrameAreaSizeValid() ) { setFrameAreaSizeValid(true); @@ -6812,7 +6812,7 @@ static SwTwips lcl_CalcHeightOfFirstContentLine( const SwRowFrame& rSourceLine ) pCurrSourceCell = static_cast<const SwCellFrame*>(pCurrSourceCell->GetNext()); } - return ( LONG_MAX == nHeight ) ? 0 : nHeight; + return ( LONG_MAX == nHeight ) ? SwTwips(0) : nHeight; } /// Function to calculate height of first text row @@ -6921,8 +6921,8 @@ SwTwips SwTabFrame::CalcHeightOfFirstContentLine() const SwTwips nMinRowHeight = 0; if (rSz.GetHeightSizeType() == SwFrameSize::Minimum) { - nMinRowHeight = std::max(rSz.GetHeight() - lcl_calcHeightOfRowBeforeThisFrame(*pFirstRow), - tools::Long(0)); + nMinRowHeight = std::max(SwTwips(rSz.GetHeight()) - lcl_calcHeightOfRowBeforeThisFrame(*pFirstRow), + SwTwips(0)); } nTmpHeight += std::max( nHeightOfFirstContentLine, nMinRowHeight ); diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx index 09a078467d32..3030c703f49d 100644 --- a/sw/source/core/layout/wsfrm.cxx +++ b/sw/source/core/layout/wsfrm.cxx @@ -2304,7 +2304,7 @@ SwTwips SwContentFrame::ShrinkFrame( SwTwips nDist, bool bTst, bool bInfo ) // i#94666 if WIDOW_MAGIC was set as height, nDist is wrong, need // to take into account all the frames in the section. if (GetUpper()->IsSctFrame() - && sw::WIDOW_MAGIC - 20000 - getFrameArea().Top() < nDist) + && sw::WIDOW_MAGIC - 20000_twip - getFrameArea().Top() < nDist) { SwFrame *pNxt = GetNext(); while( pNxt ) @@ -2817,7 +2817,7 @@ SwTwips SwLayoutFrame::GrowFrame(SwTwips nDist, SwResizeLimitReason& reason, boo } } } - nGrow = pToGrow ? pToGrow->Grow(nReal, reason, bTst, bInfo) : 0; + nGrow = pToGrow ? pToGrow->Grow(nReal, reason, bTst, bInfo) : SwTwips(0); } if( SwNeighbourAdjust::GrowAdjust == nAdjust && nGrow < nReal ) @@ -2826,7 +2826,7 @@ SwTwips SwLayoutFrame::GrowFrame(SwTwips nDist, SwResizeLimitReason& reason, boo if ( IsFootnoteFrame() && (nGrow != nReal) && GetNext() ) { //Footnotes can replace their successor. - SwTwips nSpace = bTst ? 0 : -nDist; + SwTwips nSpace = bTst ? SwTwips(0) : -nDist; if (const SwFrame *pFrame = GetUpper()->Lower()) { do @@ -3089,7 +3089,7 @@ SwTwips SwLayoutFrame::ShrinkFrame( SwTwips nDist, bool bTst, bool bInfo ) } } } - nReal = pToShrink ? pToShrink->Shrink( nShrink, bTst, bInfo ) : 0; + nReal = pToShrink ? pToShrink->Shrink( nShrink, bTst, bInfo ) : SwTwips(0); if( ( SwNeighbourAdjust::GrowAdjust == nAdjust || SwNeighbourAdjust::AdjustGrow == nAdjust ) && nReal < nShrink ) AdjustNeighbourhood( nReal - nShrink ); @@ -4114,7 +4114,7 @@ void SwLayoutFrame::FormatWidthCols( const SwBorderAttrs &rAttrs, if ( nFrameHeight > nMinHeight || nPrtHeight >= nMinDiff ) nDiff = std::max( nDiff, nMinDiff ); else if( nDiff < nMinDiff ) - nDiff = nMinDiff - nPrtHeight + 1; + nDiff = nMinDiff - nPrtHeight + 1_twip; } // nMaximum is a size in which the content fit or the // requested value from the environment, therefore we don't diff --git a/sw/source/core/objectpositioning/anchoredobjectposition.cxx b/sw/source/core/objectpositioning/anchoredobjectposition.cxx index 0e6b702cc6db..57aac07e69f3 100644 --- a/sw/source/core/objectpositioning/anchoredobjectposition.cxx +++ b/sw/source/core/objectpositioning/anchoredobjectposition.cxx @@ -226,7 +226,8 @@ void SwAnchoredObjectPosition::GetVertAlignmentValues( _rVertOrientFrame.IsTextFrame() ? static_cast<const SwTextFrame&>(_rVertOrientFrame). GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid() - : 0; + : SwTwips(0); + switch ( _eRelOrient ) { case text::RelOrientation::FRAME: @@ -415,7 +416,7 @@ SwTwips SwAnchoredObjectPosition::GetVertRelPos( { nRelPosY += nAlignAreaHeight - (nObjHeight - + (aRectFnSet.IsVert() + + SwTwips(aRectFnSet.IsVert() ? (aRectFnSet.IsVertL2R() ? _rLRSpacing.ResolveRight({}) : _rLRSpacing.ResolveLeft({})) : _rULSpacing.GetLower())); @@ -804,7 +805,7 @@ void SwAnchoredObjectPosition::GetHoriAlignmentValues( const SwFrame& _rHoriOri bool bIgnoreFlysAnchoredAtFrame = !bWrapThrough; nOffset = _rHoriOrientFrame.IsTextFrame() ? static_cast<const SwTextFrame&>(_rHoriOrientFrame).GetBaseOffsetForFly( bIgnoreFlysAnchoredAtFrame ) : - 0; + SwTwips(0); break; } } @@ -938,7 +939,7 @@ SwTwips SwAnchoredObjectPosition::CalcRelPosX( nRelPosX += nWidth - (nObjWidth - + (aRectFnSet.IsVert() ? _rULSpacing.GetLower() : _rLRSpacing.ResolveRight({}))); + + SwTwips(aRectFnSet.IsVert() ? _rULSpacing.GetLower() : _rLRSpacing.ResolveRight({}))); else nRelPosX += aRectFnSet.IsVert() ? _rULSpacing.GetUpper() : _rLRSpacing.ResolveLeft({}); @@ -1053,11 +1054,11 @@ SwTwips SwAnchoredObjectPosition::AdjustHoriRelPosForDrawAside( { if ( _eHoriOrient == text::HoriOrientation::LEFT ) { - SwTwips nTmp = nOtherBot + 1 + _rULSpacing.GetUpper() - + SwTwips nTmp = nOtherBot + 1_twip + SwTwips(_rULSpacing.GetUpper()) - rAnchorTextFrame.getFrameArea().Top(); if ( nTmp > nAdjustedRelPosX && rAnchorTextFrame.getFrameArea().Top() + nTmp + - aObjBoundRect.Height() + _rULSpacing.GetLower() + aObjBoundRect.Height() + SwTwips(_rULSpacing.GetLower()) <= pObjPage->getFrameArea().Height() + pObjPage->getFrameArea().Top() ) { nAdjustedRelPosX = nTmp; @@ -1065,7 +1066,7 @@ SwTwips SwAnchoredObjectPosition::AdjustHoriRelPosForDrawAside( } else if ( _eHoriOrient == text::HoriOrientation::RIGHT ) { - SwTwips nTmp = nOtherTop - 1 - _rULSpacing.GetLower() - + SwTwips nTmp = nOtherTop - 1_twip - SwTwips(_rULSpacing.GetLower()) - aObjBoundRect.Height() - rAnchorTextFrame.getFrameArea().Top(); if ( nTmp < nAdjustedRelPosX && @@ -1090,7 +1091,7 @@ SwTwips SwAnchoredObjectPosition::AdjustHoriRelPosForDrawAside( { if ( _eHoriOrient == text::HoriOrientation::LEFT ) { - SwTwips nTmp = nOtherRight + 1 + _rLRSpacing.ResolveLeft({}) + SwTwips nTmp = nOtherRight + 1_twip + SwTwips(_rLRSpacing.ResolveLeft({})) - rAnchorTextFrame.getFrameArea().Left(); if (nTmp > nAdjustedRelPosX && rAnchorTextFrame.getFrameArea().Left() + nTmp + aObjBoundRect.Width() @@ -1103,7 +1104,7 @@ SwTwips SwAnchoredObjectPosition::AdjustHoriRelPosForDrawAside( } else if ( _eHoriOrient == text::HoriOrientation::RIGHT ) { - SwTwips nTmp = nOtherLeft - 1 - _rLRSpacing.ResolveRight({}) + SwTwips nTmp = nOtherLeft - 1_twip - SwTwips(_rLRSpacing.ResolveRight({})) - aObjBoundRect.Width() - rAnchorTextFrame.getFrameArea().Left(); -e ... etc. - the rest is truncated