include/svx/svddrag.hxx | 8 +-- include/svx/svdmrkv.hxx | 5 + svx/source/svdraw/svddrag.cxx | 28 ++++------ svx/source/svdraw/svdmrkv.cxx | 112 ++++++++++++++++-------------------------- 4 files changed, 63 insertions(+), 90 deletions(-)
New commits: commit 7cccb79f541404f6d317da49cee431294b9121c6 Author: Matteo Casalin <[email protected]> Date: Wed Dec 27 13:23:49 2017 +0100 Remove leading _ from some variable names Change-Id: I640bf41ad073fcf1d5b8fcc55c63558f208db73d diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index 7b990127cd52..0ca03c2dca26 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -1986,20 +1986,20 @@ void SdrMarkView::UnmarkAllObj(SdrPageView const * pPV) } } -void SdrMarkView::MarkAllObj(SdrPageView* _pPV) +void SdrMarkView::MarkAllObj(SdrPageView* pPV) { BrkAction(); - if(!_pPV) + if(!pPV) { - _pPV = GetSdrPageView(); + pPV = GetSdrPageView(); } - // #i69171# _pPV may still be NULL if there is no SDrPageView (!), e.g. when inserting + // #i69171# pPV may still be NULL if there is no SDrPageView (!), e.g. when inserting // other files - if(_pPV) + if(pPV) { - const bool bMarkChg(GetMarkedObjectListWriteAccess().InsertPageView(*_pPV)); + const bool bMarkChg(GetMarkedObjectListWriteAccess().InsertPageView(*pPV)); if(bMarkChg) { @@ -2154,14 +2154,14 @@ void SdrMarkView::SetMoveOutside(bool bOn) maHdlList.SetMoveOutside(bOn); } -void SdrMarkView::SetDesignMode( bool _bOn ) +void SdrMarkView::SetDesignMode( bool bOn ) { - if ( mbDesignMode != _bOn ) + if ( mbDesignMode != bOn ) { - mbDesignMode = _bOn; + mbDesignMode = bOn; SdrPageView* pPageView = GetSdrPageView(); if ( pPageView ) - pPageView->SetDesignMode( _bOn ); + pPageView->SetDesignMode( bOn ); } } commit 03caa2f611265efce1d379df55a5f27c70d9a46c Author: Matteo Casalin <[email protected]> Date: Wed Dec 27 13:04:57 2017 +0100 Make some bool const Change-Id: Icede71af1edfc0671f5b0bc0dbfd3cfc6af79fcd diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index cb5f4fe0f972..7b990127cd52 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -1909,8 +1909,8 @@ SdrObject* SdrMarkView::PickObj(const Point& rPnt, short nTol, SdrPageView*& rpP bool SdrMarkView::PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageView*& rpPV, SdrSearchOptions nOptions) const { SortMarkedObjects(); - bool bBoundCheckOn2ndPass(nOptions & SdrSearchOptions::PASS2BOUND); - bool bCheckNearestOn3rdPass(nOptions & SdrSearchOptions::PASS3NEAREST); + const bool bBoundCheckOn2ndPass(nOptions & SdrSearchOptions::PASS2BOUND); + const bool bCheckNearestOn3rdPass(nOptions & SdrSearchOptions::PASS3NEAREST); rpObj=nullptr; rpPV=nullptr; const size_t nMarkCount=GetMarkedObjectCount(); commit fed40ef827f2ee8db583a13bcb439fe625c7527f Author: Matteo Casalin <[email protected]> Date: Wed Dec 27 13:00:39 2017 +0100 Return early Change-Id: I2b420141b5986b1d23460d5432c1b7051b11663e diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index f0043d4aa824..cb5f4fe0f972 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -1913,24 +1913,23 @@ bool SdrMarkView::PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageVie bool bCheckNearestOn3rdPass(nOptions & SdrSearchOptions::PASS3NEAREST); rpObj=nullptr; rpPV=nullptr; - bool bFnd=false; const size_t nMarkCount=GetMarkedObjectCount(); - for (size_t nMarkNum=nMarkCount; nMarkNum>0 && !bFnd;) { + for (size_t nMarkNum=nMarkCount; nMarkNum>0;) { --nMarkNum; SdrMark* pM=GetSdrMarkByIndex(nMarkNum); SdrPageView* pPV=pM->GetPageView(); SdrObject* pObj=pM->GetMarkedSdrObj(); - bFnd = nullptr != CheckSingleSdrObjectHit(rPnt,mnHitTolLog,pObj,pPV,SdrSearchOptions::TESTMARKABLE,nullptr); - if (bFnd) { + if (CheckSingleSdrObjectHit(rPnt,mnHitTolLog,pObj,pPV,SdrSearchOptions::TESTMARKABLE,nullptr)) { rpObj=pObj; rpPV=pPV; + return true; } } - if ((bBoundCheckOn2ndPass || bCheckNearestOn3rdPass) && !bFnd) { + if (bBoundCheckOn2ndPass || bCheckNearestOn3rdPass) { SdrObject* pBestObj=nullptr; SdrPageView* pBestPV=nullptr; sal_uIntPtr nBestDist=ULONG_MAX; - for (size_t nMarkNum=nMarkCount; nMarkNum>0 && !bFnd;) { + for (size_t nMarkNum=nMarkCount; nMarkNum>0;) { --nMarkNum; SdrMark* pM=GetSdrMarkByIndex(nMarkNum); SdrPageView* pPV=pM->GetPageView(); @@ -1941,10 +1940,11 @@ bool SdrMarkView::PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageVie aRect.Right ()+=mnHitTolLog; aRect.Bottom()+=mnHitTolLog; if (aRect.IsInside(rPnt)) { - bFnd=true; rpObj=pObj; rpPV=pPV; - } else if (bCheckNearestOn3rdPass) { + return true; + } + if (bCheckNearestOn3rdPass) { sal_uIntPtr nDist=0; if (rPnt.X()<aRect.Left()) nDist+=aRect.Left()-rPnt.X(); if (rPnt.X()>aRect.Right()) nDist+=rPnt.X()-aRect.Right(); @@ -1957,13 +1957,13 @@ bool SdrMarkView::PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageVie } } } - if (bCheckNearestOn3rdPass && !bFnd) { + if (bCheckNearestOn3rdPass) { rpObj=pBestObj; rpPV=pBestPV; - bFnd=pBestObj!=nullptr; + return pBestObj!=nullptr; } } - return bFnd; + return false; } commit b30499e288b923483c3d00edce6af72cb5eef5b9 Author: Matteo Casalin <[email protected]> Date: Wed Dec 27 12:52:27 2017 +0100 mnHitTolLog is already sal_uInt16 Change-Id: I4a0e55818ad8e2f61845484a71b6283e0a7c326a diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index 14443e767d10..f0043d4aa824 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -1913,7 +1913,6 @@ bool SdrMarkView::PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageVie bool bCheckNearestOn3rdPass(nOptions & SdrSearchOptions::PASS3NEAREST); rpObj=nullptr; rpPV=nullptr; - sal_uInt16 nTol=(sal_uInt16)mnHitTolLog; bool bFnd=false; const size_t nMarkCount=GetMarkedObjectCount(); for (size_t nMarkNum=nMarkCount; nMarkNum>0 && !bFnd;) { @@ -1921,7 +1920,7 @@ bool SdrMarkView::PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageVie SdrMark* pM=GetSdrMarkByIndex(nMarkNum); SdrPageView* pPV=pM->GetPageView(); SdrObject* pObj=pM->GetMarkedSdrObj(); - bFnd = nullptr != CheckSingleSdrObjectHit(rPnt,nTol,pObj,pPV,SdrSearchOptions::TESTMARKABLE,nullptr); + bFnd = nullptr != CheckSingleSdrObjectHit(rPnt,mnHitTolLog,pObj,pPV,SdrSearchOptions::TESTMARKABLE,nullptr); if (bFnd) { rpObj=pObj; rpPV=pPV; @@ -1937,10 +1936,10 @@ bool SdrMarkView::PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageVie SdrPageView* pPV=pM->GetPageView(); SdrObject* pObj=pM->GetMarkedSdrObj(); tools::Rectangle aRect(pObj->GetCurrentBoundRect()); - aRect.Left ()-=nTol; - aRect.Top ()-=nTol; - aRect.Right ()+=nTol; - aRect.Bottom()+=nTol; + aRect.Left ()-=mnHitTolLog; + aRect.Top ()-=mnHitTolLog; + aRect.Right ()+=mnHitTolLog; + aRect.Bottom()+=mnHitTolLog; if (aRect.IsInside(rPnt)) { bFnd=true; rpObj=pObj; commit 541f369f30527687af010db5bfa75008a7013dd7 Author: Matteo Casalin <[email protected]> Date: Tue Dec 26 19:29:33 2017 +0100 Avoid temporary Point Change-Id: I09ce2859f7bda468399629fda1336788ed65bcb2 diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index 2afc197bb8b8..14443e767d10 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -1403,10 +1403,9 @@ bool SdrMarkView::IsMarkedObjHit(const Point& rPnt, short nTol) const { bool bRet=false; nTol=ImpGetHitTolLogic(nTol,nullptr); - Point aPt(rPnt); for (size_t nm=0; nm<GetMarkedObjectCount() && !bRet; ++nm) { SdrMark* pM=GetSdrMarkByIndex(nm); - bRet = nullptr != CheckSingleSdrObjectHit(aPt,sal_uInt16(nTol),pM->GetMarkedSdrObj(),pM->GetPageView(),SdrSearchOptions::NONE,nullptr); + bRet = nullptr != CheckSingleSdrObjectHit(rPnt,sal_uInt16(nTol),pM->GetMarkedSdrObj(),pM->GetPageView(),SdrSearchOptions::NONE,nullptr); } return bRet; } @@ -1416,8 +1415,7 @@ SdrHdl* SdrMarkView::PickHandle(const Point& rPnt) const if (mbSomeObjChgdFlag) { // recalculate handles, if necessary FlushComeBackTimer(); } - Point aPt(rPnt); - return maHdlList.IsHdlListHit(aPt); + return maHdlList.IsHdlListHit(rPnt); } bool SdrMarkView::MarkObj(const Point& rPnt, short nTol, bool bToggle, bool bDeep) @@ -1493,7 +1491,6 @@ bool SdrMarkView::MarkNextObj(const Point& rPnt, short nTol, bool bPrev) { SortMarkedObjects(); nTol=ImpGetHitTolLogic(nTol,nullptr); - Point aPt(rPnt); SdrMark* pTopMarkHit=nullptr; SdrMark* pBtmMarkHit=nullptr; size_t nTopMarkHit=0; @@ -1503,7 +1500,7 @@ bool SdrMarkView::MarkNextObj(const Point& rPnt, short nTol, bool bPrev) for (size_t nm=nMarkCount; nm>0 && pTopMarkHit==nullptr;) { --nm; SdrMark* pM=GetSdrMarkByIndex(nm); - if(CheckSingleSdrObjectHit(aPt,sal_uInt16(nTol),pM->GetMarkedSdrObj(),pM->GetPageView(),SdrSearchOptions::NONE,nullptr)) + if(CheckSingleSdrObjectHit(rPnt,sal_uInt16(nTol),pM->GetMarkedSdrObj(),pM->GetPageView(),SdrSearchOptions::NONE,nullptr)) { pTopMarkHit=pM; nTopMarkHit=nm; @@ -1520,7 +1517,7 @@ bool SdrMarkView::MarkNextObj(const Point& rPnt, short nTol, bool bPrev) for (size_t nm=0; nm<nMarkCount && pBtmMarkHit==nullptr; ++nm) { SdrMark* pM=GetSdrMarkByIndex(nm); SdrPageView* pPV2=pM->GetPageView(); - if (pPV2==pPV && CheckSingleSdrObjectHit(aPt,sal_uInt16(nTol),pM->GetMarkedSdrObj(),pPV2,SdrSearchOptions::NONE,nullptr)) + if (pPV2==pPV && CheckSingleSdrObjectHit(rPnt,sal_uInt16(nTol),pM->GetMarkedSdrObj(),pPV2,SdrSearchOptions::NONE,nullptr)) { pBtmMarkHit=pM; nBtmMarkHit=nm; @@ -1574,7 +1571,7 @@ bool SdrMarkView::MarkNextObj(const Point& rPnt, short nTol, bool bPrev) pObj = pObjList->GetObj(no); } - if (CheckSingleSdrObjectHit(aPt,sal_uInt16(nTol),pObj,pPV,SdrSearchOptions::TESTMARKABLE,nullptr)) + if (CheckSingleSdrObjectHit(rPnt,sal_uInt16(nTol),pObj,pPV,SdrSearchOptions::TESTMARKABLE,nullptr)) { if (TryToFindMarkedObject(pObj)==SAL_MAX_SIZE) { pFndObj=pObj; @@ -1810,7 +1807,6 @@ SdrObject* SdrMarkView::PickObj(const Point& rPnt, short nTol, SdrPageView*& rpP // nOptions & SdrSearchOptions::PASS2BOUND: n.i. // nOptions & SdrSearchOptions::PASS3NEAREST// n.i. if (nTol<0) nTol=ImpGetHitTolLogic(nTol,nullptr); - Point aPt(rPnt); SdrObject* pObj=nullptr; SdrObject* pHitObj=nullptr; SdrPageView* pPV=nullptr; @@ -1827,7 +1823,7 @@ SdrObject* SdrMarkView::PickObj(const Point& rPnt, short nTol, SdrPageView*& rpP SdrMark* pM=GetSdrMarkByIndex(nMrkNum); pObj=pM->GetMarkedSdrObj(); pPV=pM->GetPageView(); - pHitObj=CheckSingleSdrObjectHit(aPt,nTol,pObj,pPV,nOptions,nullptr); + pHitObj=CheckSingleSdrObjectHit(rPnt,nTol,pObj,pPV,nOptions,nullptr); if (bBack) nMrkNum++; } } @@ -1872,7 +1868,7 @@ SdrObject* SdrMarkView::PickObj(const Point& rPnt, short nTol, SdrPageView*& rpP if (pbHitPassDirect!=nullptr) *pbHitPassDirect = false; nTmpOptions=nTmpOptions | SdrSearchOptions::IMPISMASTER; } - pHitObj=CheckSingleSdrObjectHit(aPt,nTol,pObjList,pPV,nTmpOptions,pMVisLay,pObj,&(GetMarkedObjectList())); + pHitObj=CheckSingleSdrObjectHit(rPnt,nTol,pObjList,pPV,nTmpOptions,pMVisLay,pObj,&(GetMarkedObjectList())); if (bBack) nPgNum++; } } @@ -1887,8 +1883,8 @@ SdrObject* SdrMarkView::PickObj(const Point& rPnt, short nTol, SdrPageView*& rpP } if (pObj!=nullptr && (nOptions & SdrSearchOptions::TESTMACRO)) { SdrObjMacroHitRec aHitRec; - aHitRec.aPos=aPt; - aHitRec.aDownPos=aPt; + aHitRec.aPos=rPnt; + aHitRec.aDownPos=rPnt; aHitRec.nTol=nTol; aHitRec.pVisiLayer=&pPV->GetVisibleLayers(); aHitRec.pPageView=pPV; @@ -1897,7 +1893,7 @@ SdrObject* SdrMarkView::PickObj(const Point& rPnt, short nTol, SdrPageView*& rpP if (pObj!=nullptr && (nOptions & SdrSearchOptions::WITHTEXT) && pObj->GetOutlinerParaObject()==nullptr) pObj=nullptr; if (pObj!=nullptr && (nOptions & SdrSearchOptions::TESTTEXTAREA) && pPV) { - if(!SdrObjectPrimitiveHit(*pObj, aPt, 0, *pPV, nullptr, true)) + if(!SdrObjectPrimitiveHit(*pObj, rPnt, 0, *pPV, nullptr, true)) { pObj = nullptr; } @@ -1917,7 +1913,6 @@ bool SdrMarkView::PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageVie bool bCheckNearestOn3rdPass(nOptions & SdrSearchOptions::PASS3NEAREST); rpObj=nullptr; rpPV=nullptr; - Point aPt(rPnt); sal_uInt16 nTol=(sal_uInt16)mnHitTolLog; bool bFnd=false; const size_t nMarkCount=GetMarkedObjectCount(); @@ -1926,7 +1921,7 @@ bool SdrMarkView::PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageVie SdrMark* pM=GetSdrMarkByIndex(nMarkNum); SdrPageView* pPV=pM->GetPageView(); SdrObject* pObj=pM->GetMarkedSdrObj(); - bFnd = nullptr != CheckSingleSdrObjectHit(aPt,nTol,pObj,pPV,SdrSearchOptions::TESTMARKABLE,nullptr); + bFnd = nullptr != CheckSingleSdrObjectHit(rPnt,nTol,pObj,pPV,SdrSearchOptions::TESTMARKABLE,nullptr); if (bFnd) { rpObj=pObj; rpPV=pPV; @@ -1946,16 +1941,16 @@ bool SdrMarkView::PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageVie aRect.Top ()-=nTol; aRect.Right ()+=nTol; aRect.Bottom()+=nTol; - if (aRect.IsInside(aPt)) { + if (aRect.IsInside(rPnt)) { bFnd=true; rpObj=pObj; rpPV=pPV; } else if (bCheckNearestOn3rdPass) { sal_uIntPtr nDist=0; - if (aPt.X()<aRect.Left()) nDist+=aRect.Left()-aPt.X(); - if (aPt.X()>aRect.Right()) nDist+=aPt.X()-aRect.Right(); - if (aPt.Y()<aRect.Top()) nDist+=aRect.Top()-aPt.Y(); - if (aPt.Y()>aRect.Bottom()) nDist+=aPt.Y()-aRect.Bottom(); + if (rPnt.X()<aRect.Left()) nDist+=aRect.Left()-rPnt.X(); + if (rPnt.X()>aRect.Right()) nDist+=rPnt.X()-aRect.Right(); + if (rPnt.Y()<aRect.Top()) nDist+=aRect.Top()-rPnt.Y(); + if (rPnt.Y()>aRect.Bottom()) nDist+=rPnt.Y()-aRect.Bottom(); if (nDist<nBestDist) { nBestDist = nDist; pBestObj=pObj; commit aa109e6a6fe771965acd17c00126aff74ca6f5c2 Author: Matteo Casalin <[email protected]> Date: Fri Dec 22 23:36:55 2017 +0100 Share common code Change-Id: Ia6ee42c799e566ad837e89d6456c50c7217da1eb diff --git a/include/svx/svdmrkv.hxx b/include/svx/svdmrkv.hxx index 1741f7c8ca38..b670782d3137 100644 --- a/include/svx/svdmrkv.hxx +++ b/include/svx/svdmrkv.hxx @@ -162,6 +162,7 @@ protected: bool MarkGluePoints(const tools::Rectangle* pRect, bool bUnmark); void SetMoveOutside(bool bOn); + bool MarkableObjectsExceed( int n ) const; protected: // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView @@ -200,7 +201,7 @@ public: bool IsFrameHandles() const { return mbForceFrameHandles; } // returns true if number of markable objects is greater than 1 - bool HasMultipleMarkableObjects() const; + bool HasMultipleMarkableObjects() const { return MarkableObjectsExceed(1); }; void SetEditMode(SdrViewEditMode eMode); SdrViewEditMode GetEditMode() const { return meEditMode; } @@ -218,7 +219,7 @@ public: void SetFrameDragSingles(bool bOn=true) { SetFrameHandles(bOn); } bool IsFrameDragSingles() const { return IsFrameHandles(); } - bool HasMarkableObj() const; + bool HasMarkableObj() const { return MarkableObjectsExceed(0); }; // migrate selections diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index d02758a6eee8..2afc197bb8b8 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -522,41 +522,23 @@ void SdrMarkView::BrkMarkGluePoints() } } -bool SdrMarkView::HasMultipleMarkableObjects() const +bool SdrMarkView::MarkableObjectsExceed( int n ) const { SdrPageView* pPV = GetSdrPageView(); if (!pPV) return false; - int nCount=0; SdrObjList* pOL=pPV->GetObjList(); const size_t nObjCount = pOL->GetObjCount(); for (size_t nObjNum=0; nObjNum<nObjCount; ++nObjNum) { SdrObject* pObj=pOL->GetObj(nObjNum); - if (IsObjMarkable(pObj,pPV) && ++nCount>1) + if (IsObjMarkable(pObj,pPV) && --n<0) return true; } return false; } -bool SdrMarkView::HasMarkableObj() const -{ - SdrPageView* pPV = GetSdrPageView(); - if(pPV) - { - SdrObjList* pOL=pPV->GetObjList(); - const size_t nObjCount = pOL->GetObjCount(); - for (size_t nObjNum = 0; nObjNum<nObjCount; ++nObjNum) { - SdrObject* pObj=pOL->GetObj(nObjNum); - if (IsObjMarkable(pObj,pPV)) { - return true; - } - } - } - return false; -} - void SdrMarkView::hideMarkHandles() { if(!mbMarkHandlesHidden) commit 828a7ffd3e76d21d65edb822299ca0c5a2b70ef2 Author: Matteo Casalin <[email protected]> Date: Thu Dec 21 07:49:35 2017 +0100 Do not overwrite data with same value After emplace_back there are at least 2 elements, and GetPrevPos would point to previous back(). Commit 5e913234da65484778d53179ee2005aec01d0f0e removed a possible modification of such data, so this operation is now pointless. Change-Id: Ia5bec5e9b16e9dc9f34c7cf1dbb8e3f17510d83b diff --git a/svx/source/svdraw/svddrag.cxx b/svx/source/svdraw/svddrag.cxx index ce0637eebb61..5e123ffbd4c1 100644 --- a/svx/source/svdraw/svddrag.cxx +++ b/svx/source/svdraw/svddrag.cxx @@ -72,9 +72,7 @@ void SdrDragStat::NextMove(const Point& rPnt) void SdrDragStat::NextPoint() { - Point aPnt(mvPnts.back()); mvPnts.emplace_back(aRealNow); - mvPnts[GetPrevPos()] = aPnt; } void SdrDragStat::PrevPoint() commit df1a10dafd3a2263d6e46edcaa6e6c0a64a80598 Author: Matteo Casalin <[email protected]> Date: Thu Dec 21 07:13:16 2017 +0100 Directly access own data members, remove unused methods Change-Id: Id86d66738da2f6e4b86d4a4ee8da54940c751787 diff --git a/include/svx/svddrag.hxx b/include/svx/svddrag.hxx index d8dc4acbc1a9..7bedb45fc5b9 100644 --- a/include/svx/svddrag.hxx +++ b/include/svx/svddrag.hxx @@ -77,6 +77,8 @@ class SVX_DLLPUBLIC SdrDragStat final void Clear(); + sal_Int32 GetPrevPos() const { return mvPnts.size()-(mvPnts.size()>1 ? 2 : 1); } + public: SdrDragStat() { Reset(); } ~SdrDragStat(); @@ -88,14 +90,10 @@ public: const Point& GetPoint(sal_Int32 nNum) const { return mvPnts[nNum]; } sal_Int32 GetPointCount() const { return mvPnts.size(); } const Point& GetStart() const { return mvPnts[0]; } - void SetStart(const Point &pt) { mvPnts[0] = pt; } - const Point& GetPrev() const { return mvPnts[GetPointCount()-(GetPointCount()>=2 ? 2:1)]; } - void SetPrev(const Point &pt) { mvPnts[GetPointCount()-(GetPointCount()>=2 ? 2:1)] = pt; } + const Point& GetPrev() const { return mvPnts[GetPrevPos()]; } const Point& GetPos0() const { return aPos0; } const Point& GetNow() const { return mvPnts.back(); } void SetNow(Point const &pt) { mvPnts.back() = pt; } - const Point& GetRealNow() const { return aRealNow; } - void SetRealNow(Point const &pt) { aRealNow = pt; } const Point& GetRef1() const { return aRef1; } void SetRef1(const Point &pt) { aRef1 = pt; } const Point& GetRef2() const { return aRef2; } diff --git a/svx/source/svdraw/svddrag.cxx b/svx/source/svdraw/svddrag.cxx index e2d5cb5e5d39..ce0637eebb61 100644 --- a/svx/source/svdraw/svddrag.cxx +++ b/svx/source/svdraw/svddrag.cxx @@ -58,30 +58,30 @@ void SdrDragStat::Reset() void SdrDragStat::Reset(const Point& rPnt) { Reset(); - SetStart(rPnt); + mvPnts[0]=rPnt; aPos0=rPnt; - SetRealNow(rPnt); + aRealNow=rPnt; } void SdrDragStat::NextMove(const Point& rPnt) { - aPos0=GetNow(); - SetRealNow(rPnt); - SetNow(GetRealNow()); + aPos0=mvPnts.back(); + aRealNow=rPnt; + mvPnts.back()=rPnt; } void SdrDragStat::NextPoint() { - Point aPnt(GetNow()); - mvPnts.emplace_back(GetRealNow()); - SetPrev(aPnt); + Point aPnt(mvPnts.back()); + mvPnts.emplace_back(aRealNow); + mvPnts[GetPrevPos()] = aPnt; } void SdrDragStat::PrevPoint() { - if (mvPnts.size()>=2) { // one has to remain at all times + if (mvPnts.size()>1) { // one has to remain at all times mvPnts.erase(mvPnts.begin()+mvPnts.size()-2); - SetNow( GetRealNow() ); + mvPnts.back() = aRealNow; } } @@ -98,7 +98,7 @@ bool SdrDragStat::CheckMinMoved(const Point& rPnt) Fraction SdrDragStat::GetXFact() const { - long nMul=GetNow().X()-aRef1.X(); + long nMul=mvPnts.back().X()-aRef1.X(); long nDiv=GetPrev().X()-aRef1.X(); if (nDiv==0) nDiv=1; if (bHorFixed) { nMul=1; nDiv=1; } @@ -107,7 +107,7 @@ Fraction SdrDragStat::GetXFact() const Fraction SdrDragStat::GetYFact() const { - long nMul=GetNow().Y()-aRef1.Y(); + long nMul=mvPnts.back().Y()-aRef1.Y(); long nDiv=GetPrev().Y()-aRef1.Y(); if (nDiv==0) nDiv=1; if (bVerFixed) { nMul=1; nDiv=1; } @@ -116,9 +116,9 @@ Fraction SdrDragStat::GetYFact() const void SdrDragStat::TakeCreateRect(tools::Rectangle& rRect) const { - rRect=tools::Rectangle(GetStart(),GetNow()); - if (GetPointCount()>=2) { - Point aBtmRgt(GetPoint(1)); + rRect=tools::Rectangle(mvPnts[0], mvPnts.back()); + if (mvPnts.size()>1) { + Point aBtmRgt(mvPnts[1]); rRect.Right()=aBtmRgt.X(); rRect.Bottom()=aBtmRgt.Y(); } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
