sw/source/core/text/itrcrsr.cxx | 8 ++-- sw/source/core/text/itrform2.cxx | 2 - sw/source/core/text/porfly.cxx | 76 +++++++++++++-------------------------- sw/source/core/text/porfly.hxx | 58 ++++++++++++++--------------- 4 files changed, 61 insertions(+), 83 deletions(-)
New commits: commit 2250d7d4a1643672168387837ba2f9530fdb7dc2 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Mon Dec 19 05:12:39 2016 +0100 Split out sw::FlyContentPortion - Also void* as member are really bad, mmkay? - also move some OSL_... to SAL_... Change-Id: Iace3a4331522239eff4a25948a2f0e265e7c016d Reviewed-on: https://gerrit.libreoffice.org/32148 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Björn Michaelsen <bjoern.michael...@canonical.com> diff --git a/sw/source/core/text/itrcrsr.cxx b/sw/source/core/text/itrcrsr.cxx index f025acb..295006e 100644 --- a/sw/source/core/text/itrcrsr.cxx +++ b/sw/source/core/text/itrcrsr.cxx @@ -1684,13 +1684,13 @@ sal_Int32 SwTextCursor::GetCursorOfst( SwPosition *pPos, const Point &rPoint, } else { - if( bChgNode && pPos && pPor->IsFlyCntPortion() - && !static_cast<SwFlyCntPortion*>(pPor)->IsDraw() ) + sw::FlyContentPortion* pFlyPor(nullptr); + if(bChgNode && pPos && (pFlyPor = dynamic_cast<sw::FlyContentPortion*>(pPor))) { // JP 24.11.94: if the Position is not in Fly, then // we many not return with COMPLETE_STRING as value! // (BugId: 9692 + Change in feshview) - SwFlyInContentFrame *pTmp = static_cast<SwFlyCntPortion*>(pPor)->GetFlyFrame(); + SwFlyInContentFrame *pTmp = pFlyPor->GetFlyFrame(); SwFrame* pLower = pTmp->GetLower(); bool bChgNodeInner = pLower && (pLower->IsTextFrame() || pLower->IsLayoutFrame()); @@ -1705,7 +1705,7 @@ sal_Int32 SwTextCursor::GetCursorOfst( SwPosition *pPos, const Point &rPoint, if( bChgNodeInner && pTmp->Frame().IsInside( aTmpPoint ) && !( pTmp->IsProtected() ) ) { - static_cast<SwFlyCntPortion*>(pPor)->GetFlyCursorOfst(aTmpPoint, *pPos, pCMS); + pFlyPor->GetFlyCursorOfst(aTmpPoint, *pPos, pCMS); // After a change of the frame, our font must be still // available for/in the OutputDevice. // For comparison: Paint and new SwFlyCntPortion ! diff --git a/sw/source/core/text/itrform2.cxx b/sw/source/core/text/itrform2.cxx index 1ff4763..667b457 100644 --- a/sw/source/core/text/itrform2.cxx +++ b/sw/source/core/text/itrform2.cxx @@ -2539,7 +2539,7 @@ SwFlyCntPortion *SwTextFormatter::NewFlyCntPortion( SwTextFormatInfo &rInf, SwFlyCntPortion* pRet(nullptr); if( pFly ) { - pRet = SwFlyCntPortion::Create(*GetInfo().GetTextFrame(), pFly, aTmpBase, nTmpAscent, nTmpDescent, nFlyAsc, nFlyDesc, nMode); + pRet = sw::FlyContentPortion::Create(*GetInfo().GetTextFrame(), pFly, aTmpBase, nTmpAscent, nTmpDescent, nFlyAsc, nFlyDesc, nMode); // We need to make sure that our font is set again in the OutputDevice // It could be that the FlyInCnt was added anew and GetFlyFrame() would // in turn cause, that it'd be created anew again. diff --git a/sw/source/core/text/porfly.cxx b/sw/source/core/text/porfly.cxx index 298f4ea..57f77c9 100644 --- a/sw/source/core/text/porfly.cxx +++ b/sw/source/core/text/porfly.cxx @@ -203,7 +203,7 @@ sal_Int32 SwTextFrame::CalcFlyPos( SwFrameFormat* pSearch ) return pFound->GetStart(); } -void SwFlyCntPortion::Paint( const SwTextPaintInfo &rInf ) const +void sw::FlyContentPortion::Paint(const SwTextPaintInfo& rInf) const { // Baseline output // Re-paint everything at a CompletePaint call @@ -242,89 +242,67 @@ void SwFlyCntPortion::Paint( const SwTextPaintInfo &rInf ) const ((SwTextPaintInfo&)rInf).SetOut( rInf.GetVsh()->GetOut() ); } } + void sw::DrawFlyCntPortion::Paint(const SwTextPaintInfo&) const { - if(!static_cast<SwDrawContact*>(pContact)->GetAnchorFrame()) + if(!m_pContact->GetAnchorFrame()) { // No direct positioning of the drawing object is needed - SwDrawContact* pDrawContact = static_cast<SwDrawContact*>(pContact); - pDrawContact->ConnectToLayout(); + m_pContact->ConnectToLayout(); } } /** * Use the dimensions of pFly->OutRect() */ -SwFlyCntPortion::SwFlyCntPortion(SwFlyInContentFrame* pFly) - : pContact(pFly) - , bMax(false) +SwFlyCntPortion::SwFlyCntPortion() + : bMax(false) , nAlign(0) { - SAL_WARN_IF(!pFly, "sw.core", "SwFlyCntPortion::SwFlyCntPortion: no SwFlyInContentFrame!"); nLineLength = 1; SetWhichPor(POR_FLYCNT); } -sw::DrawFlyCntPortion::DrawFlyCntPortion(SwDrawContact* pDrawContact) - : SwFlyCntPortion((SwFlyInContentFrame*) pDrawContact) +sw::FlyContentPortion::FlyContentPortion(SwFlyInContentFrame* pFly) + : m_pFly(pFly) +{ + SAL_WARN_IF(!pFly, "sw.core", "SwFlyCntPortion::SwFlyCntPortion: no SwFlyInContentFrame!"); +} + +sw::DrawFlyCntPortion::DrawFlyCntPortion(SwDrawContact* pContact) + : m_pContact(pContact) { - SAL_WARN_IF(!pDrawContact, "sw.core", "SwFlyCntPortion::SwFlyCntPortion: no SwDrawContact!"); - if(!pDrawContact->GetAnchorFrame()) + assert(m_pContact); + if(!m_pContact->GetAnchorFrame()) { // No direct positioning needed any more - pDrawContact->ConnectToLayout(); + m_pContact->ConnectToLayout(); // Move object to visible layer - pDrawContact->MoveObjToVisibleLayer(pDrawContact->GetMaster()); + m_pContact->MoveObjToVisibleLayer(m_pContact->GetMaster()); } - } -SwFlyCntPortion* SwFlyCntPortion::Create(const SwTextFrame& rFrame, SwFlyInContentFrame* pFly, const Point& rBase, long nLnAscent, long nLnDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags) +sw::FlyContentPortion* sw::FlyContentPortion::Create(const SwTextFrame& rFrame, SwFlyInContentFrame* pFly, const Point& rBase, long nLnAscent, long nLnDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags) { - auto pNew(new SwFlyCntPortion(pFly)); + auto pNew(new sw::FlyContentPortion(pFly)); pNew->SetBase(rFrame, rBase, nLnAscent, nLnDescent, nFlyAsc, nFlyDesc, nFlags | AsCharFlags::UlSpace | AsCharFlags::Init); return pNew; } -sw::DrawFlyCntPortion* sw::DrawFlyCntPortion::Create(const SwTextFrame& rFrame, SwDrawContact* pDrawContact, const Point& rBase, long nLnAscent, long nLnDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags) +sw::DrawFlyCntPortion* sw::DrawFlyCntPortion::Create(const SwTextFrame& rFrame, SwDrawContact* pContact, const Point& rBase, long nLnAscent, long nLnDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags) { - auto pNew(new DrawFlyCntPortion(pDrawContact)); + auto pNew(new DrawFlyCntPortion(pContact)); pNew->SetBase(rFrame, rBase, nLnAscent, nLnDescent, nFlyAsc, nFlyDesc, nFlags | AsCharFlags::UlSpace | AsCharFlags::Init); return pNew; } -SwFlyCntPortion::SwFlyCntPortion( const SwTextFrame& rFrame, - SwDrawContact *pDrawContact, const Point &rBase, - long nLnAscent, long nLnDescent, - long nFlyAsc, long nFlyDesc, - AsCharFlags nFlags ) : - pContact( pDrawContact ), - bMax( false ), - nAlign( 0 ) -{ - if( !pDrawContact->GetAnchorFrame() ) - { - // No direct positioning needed any more - pDrawContact->ConnectToLayout(); - - // Move object to visible layer - pDrawContact->MoveObjToVisibleLayer( pDrawContact->GetMaster() ); - } - nLineLength = 1; - nFlags |= AsCharFlags::UlSpace | AsCharFlags::Init; - - SetBase( rFrame, rBase, nLnAscent, nLnDescent, nFlyAsc, nFlyDesc, nFlags ); - - SetWhichPor( POR_FLYCNT ); -} - SwFlyCntPortion::~SwFlyCntPortion() {}; - sw::DrawFlyCntPortion::~DrawFlyCntPortion() {}; +sw::FlyContentPortion::~FlyContentPortion() {}; -SdrObject* SwFlyCntPortion::GetSdrObj(const SwTextFrame&) +SdrObject* sw::FlyContentPortion::GetSdrObj(const SwTextFrame&) { - return GetFlyFrame()->GetVirtDrawObj(); + return m_pFly->GetVirtDrawObj(); } SdrObject* sw::DrawFlyCntPortion::GetSdrObj(const SwTextFrame& rFrame) @@ -434,9 +412,9 @@ void SwFlyCntPortion::SetBase( const SwTextFrame& rFrame, const Point &rBase, } } -void SwFlyCntPortion::GetFlyCursorOfst(Point &rPoint, SwPosition &rPos, SwCursorMoveState* pCMS) const +void sw::FlyContentPortion::GetFlyCursorOfst(Point& rPoint, SwPosition& rPos, SwCursorMoveState* pCMS) const { - GetFlyFrame()->GetCursorOfst(&rPos, rPoint, pCMS); + m_pFly->GetCursorOfst(&rPos, rPoint, pCMS); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/text/porfly.hxx b/sw/source/core/text/porfly.hxx index 28749ea..382d4ea 100644 --- a/sw/source/core/text/porfly.hxx +++ b/sw/source/core/text/porfly.hxx @@ -45,54 +45,54 @@ public: class SwFlyCntPortion : public SwLinePortion { protected: - - void *pContact; // bDraw ? DrawContact : FlyInContentFrame Point aRef; // Relatively to this point we calculate the AbsPos bool bMax : 1; // Line adjustment and height == line height sal_uInt8 nAlign : 3; // Line adjustment? No, above, middle, bottom - // Use new datatype for parameter <nFlags> - SwFlyCntPortion( const SwTextFrame& rFrame, SwDrawContact *pDrawContact, - const Point &rBase, - long nAscent, long nDescent, long nFlyAsc, long nFlyDesc, - AsCharFlags nFlags ); - virtual SdrObject* GetSdrObj(const SwTextFrame&); + virtual SdrObject* GetSdrObj(const SwTextFrame&) =0; public: - SwFlyCntPortion(SwFlyInContentFrame* pFly); - static SwFlyCntPortion* Create(const SwTextFrame& rFrame, SwFlyInContentFrame* pFly, const Point& rBase, long nAscent, long nDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags); + SwFlyCntPortion(); inline const Point& GetRefPoint() const { return aRef; } - inline SwFlyInContentFrame *GetFlyFrame() { return static_cast<SwFlyInContentFrame*>(pContact); } - inline const SwFlyInContentFrame *GetFlyFrame() const - { return static_cast<SwFlyInContentFrame*>(pContact); } - inline SwDrawContact *GetDrawContact() { return static_cast<SwDrawContact*>(pContact); } - inline const SwDrawContact* GetDrawContact() const - { return static_cast<SwDrawContact*>(pContact); } - virtual bool IsDraw() const { return false; } inline bool IsMax() const { return bMax; } inline sal_uInt8 GetAlign() const { return nAlign; } - inline void SetAlign( sal_uInt8 nNew ) { nAlign = nNew; } - inline void SetMax( bool bNew ) { bMax = bNew; } - void SetBase(const SwTextFrame& rFrame, const Point &rBase, long nLnAscent, long nLnDescent, long nFlyAscent, long nFlyDescent, AsCharFlags nFlags); - void GetFlyCursorOfst(Point &rPoint, SwPosition& rPos, SwCursorMoveState* pCMS) const; - virtual bool Format( SwTextFormatInfo &rInf ) override; - virtual void Paint( const SwTextPaintInfo &rInf ) const override; + inline void SetAlign(sal_uInt8 nNew) { nAlign = nNew; } + inline void SetMax(bool bNew) { bMax = bNew; } + void SetBase(const SwTextFrame& rFrame, const Point& rBase, long nLnAscent, long nLnDescent, long nFlyAscent, long nFlyDescent, AsCharFlags nFlags); + virtual bool Format(SwTextFormatInfo& rInf) override; OUTPUT_OPERATOR_OVERRIDE - virtual ~SwFlyCntPortion(); + virtual bool IsDraw() const =0; + virtual ~SwFlyCntPortion() override; }; namespace sw { - class DrawFlyCntPortion : public SwFlyCntPortion + class FlyContentPortion final : public SwFlyCntPortion + { + SwFlyInContentFrame* m_pFly; + virtual SdrObject* GetSdrObj(const SwTextFrame&) override; + public: + FlyContentPortion(SwFlyInContentFrame* pFly); + static FlyContentPortion* Create(const SwTextFrame& rFrame, SwFlyInContentFrame* pFly, const Point& rBase, long nAscent, long nDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags); + inline SwFlyInContentFrame *GetFlyFrame() { return m_pFly; } + inline const SwFlyInContentFrame *GetFlyFrame() const { return m_pFly; } + void GetFlyCursorOfst(Point& rPoint, SwPosition& rPos, SwCursorMoveState* pCMS) const; + virtual bool IsDraw() const override { return false; } + virtual void Paint(const SwTextPaintInfo& rInf) const override; + virtual ~FlyContentPortion() override; + }; + class DrawFlyCntPortion final : public SwFlyCntPortion { - protected: + SwDrawContact* m_pContact; virtual SdrObject* GetSdrObj(const SwTextFrame&) override; public: DrawFlyCntPortion(SwDrawContact* pDrawContact); static DrawFlyCntPortion* Create(const SwTextFrame& rFrame, SwDrawContact* pDrawContact, const Point& rBase, long nAsc, long nDescent, long nFlyAsc, long nFlyDesc, AsCharFlags nFlags); - virtual bool IsDraw() const { return true; } - virtual void Paint( const SwTextPaintInfo &rInf ) const override; - virtual ~DrawFlyCntPortion(); + inline SwDrawContact* GetDrawContact() { return m_pContact; } + inline const SwDrawContact* GetDrawContact() const { return m_pContact; } + virtual bool IsDraw() const override { return true; } + virtual void Paint(const SwTextPaintInfo& rInf) const override; + virtual ~DrawFlyCntPortion() override; }; }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits