31 #include <osl/diagnose.h>
33 #define LOOP_DETECT 250
55 : m_pMaster( pLay ), m_pSect( nullptr ) {}
60 bool HasEndnotes()
const {
return m_pEndArr && !m_pEndArr->empty(); }
65 OSL_ENSURE( pSct,
"CollectEndnotes: Which section?" );
90 pCnt->
Paste( pFootnote );
97 "Endnote without content?" );
111 if( pEndFootnote->GetAttr() == pFootnote->
GetAttr() )
133 "InsertEndnotes: Where's my column?" );
144 OSL_ENSURE( pPage,
"Where's my page?" );
183 #if OSL_DEBUG_LEVEL > 1
184 static bool bNoLouie =
false;
197 if (nNew < mnMaxPage && pPage->GetNext())
239 OSL_ENSURE(
mpLooping,
"Looping: Lost control" );
247 #if OSL_DEBUG_LEVEL > 1
248 OSL_FAIL(
"Looping Louie (Light): Fixating fractious frame" );
269 assert(pDoc &&
"No doc, no fun");
281 ( pLayouter->
mpEndnoter->GetSect()->IsAnFollow( pSect ) ||
293 OSL_ENSURE( pDoc,
"No doc, no fun" );
314 const sal_uInt32 _nToPageNum )
318 const_cast<SwDoc&
>(_rDoc).getIDocumentLayoutAccess().SetLayouter(
new SwLayouter() );
323 const_cast<SwDoc&
>(_rDoc).getIDocumentLayoutAccess().GetLayouter()->mpMovedFwdFrames.reset(
344 sal_uInt32& _ornToPageNum )
398 const_cast<SwDoc&
>(_rDoc).getIDocumentLayoutAccess().SetLayouter(
new SwLayouter() );
403 const_cast<SwDoc&
>(_rDoc).getIDocumentLayoutAccess().GetLayouter()->mpObjsTmpConsiderWrapInfl.reset(
431 const_cast<SwDoc&
>(rDoc).getIDocumentLayoutAccess().GetLayouter()->LoopingLouieLight( rDoc, rTextFrame );
441 bool bMoveBwdSuppressed(
false );
445 const_cast<SwDoc&
>(p_rDoc).getIDocumentLayoutAccess().SetLayouter(
new SwLayouter() );
457 while ( pLastLower && pLastLower->GetNext() )
459 pLastLower = pLastLower->
GetNext();
467 const sal_uInt16 cMoveBwdCountSuppressThreshold = 20;
468 if ( ++const_cast<SwDoc&>(p_rDoc).getIDocumentLayoutAccess().GetLayouter()->maMoveBwdLayoutInfo[ aMoveBwdLayoutInfo ] >
469 cMoveBwdCountSuppressThreshold )
471 bMoveBwdSuppressed =
true;
474 return bMoveBwdSuppressed;
480 const_cast<SwDoc&>(_rDoc).getIDocumentLayoutAccess().GetLayouter()->maMoveBwdLayoutInfo.clear();
Base class of the Writer layout elements.
Base class that provides the general functionalities for frames that are allowed at page breaks (flow...
Represents the visualization of a paragraph.
void LOOPING_LOUIE_LIGHT(bool bCondition, const SwTextFrame &rTextFrame)
void CollectEndnotes(SwSectionFrame *pSct)
void LoopControl(SwPageFrame *pPage)
tools::Long BottomDist(const SwRect &rRect, tools::Long nPos) const
std::unique_ptr< SwObjsMarkedAsTmpConsiderWrapInfluence > mpObjsTmpConsiderWrapInfl
static void ClearObjsTmpConsiderWrapInfluence(const SwDoc &_rDoc)
bool StartLooping(SwPageFrame const *pPage)
static void DestroyFrame(SwFrame *const pFrame)
this is the only way to delete a SwFrame instance
static bool StartLoopControl(SwDoc *pDoc, SwPageFrame const *pPage)
void Pos(const Point &rNew)
std::unique_ptr< SwMovedFwdFramesByObjPos > mpMovedFwdFrames
static void InsertObjForTmpConsiderWrapInfluence(const SwDoc &_rDoc, SwAnchoredObject &_rAnchoredObj)
sal_uInt16 GetPhyPageNum() const
static bool Collecting(SwDoc *pDoc, SwSectionFrame const *pSect, SwFootnoteFrame *pFootnote)
SwLooping(SwPageFrame const *pPage)
wrapper class for the positioning of Writer fly frames and drawing objects
const SwRect & getFrameArea() const
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
void CollectEndnote(SwFootnoteFrame *pFootnote)
static bool DoesRowContainMovedFwdFrame(const SwDoc &_rDoc, const SwRowFrame &_rRowFrame)
SwTwips mnFreeSpaceInNewUpper
void Width(tools::Long nNew)
static void RemoveObjForTmpConsiderWrapInfluence(const SwDoc &_rDoc, SwAnchoredObject &_rAnchoredObj)
std::unique_ptr< SwEndnoter > mpEndnoter
const SwAttrSet * GetAttrSet() const
WARNING: this may not return correct RES_PAGEDESC/RES_BREAK items for SwTextFrame, use GetBreakItem()/GetPageDescItem() instead.
static bool MoveBwdSuppressed(const SwDoc &p_rDoc, const SwFlowFrame &p_rFlowFrame, const SwLayoutFrame &p_rNewUpperFrame)
const SwFrame & GetFrame() const
virtual void Paste(SwFrame *pParent, SwFrame *pSibling=nullptr)=0
virtual void SetLayouter(SwLayouter *pNew)=0
std::unique_ptr< SwLooping > mpLooping
tools::Long GetPrtBottom(const SwFrame &rFrame) const
SwPageFrame * FindPageFrame()
static void RemoveMovedFwdFrame(const SwDoc &_rDoc, const SwTextFrame &_rTextFrame)
void CollectEndnote(SwFootnoteFrame *pFootnote)
const SwFrame * Lower() const
void Drastic(SwFrame *pFrame)
virtual SwLayouter * GetLayouter()=0
tools::Long GetHeight(const SwRect &rRect) const
SwLayoutFrame * GetUpper()
SwFootnoteBossFrame * FindFootnoteBossFrame(bool bFootnotes=false)
SwContentFrame * FindLastContent(SwFindMode nMode=SwFindMode::None)
A page of the document layout.
IDocumentLayoutAccess const & getIDocumentLayoutAccess() const
std::unique_ptr< SwFootnoteFrames > m_pEndArr
void CollectEndnotes(SwLayouter *pLayouter)
void InsertEndnotes(SwSectionFrame const *pSect)
sal_uInt16 mnLoopControlStage
SwEndnoter(SwLayouter *pLay)
const SwFrame * ContainsAny(const bool _bInvestigateFootnoteForSections=false) const
Method doesn't investigate content of footnotes by default.
static void ClearMoveBwdLayoutInfo(const SwDoc &p_rDoc)
const SwSectionFrame * GetSect() const
const SwDoc * GetDoc() const
bool IsLoopingLouieLight() const
bool IsAnFollow(const SwFlowFrame *pFlow) const
void ValidateThisAndAllLowers(const sal_uInt16 nStage)
void LoopingLouieLight(const SwDoc &rDoc, const SwTextFrame &rFrame)
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame...
bool IsFootnoteBossFrame() const
static bool FrameMovedFwdByObjPos(const SwDoc &_rDoc, const SwTextFrame &_rTextFrame, sal_uInt32 &_ornToPageNum)
std::vector< SwFootnoteFrame * > SwFootnoteFrames
void Height(tools::Long nNew)
static void CollectEndnotes(SwDoc *pDoc, SwSectionFrame *pSect)
sal_uInt32 GetFrameId() const
void Control(SwPageFrame *pPage)
static void InsertMovedFwdFrame(const SwDoc &_rDoc, const SwTextFrame &_rMovedFwdFrameByObjPos, const sal_uInt32 _nToPageNum)
SwRowFrame is one table row in the document layout.
void CollectEndnotes_(SwSectionFrame *pSect)
static void ClearMovedFwdFrames(const SwDoc &_rDoc)