33 #include <objectformatter.hxx>
39 #include <osl/diagnose.h>
43 #define ENDNOTE 0x80000000
53 if ( it != rFootnoteIdxs.
end() )
60 OSL_ENSURE( !pDoc,
"FootnotePos not found." );
67 OSL_ENSURE( pDoc,
"SwFootnoteFrame: Missing doc!" );
97 "Where's the column?" );
101 return pOld != rpPage;
103 else if( bDontLeave )
117 rpBoss = static_cast<SwFootnoteBossFrame*>(pBody->
Lower());
199 if( static_cast<const SwTextFrame*>(pFrame)->IsUndersized() )
202 nRet =
static_cast<const SwTextFrame*
>(pFrame)->GetParHeight() -
243 aRectFnSet.
SetTop( aPrt, nBorder );
279 nRemaining += nBorder;
300 else if ( nDiff < 0 )
311 aRectFnSet.
SubTop( aPrt, nTmpDiff );
335 OSL_ENSURE( pSect,
"GrowFrame: Missing SectFrame" );
380 if ( nAvail > nDist )
391 aFrm.
Pos().AdjustX( -nDist );
409 pFootnote = pFootnote->
GetNext();
410 if( static_cast<SwFootnoteFrame*>(pFootnote)->GetAttr()->GetFootnote().IsEndNote() )
417 nReal += pBoss->
Grow( nGrow - nReal, bTst );
428 if ( nReal != nDist )
438 aFrm.
Pos().AdjustX(nDist );
456 bool bShrink =
false;
489 mbBackMoveLocked(
false ),
491 mbUnlockPosOfLowerObjs( true )
594 OSL_ENSURE( pParent,
"no parent in Paste." );
595 OSL_ENSURE( pParent->
IsLayoutFrame(),
"Parent is ContentFrame." );
596 OSL_ENSURE( pParent !=
this,
"I am my own parent." );
597 OSL_ENSURE( pSibling !=
this,
"I am my own sibling." );
599 "I am still somewhere registered." );
602 InsertBefore( static_cast<SwLayoutFrame*>(pParent), pSibling );
610 pContent->InvalidatePrt_();
616 pNext->InvalidatePos_();
617 if (
SwFrame *
const pContent = pNext->ContainsContent())
619 pContent->InvalidatePrt_();
630 "Footnote without content?" );
634 assert(pDel !=
this);
641 "Footnote without content?" );
644 assert(pDel !=
this);
648 #if OSL_DEBUG_LEVEL > 0
659 "Next is not FootnoteNext" );
683 OSL_ENSURE( pNxt->
IsColBodyFrame(),
"GetNextFootnoteLeaf: Funny Leaf" );
696 pPage = static_cast<SwPageFrame*>(pPage->
GetNext());
709 if ( pFootnote && pFootnote->
GetFollow() )
716 while( pTmpBoss != pBoss && pTmpBoss && !pTmpBoss->
GetPrev() )
718 if( pTmpBoss == pBoss )
738 pBoss = static_cast<SwFootnoteBossFrame*>(pLay->
Lower());
768 if( bEndn && pFootnote->
IsInSct() )
791 pTmpRef = pFootnote->
GetRef();
807 pNxtBoss = static_cast<SwFootnoteBossFrame*>(pNxtBoss->
GetPrev());
815 if( pNxtBoss == pOldBoss )
822 if( !pSect || !pSect->
Lower() )
825 "GetPrevFootnoteLeaf: Where's the column?" );
854 if ( pStop == pNxtBoss )
869 bJump = pOldBoss->
GetPrev() !=
static_cast<SwFrame const *
>(pNewBoss);
878 (nDiff > 1 && !static_cast<SwPageFrame*>(pOldPage->
GetPrev())->IsEmptyPage()) )
937 if ( bPageOnly && !pNxt )
944 }
while ( pFootnote );
952 if( pBody && pBody->
Lower() )
959 static_cast<SwSectionFrame*>(pLow)->Lower() &&
962 bPageOnly, bEndNotes );
982 pBoss = static_cast<SwFootnoteBossFrame*>(pBody->
Lower());
1010 pPage = static_cast<SwPageFrame*>(pPage->
GetNext());
1012 pPage = static_cast<SwPageFrame*>(pPage->
GetNext());
1042 #if OSL_DEBUG_LEVEL > 0
1049 assert(pFootnote->
IsFootnoteFrame() &&
"Neighbor of footnote must be a footnote");
1050 pFootnote = pFootnote->
GetNext();
1062 if ( !
GetFormat()->GetDoc()->GetFootnoteIdxs().empty() )
1074 if( pBoss && ( !bChgPage || pPage->
IsEndNotePage() == bEndNote ) )
1076 }
while ( !pCont && pPage );
1095 sal_uInt16
nPgNum, nColNum;
1101 OSL_ENSURE( pBoss,
"FindFirstFootnote: No boss found" );
1106 if ( nPgNum == nRefNum )
1109 if( nColNum == nRefCol )
1111 else if( nColNum > nRefCol )
1114 else if ( nPgNum > nRefNum )
1142 if ( nPgNum == nRefNum )
1145 if( nColNum == nRefCol )
1147 else if( nColNum > nRefCol )
1150 else if ( nPgNum > nRefNum )
1167 while ( pRet && (pRet->
GetRef() != pCnt) )
1173 pRet = static_cast<const SwFootnoteFrame*>(pRet->
GetNext());
1197 OSL_ENSURE( !pCheck->
GetMaster(),
"given master is not a Master." );
1203 GetNodes().GoNextSection( &aIdx,
true,
false );
1215 while ( pFootnote && pFootnote->
GetMaster() )
1217 if ( pFootnote != pCheck )
1229 pFrame = aIter.
Next();
1243 bool bDontLeave =
false;
1254 bDontLeave =
nullptr != pEndFormat;
1263 else if( pSibling->
IsInSct() )
1278 else if( pSibling->
IsInSct() )
1298 if( nCmpPos > nStPos )
1317 if ( nCmpPos > nStPos )
1334 OSL_ENSURE(
false,
"Could not find space for footnote.");
1342 while ( pSibling && nCmpPos <= nStPos )
1344 pLastSib = pSibling;
1355 "InsertFootnote: Master expected I" );
1366 ? pNxtB->FindNearestFootnoteCont( bDontLeave ) :
nullptr;
1375 OSL_ENSURE( nCmpPos > nLastPos,
"InsertFootnote: Order of FootnoteFrame's buggy" );
1380 if ( pSibling && pLastSib && (pSibling != pLastSib) )
1383 if ( nCmpPos > nStPos )
1384 pSibling = pLastSib;
1386 else if ( !pSibling )
1391 pSibling = pLastSib;
1394 OSL_ENSURE( !pSibling->
GetNext(),
"InsertFootnote: Who's that guy?" );
1408 while ( pSibling && !bEnd && (nCmpPos <= nStPos) )
1410 pLastSib = pSibling;
1420 GetAttr()->GetFootnote().IsEndNote() );
1424 ( nTmpRef == nRefNum &&
lcl_ColumnNum( pBoss ) <= nRefCol ))
1444 if ( !bEnd && pSibling )
1446 if (pSibling && (pSibling != pLastSib))
1449 if ( (nLastPos < nCmpPos) && (nCmpPos > nStPos) )
1451 pSibling = pLastSib;
1460 if ( nCmpPos < nStPos )
1473 OSL_FAIL(
"InsertFootnote: Master expected II" );
1482 OSL_ENSURE( pParent,
"paste in space?" );
1483 pNew->
Paste( pParent, pSibling );
1497 if (pCont && pCont->
Lower())
1501 static_cast<const SwFootnoteFrame*>(pCont->
Lower())->GetAttr()))
1528 bool bChgPage =
false;
1534 static_cast<SwSectionFrame*>(
GetUpper())->IsEndnAtEnd() )
1563 !pPage->
OnRightPage(),
false,
false,
true, nullptr );
1595 OSL_ENSURE(
false,
"no footnote content." );
1612 pTmp = static_cast<SwFootnoteFrame*>(pTmp->
GetNext());
1613 if( pTmp && *pTmp < pAttr )
1629 OSL_ENSURE( pBody,
"AppendFootnote: NoPageBody?" );
1631 pBoss = static_cast<SwFootnoteBossFrame*>(pBody->
Lower());
1642 if( pSect && !pSect->IsJoinLocked() && ( bEnd ? !pSect->IsEndnAtEnd() :
1643 !pSect->IsFootnoteAtEnd() ) && pSect->Growable() )
1644 pSect->InvalidateSize();
1649 const bool bOldFootnoteFrameLocked( pNew->
IsColLocked() );
1671 if ( !bOldFootnoteFrameLocked )
1680 if ( !bOldFootnoteFrameLocked && !pNew->
GetLower() &&
1697 OSL_ENSURE( pAttr->
GetStartNode(),
"FootnoteAtr without StartNode." );
1702 GetNodes().GoNextSection( &aIdx,
true,
false );
1716 if ( pFootnote && pFootnote->
GetRef() == pRef )
1722 if( pFootnote->
GetAttr() != pAttr )
1724 while ( pFootnote && pFootnote->
GetMaster() )
1729 }
while (
nullptr != (pFrame = aIter.
Next()) );
1749 }
while ( pFootnote );
1752 OSL_ENSURE( pRef->
IsTextFrame(),
"NoTextFrame has Footnote?" );
1754 if( !pMaster->IsLocked() )
1768 pFootnote->
SetRef( pNew );
1779 const bool _bCollectOnlyPreviousFootnotes )
1787 while ( !pFootnote && _pOld->
GetPrev() )
1800 nullptr != ( pPg =
static_cast<SwPageFrame*
>(pTmp->FindPageFrame()->GetPrev()))
1821 CollectFootnotes_(_pRef, pFootnote, _rFootnoteArr, _bCollectOnlyPreviousFootnotes ?
this :
nullptr);
1826 if ( rFootnoteArr.end() == std::find( rFootnoteArr.begin(), rFootnoteArr.end(), pFootnote ) )
1827 rFootnoteArr.push_back( pFootnote );
1844 OSL_ENSURE( !_pFootnote->
GetMaster() || _pFootnote->
GetRef() != _pRef,
"move FollowFootnote?" );
1848 bool bFound =
false;
1856 pNxtFootnote = pNxtFootnote->
GetFollow();
1859 if ( !pNxtFootnote )
1875 pNxtFootnote = pNxtFootnote->
GetMaster();
1876 if( pNxtFootnote == _pFootnote )
1877 pNxtFootnote =
nullptr;
1881 }
while( !pNxtFootnote && pBoss );
1885 OSL_ENSURE( !pNxtFootnote->
GetMaster(),
"_CollectFootnote: Master expected" );
1887 pNxtFootnote = pNxtFootnote->
GetMaster();
1889 if ( pNxtFootnote == _pFootnote )
1891 OSL_FAIL(
"_CollectFootnote: Vicious circle" );
1892 pNxtFootnote =
nullptr;
1896 bool bCollectFoundFootnote =
false;
1902 if (_pFootnote->
GetRef() == _pRef && (!bEndNote || bContinuousEndnotes))
1904 if (_pRefFootnoteBossFrame)
1907 OSL_ENSURE( pBossOfFoundFootnote,
1908 "<SwFootnoteBossFrame::CollectFootnotes_(..)> - footnote boss frame of found footnote frame missing.\nWrong layout!" );
1909 if ( !pBossOfFoundFootnote ||
1910 pBossOfFoundFootnote->
IsBefore( _pRefFootnoteBossFrame )
1913 bCollectFoundFootnote =
true;
1918 bCollectFoundFootnote =
true;
1922 if ( bCollectFoundFootnote )
1924 OSL_ENSURE( !_pFootnote->
GetMaster(),
"move FollowFootnote?" );
1928 SwFrame *pCnt = pNxt->ContainsAny();
1935 pCnt->
Paste( _pFootnote );
1941 OSL_ENSURE( !pNxt,
"footnote without content?" );
1957 if ( pNxtFootnote &&
1958 _rFootnoteArr.end() == std::find( _rFootnoteArr.begin(), _rFootnoteArr.end(), pNxtFootnote ) &&
1959 aNotFootnoteArr.end() == std::find( aNotFootnoteArr.begin(), aNotFootnoteArr.end(), pNxtFootnote ) )
1960 _pFootnote = pNxtFootnote;
1964 while ( _pFootnote );
1981 !pFootnote->GetAttr()->GetFootnote().IsEndNote()));
1982 if( pRefBoss !=
this )
1986 if( nRefNum < nMyNum || ( nRefNum == nMyNum && nRefCol <= nMyCol ) )
1991 if ( pFootnote->GetUpper() )
1996 SwFrame *pCnt = pFootnote->ContainsAny();
2002 while( pTmp && static_cast<SwLayoutFrame*>(pCnt)->IsAnLower( pTmp ) )
2039 pFootnote->Calc(
getRootFrame()->GetCurrShell()->GetOut());
2040 pFootnote->GetUpper()->Calc(
getRootFrame()->GetCurrShell()->GetOut());
2045 pCnt = pFootnote->ContainsAny();
2046 bool bUnlock = !pFootnote->IsBackMoveLocked();
2047 pFootnote->LockBackMove();
2051 pFootnote->KeepLockPosOfLowerObjs();
2065 pCnt = pFootnote->ContainsAny();
2083 pFootnote->UnlockBackMove();
2084 if( !pFootnote->ContainsAny() && !pFootnote->IsColLocked() )
2089 pFootnote =
nullptr;
2097 pFootnote->UnlockPosOfLowerObjs();
2098 pFootnote->Calc(
getRootFrame()->GetCurrShell()->GetOut());
2104 OSL_ENSURE( !pFootnote->GetMaster() && !pFootnote->GetFollow(),
2105 "DelFootnote and Master/Follow?" );
2108 pFootnote =
nullptr;
2114 pLastInsertedFootnote = pFootnote;
2120 if ( !(bCalc && pLastInsertedFootnote) )
2123 if ( !pLastInsertedFootnote->
GetNext() )
2184 "SwPageFrame::MoveFootnotes: source frame isn't on that FootnoteBoss" );
2192 OSL_ENSURE( pDestBoss,
"+SwPageFrame::MoveFootnotes: no destination boss" );
2198 if ( aFootnoteArr.empty() )
2205 if( pSrcPage != pDestPage )
2220 if( pFootnote && pFootnote->
GetPrev() && bLock )
2248 bool bStart = pAttr ==
nullptr;
2253 bool bUnlockLastFootnoteFrame(
false );
2266 if ( pFootnoteFrame != pLastFootnoteFrame )
2268 if ( pLastFootnoteFrame )
2270 if ( !bLock && bUnlockLastFootnoteFrame )
2278 if ( !bLock && bUnlockLastFootnoteFrame &&
2284 pLastFootnoteFrame->
Cut();
2286 pLastFootnoteFrame =
nullptr;
2291 bUnlockLastFootnoteFrame = !pFootnoteFrame->
IsColLocked();
2295 pLastFootnoteFrame = pFootnoteFrame;
2323 pCnt = pFootnote ? pFootnote->
ContainsAny() :
nullptr;
2332 if( !pFootnoteFrame->
Lower() &&
2336 OSL_ENSURE( pLastFootnoteFrame == pFootnoteFrame,
2337 "<SwFootnoteBossFrame::RearrangeFootnotes(..)> - <pLastFootnoteFrame> != <pFootnoteFrame>" );
2338 pLastFootnoteFrame =
nullptr;
2339 pFootnoteFrame->
Cut();
2341 if (pFootnote == pFootnoteFrame)
2342 pFootnote =
nullptr;
2391 bool bUnlockLastFootnoteFrameGuard = pLastFootnoteFrame && !pLastFootnoteFrame->
IsColLocked();
2392 if (bUnlockLastFootnoteFrameGuard)
2393 pLastFootnoteFrame->
ColLock();
2395 if (bUnlockLastFootnoteFrameGuard)
2409 if ( !pLastFootnoteFrame )
2412 if ( !bLock && bUnlockLastFootnoteFrame )
2420 if ( !bLock && bUnlockLastFootnoteFrame &&
2425 pLastFootnoteFrame->
Cut();
2437 if( !pBody || !pBody->
Lower() )
2441 sal_uInt16 nNum = 0;
2445 if( static_cast<SwTextFrame*>(pContent)->HasFootnote() )
2450 pContent = static_cast<SwSectionFrame*>(pBoss->
GetUpper())->FindLastContent();
2471 if (nNum != nOldNumRLHidden)
2473 pTextFootnote->
SetNumber(nOldNum, nNum, OUString());
2478 if (nNum != nOldNum)
2480 pTextFootnote->
SetNumber(nNum, nOldNumRLHidden, OUString());
2485 pFootnote = static_cast<SwFootnoteFrame*>(pFootnote->
GetNext());
2492 pFootnote =
nullptr;
2499 if( pFootnote && pFootnote->
GetRef() != pContent )
2500 pFootnote =
nullptr;
2542 OSL_ENSURE( pPg ||
IsInSct(),
"Footnote lost page" );
2575 nTmp += aRectFnSet.
YDiff(
2633 OSL_ENSURE( pTmp,
"NeighbourhoodAdjustment: Missing Lower()" );
2639 "NeighbourhoodAdjustment: Who's that guy?" );
2672 if ( pNewBoss == pOldBoss )
2675 bool bMoved =
false;
2683 if ( static_cast<SwTextFrame*>(pStart)->HasFootnote() )
2696 "MoveLowerFootnotes: Section confusion" );
2697 std::unique_ptr<SwFootnoteFrames> pFootnoteArr;
2701 bool bFoundCandidate =
false;
2702 if (pStart && pOldBoss->
IsInSct())
2706 bFoundCandidate = pOldChief != pNewChief;
2709 if (bFoundCandidate)
2716 if ( static_cast<SwTextFrame*>(pStart)->HasFootnote() )
2718 pOldBoss, *pFootnoteArr );
2721 if( pFootnoteArr->empty() )
2723 pFootnoteArr.reset();
2727 pFootnoteArr =
nullptr;
2729 if ( !aFootnoteArr.empty() || pFootnoteArr )
2731 if( !aFootnoteArr.empty() )
2737 pFootnoteArr.reset();
2742 if ( bFootnoteNums )
2746 if( pOldPage != pNewPage )
2769 if( !pBody || !pBody->
Lower() )
2779 pNxt = static_cast<SwLayoutFrame*>(pNxt->
GetNext());
2791 bool bSamePage =
true;
2799 bool bSameBoss = pNewBoss == pOldBoss;
2818 SwFrame* pNx = pCont->Lower();
2820 while(pNx && !static_cast<SwFootnoteFrame*>(pNx)->GetAttr()->GetFootnote().IsEndNote())
2822 pTmpFootnote->
Paste( pCont, pNx );
2840 pNewUp->InsertBefore( pTmpFootnote, pTmpFootnote->
Lower() );
2846 aFrm.
Pos().AdjustY(1 );
2856 pTmpNxt = static_cast<SwContentFrame*>(pTmp);
2858 pTmpNxt = static_cast<SwSectionFrame*>(pTmp);
2861 OSL_ENSURE( pTmp->
IsTabFrame(),
"GetNextSctLeaf: Wrong Type" );
2884 nOldHeight( pBs->GetMaxFootnoteHeight() )
2953 SwFrame* pTmpLastLower( pLastLowerOfFootnote );
2954 while ( pTmpLastLower && pTmpLastLower->
GetNext() )
2956 pTmpLastLower = pTmpLastLower->
GetNext();
2958 !
static_cast<SwTextFrame*
>(pTmpLastLower)->IsHiddenNow() ) ||
2965 pLastLowerOfFootnote = pTmpLastLower;
2970 if ( pLastLowerOfFootnote && pLastLowerOfFootnote->
IsTabFrame() )
2974 else if ( pLastLowerOfFootnote && pLastLowerOfFootnote->
IsSctFrame() )
2980 pLastContentFrame =
dynamic_cast<SwContentFrame*
>(pLastLowerOfFootnote);
2983 return pLastContentFrame;
void InsertBefore(SwLayoutFrame *pParent, SwFrame *pBehind)
Insert SwFrame into existing structure.
bool IsAnLower(const SwFrame *) const
SwSectionFrame * FindMaster() const
void SetTop(SwRect &rRect, tools::Long nNew) const
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
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.
Marks a position in the document model.
void AddHeight(SwRect &rRect, tools::Long nNew) const
SwContentFrame * GetNextContentFrame() const
SwTwips Grow(SwTwips, bool bTst=false, bool bInfo=false)
void RemoveFootnotes(SwPageFrame *pPage=nullptr, bool bPageOnly=false, bool bEndNotes=false)
Remove all footnotes (but no references)
static void SetMoveBwdJump(bool bNew)
tools::Long BottomDist(const SwRect &rRect, tools::Long nPos) const
bool MoveFootnoteCntFwd(bool, SwFootnoteBossFrame *)
Return value guarantees that a new page was not created. See SwFlowFrame::MoveFwd.
SwFootnoteFrame * ImplFindFootnoteFrame()
static void CheckPageDescs(SwPageFrame *pStart, bool bNotifyFields=true, SwPageFrame **ppPrev=nullptr)
Check all pages (starting from the given one) if they use the appropriate frame format.
bool IsBefore(const SwLayoutFrame *_pCheckRefLayFrame) const
method to check relative position of layout frame to a given layout frame.
void SetCompletePaint() const
bool IsInFootnote() const
virtual bool Prepare(const PrepareHint ePrep=PrepareHint::Clear, const void *pVoid=nullptr, bool bNotify=true)
const SwRect & getFramePrintArea() const
virtual bool Prepare(const PrepareHint ePrep=PrepareHint::Clear, const void *pVoid=nullptr, bool bNotify=true) override
SwContentFrame: the shortcut for the Frames If the void* casts wrongly, it's its own fault! The void*...
SwTabFrame is one table in the document layout, containing rows (which contain cells).
SwContentFrame * getLayoutFrame(const SwRootFrame *, const SwPosition *pPos=nullptr, std::pair< Point, bool > const *pViewPosAndCalcFrame=nullptr) const
static sal_uInt16 lcl_ColumnNum(const SwFrame *pBoss)
void SetColMaxFootnoteHeight()
Adapt the max. footnote height in each single column.
const_iterator find(const Value &x) const
virtual void Paste(SwFrame *pParent, SwFrame *pSibling=nullptr) override
void SubTop(SwRect &rRect, tools::Long nNew) const
static void DestroyFrame(SwFrame *const pFrame)
this is the only way to delete a SwFrame instance
void Pos(const Point &rNew)
Dialog to specify the properties of date form field.
virtual void Calc(vcl::RenderContext *pRenderContext) const
bool IsFootnotePage() const
Foot note interface.
tools::Long GetWidth(const SwRect &rRect) const
static SwFlowFrame * CastFlowFrame(SwFrame *pFrame)
void AddBottom(SwRect &rRect, tools::Long nNew) const
bool IsFootnoteFrame() const
bool ToMaximize(bool bCheckFollow) const
A sectionfrm has to maximize, if he has a follow or a ftncontainer at the end of the page...
bool isFrameAreaDefinitionValid() const
tools::Long TopDist(const SwRect &rRect, tools::Long nPos) const
sal_uInt16 GetPhyPageNum() const
tools::Long GetTop(const SwRect &rRect) const
SwSectionFrame * ImplFindSctFrame()
const SwPageFootnoteInfo & GetFootnoteInfo() const
void sw_RemoveFootnotes(SwFootnoteBossFrame *pBoss, bool bPageOnly, bool bEndNotes)
remove all footnotes (not the references) and all footnote pages
const SwRect & getFrameArea() const
bool getBrowseMode() const
const SwPageFrame * GetLastPage() const
sal_Int32 GetStart() const
void SetSuperfluous()
Remove superfluous Pages.
void setFramePrintAreaValid(bool bNew)
bool IsPageBodyFrame() const
SwLayoutFrame * GetNextSctLeaf(MakePageType eMakePage)
Returns the next layout sheet where the frame can be moved in.
bool IsDescendantFrom(const SwSectionFormat *pSect) const
const SwAttrSet * GetAttrSet() const
WARNING: this may not return correct RES_PAGEDESC/RES_BREAK items for SwTextFrame, use GetBreakItem()/GetPageDescItem() instead.
virtual void Paste(SwFrame *pParent, SwFrame *pSibling=nullptr)=0
bool IsFootnoteLock() const
bool IsColumnFrame() const
SwFootnoteFrame * FindFootnoteFrame()
SwTabFrame * ImplFindTabFrame()
bool IsContentFrame() const
static void FootnoteInArr(SwFootnoteFrames &rFootnoteArr, SwFootnoteFrame *pFootnote)
SwFrame * GetIndPrev() const
tools::Long GetPrtBottom(const SwFrame &rFrame) const
const SwFrame * GetLastLower() const
const SwSectionFrame * GetFollow() const
SwPageFrame * FindPageFrame()
virtual bool IsDeleteForbidden() const
virtual void Cut() override
const SwFrame * Lower() const
SwContentFrame * FindNextCnt(const bool _bInSameFootnote=false)
SwPageDesc * GetPageDesc()
SwTwips AdjustNeighbourhood(SwTwips nDiff, bool bTst=false)
Adjust surrounding neighbourhood after insertion.
SwContentNode * GetContentNode()
void InvalidatePage(const SwPageFrame *pPage=nullptr) const
Invalidates the page in which the Frame is currently placed.
tools::Long GetHeight(const SwRect &rRect) const
SwLayoutFrame * GetUpper()
void AddHeight(const tools::Long nAdd)
bool isFramePrintAreaValid() const
Marks a character position inside a document model node.
bool IsEndNotePage() const
static sal_uLong lcl_FindFootnotePos(const SwDoc *pDoc, const SwTextFootnote *pAttr)
Search the position of an attribute in the FootnoteArray at the document, because all footnotes are l...
tools::Long GetPrtTop(const SwFrame &rFrame) const
SwFootnoteBossFrame * FindFootnoteBossFrame(bool bFootnotes=false)
Provides access to settings of a document.
Marks a node in the document model.
const IDocumentSettingAccess * getIDocumentSettingAccess() const
Provides access to the document setting interface.
const_iterator end() const
tools::Long YDiff(tools::Long n1, tools::Long n2) const
bool isFrameAreaSizeValid() const
SwContentFrame * FindLastContent(SwFindMode nMode=SwFindMode::None)
void UpdateFootnoteNums()
Update the footnote numbers of all Pages.
A page of the document layout.
const SwFormatFootnote & GetFootnote() const
SwTwips Shrink(SwTwips, bool bTst=false, bool bInfo=false)
SwLayoutFrame * GetPrevFootnoteLeaf(MakePageType eMakeFootnote)
Get the preceding layout leaf in that the frame can be moved.
SwSectionFrame * FindSctFrame()
const SwFrameFormat * GetDfltFrameFormat() const
const_iterator begin() const
tools::Long const nBorder
bool IsLayoutFrame() const
SwTextNode is a paragraph in the document model.
bool Growable() const
checks whether the SectionFrame is still able to grow, as case may be the environment has to be asked...
void SetWidth(SwRect &rRect, tools::Long nNew) const
SwContentFrame * FindLastBodyContent()
Searches the last ContentFrame in BodyText below the page.
void MoveSubTree(SwLayoutFrame *pParent, SwFrame *pSibling=nullptr)
hook tree onto new parent with minimal operations and notifications
SwLayoutFrame * GetLeaf(MakePageType eMakePage, bool bFwd)
void CheckFootnotePageDescs(bool bEndNote)
Change the page template of the footnote pages.
SwPageDesc * GetPageDesc(SwDoc &rDoc) const
static SwPageFrame * lcl_GetApproximateFootnotePage(const bool bEnd, const SwPageFrame *pPage, const SwDoc *pDoc, const SwTextFootnote *pAttr)
virtual SwTwips ShrinkFrame(SwTwips, bool bTst=false, bool bInfo=false) override
#define SAL_WARN_IF(condition, area, stream)
SwTextFrame * FindMaster() const
sal_uInt16 GetPhyPageNum() const
bool MoveLowerFootnotes(SwContentFrame *pStart, SwFootnoteBossFrame *pOldBoss, SwFootnoteBossFrame *pNewBoss, const bool bFootnoteNums)
Moving the Footnotes of all Lowers - starting from StartContent.
const SwViewOption * GetViewOptions() const
const SwFrame * ContainsAny(const bool _bInvestigateFootnoteForSections=false) const
Method doesn't investigate content of footnotes by default.
const SwSectionFormat * GetEndSectFormat() const
void SetHeight(SwRect &rRect, tools::Long nNew) const
IDocumentSettingAccess const & getIDocumentSettingAccess() const
const SwDoc * GetDoc() const
void InvalidateNextPos(bool bNoFootnote=false)
bool IsColBodyFrame() const
These SwFrame inlines are here, so that frame.hxx does not need to include layfrm.hxx.
static bool lcl_NextFootnoteBoss(SwFootnoteBossFrame *&rpBoss, SwPageFrame *&rpPage, bool bDontLeave)
void setFrameAreaSizeValid(bool bNew)
bool IsFootnoteAllowed() const
virtual void Cut() override
bool IsHideRedlines() const
Replacement for sw::DocumentRedlineManager::GetRedlineFlags() (this is layout-level redline hiding)...
virtual bool get(DocumentSettingId id) const =0
Return the specified document setting.
bool IsAnFollow(const SwFlowFrame *pFlow) const
const SfxPoolItem & GetAttr() const
SwLayoutFrame * GetNextFootnoteLeaf(MakePageType eMakePage)
Return the next layout leaf in that the frame can be moved.
tools::Long GetBottom(const SwRect &rRect) const
SwFootnoteIdxs & GetFootnoteIdxs()
bool IsFootnoteAtEnd() const
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame...
bool IsFootnoteBossFrame() const
SwTwips FootnoteSeparatorHeight(SwPageFootnoteInfo const &rInf)
SwPageFrame * InsertPage(SwPageFrame *pSibling, bool bFootnote)
bool IsFootnoteContFrame() const
std::vector< SwFootnoteFrame * > SwFootnoteFrames
const SwContentFrame * ContainsContent() const
Checks if the frame contains one or more ContentFrame's anywhere in his subsidiary structure; if so t...
void SetEndNotePage(bool b)
SwViewShell * GetCurrShell() const
void Height(tools::Long nNew)
const SwFootnoteInfo & GetFootnoteInfo() const
SwRootFrame * getRootFrame()
const SwEndNoteInfo & GetEndNoteInfo() const
std::vector< SwTextFootnote * >::const_iterator const_iterator
static tools::Long lcl_Undersize(const SwFrame *pFrame)
bool IsInHeadline(const SwFrame &rFrame) const
bool m_bDetectedRangeSegmentation false
virtual const SwFrameFormat * GetFormat() const