diff options
author | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2016-12-19 05:12:39 +0100 |
---|---|---|
committer | Björn Michaelsen <bjoern.michaelsen@canonical.com> | 2016-12-21 19:29:22 +0000 |
commit | 2250d7d4a1643672168387837ba2f9530fdb7dc2 (patch) | |
tree | 97fe8447601b887b74571dbbe7a77f023b6eb1e3 /sw | |
parent | 65042d82a474fb6020add272cd7615517d606dc9 (diff) |
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 <ci@libreoffice.org>
Reviewed-by: Björn Michaelsen <bjoern.michaelsen@canonical.com>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/text/itrcrsr.cxx | 8 | ||||
-rw-r--r-- | sw/source/core/text/itrform2.cxx | 2 | ||||
-rw-r--r-- | sw/source/core/text/porfly.cxx | 76 | ||||
-rw-r--r-- | sw/source/core/text/porfly.hxx | 58 |
4 files changed, 61 insertions, 83 deletions
diff --git a/sw/source/core/text/itrcrsr.cxx b/sw/source/core/text/itrcrsr.cxx index f025acbd3049..295006e1a0b8 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 1ff476378ee2..667b4575082b 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 298f4eabbed6..57f77c95e5a7 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 28749ea6ec5c..382d4ea67eb2 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; }; } |