20#include <config_feature_desktop.h>
21#include <config_wasm_strip.h>
65#include <objectformatter.hxx>
79 ((std::clock() -
m_nStartTicks) * 1000 / CLOCKS_PER_SEC >= CLOCKS_PER_SEC/2) )
110 for (
size_t i = 0;
i < rObjs.
size() && !aTmp.empty(); ++
i )
128 if ( pSelfFly && pSelfFly->
IsLowerOf( pFly ) )
145 const bool bLowerOfSelf = pFly->
IsLowerOf( pSelfFly );
156 if ( pFly->
Lower() &&
175 bool bRetPaint =
false;
176 for (
const auto& rRegionRect : aTmp )
218 const bool bHeightDiff = nOldHeight != nNewHeight;
223 if( nOldHeight > nNewHeight )
225 aRectFnSet.
SetTop( aDrawRect, nOldBottom );
252 m_pOptTab( nullptr ),
253 m_nPreInvaPage( USHRT_MAX ),
254 m_nStartTicks(
std::clock() ),
256 m_nEndPage( USHRT_MAX ),
257 m_nCheckPageNum( USHRT_MAX )
272 OSL_ENSURE( !
m_pWait,
"Wait object not destroyed" );
416 bool bPageChgd =
false;
417 while ( pCnt && pCnt->IsFollow() )
419 if ( pCnt && pChk != pCnt )
431 while ( pCnt && pCnt->IsFollow() )
433 if ( pCnt && pCnt != pChk )
454 assert( pPageFrame );
461 pObj->UnlockPosition();
493 sal_uInt16 nPercentPageNum = 0;
495 auto lcl_isLayoutLooping = [&]()
497 const bool bAgain = this->
IsAgain();
498 if (bAgain && bNoLoop)
503 int nOuterLoopControlRuns = 0;
504 const int nOutermoopControlMax = 10000;
511 if (++nOuterLoopControlRuns > nOutermoopControlMax)
513 SAL_WARN(
"sw",
"SwLayAction::InternalAction has run too many loops");
520 if (!pPage || m_nCheckPageNum < pPage->GetPhyPageNum())
553 if (lcl_isLayoutLooping())
return;
575 if (lcl_isLayoutLooping())
return;
578 int nLoopControlRuns_1 = 0;
579 const int nLoopControlMax = 20;
585 if ( ++nLoopControlRuns_1 > nLoopControlMax )
587 OSL_FAIL(
"LoopControl_1 in SwLayAction::InternalAction" );
592 if (lcl_isLayoutLooping())
return;
605 if (lcl_isLayoutLooping())
return;
622 if (lcl_isLayoutLooping())
return;
687 if (lcl_isLayoutLooping())
return;
691 while ( pPage && pPage->
GetNext() &&
695 else if (bTakeShortcut)
717 if (lcl_isLayoutLooping())
return;
732 (
IsIdle() && pPg == pPage ) ) )
736 if (lcl_isLayoutLooping())
return;
739 int nLoopControlRuns_2 = 0;
740 const int nLoopControlMax = 20;
750 if (lcl_isLayoutLooping())
return;
760 int nLoopControlRuns_3 = 0;
766 if ( ++nLoopControlRuns_3 > nLoopControlMax )
768 OSL_FAIL(
"LoopControl_3 in Interrupt formatting in SwLayAction::InternalAction" );
773 if (lcl_isLayoutLooping())
return;
785 if ( ++nLoopControlRuns_2 > nLoopControlMax )
787 OSL_FAIL(
"LoopControl_2 in Interrupt formatting in SwLayAction::InternalAction" );
793 if (lcl_isLayoutLooping())
return;
835 const sal_Int32 nAllLines =
static_cast<const SwTextFrame*
>(pCnt)->GetAllLines();
900 OSL_ENSURE( pFrame->
IsLayoutFrame(),
"FindFirstInvaLay, no LayFrame" );
912 if (
nullptr != pTmp )
938 if (
auto pFly = pObj->DynCastFlyFrame() )
940 if ( pFly->IsFlyInContentFrame() )
945 if ( pFly->getFrameArea().Top() <= nBottom )
968 OSL_ENSURE( _pPage->
GetSortedObjs(),
"FindFirstInvaObj, no Objs" );
972 if (
auto pFly = pObj->DynCastFlyFrame() )
974 if ( pFly->getFrameArea().Top() <= _nBottom )
976 if ( pFly->IsInvalid() || pFly->IsCompletePaint() )
987 if ( !pDrawObject->IsValidPos() )
1022 prPage->
Calc(pRenderContext);
1024 while ( pPageLowerFrame )
1026 pPageLowerFrame->
Calc(pRenderContext);
1027 pPageLowerFrame = pPageLowerFrame->
GetNext();
1059 while ( p2ndPage && !pContent )
1072 bool bTstCnt =
true;
1076 const SwFrame *pLst = pContent;
1095 bool bPageChg =
false;
1102 pSct->
Calc(pRenderContext);
1114 pContent->
Calc(pRenderContext);
1123 if ( !bPageChg && pContent->
IsInTab() )
1128 pTab->
Calc(pRenderContext);
1138 if ( !bPageChg && pContent->
IsInSct() )
1143 pSct->
Calc(pRenderContext);
1177 if ( pObj->GetAnchorFrameContainingAnchPos() == pContent )
1189 if ( !bRet && bBrowse )
1200 const SwFrame* pFrame(
nullptr );
1221 OSL_ENSURE( !
IsAgain(),
"Attention to the invalid page." );
1225 bool bChanged =
false;
1226 bool bAlreadyPainted =
false;
1228 SwRect aFrameAtCompletePaint;
1236 SwRect aOldRect( aOldFrame );
1239 aOldRect =
static_cast<SwPageFrame*
>(pLay)->GetBoundRect(pRenderContext);
1244 pLay->
Calc(pRenderContext);
1250 bool bNoPaint =
false;
1274 if( bPageInBrowseMode )
1278 bPageInBrowseMode =
false;
1280 if( bPageInBrowseMode )
1293 for (
size_t i = 0;
i < aRegion.size(); ++
i )
1297 aRegion.push_back( aPaint );
1298 aRegion -= aOldRect;
1299 for (
size_t i = 0;
i < aRegion.size(); ++
i )
1306 bAlreadyPainted =
true;
1319 const bool bPrev = bLeftToRightViewLayout ? pLay->
GetPrev() : pLay->
GetNext();
1320 const bool bNext = bLeftToRightViewLayout ? pLay->
GetNext() : pLay->
GetPrev();
1335 SwRect aSpaceToPrevPage( aPageRect );
1336 aSpaceToPrevPage.
Top( aSpaceToPrevPage.
Top() - nHalfDocBorder );
1338 if(!aSpaceToPrevPage.
IsEmpty())
1342 aSpaceToPrevPage = aPageRect;
1343 aSpaceToPrevPage.
Left( aSpaceToPrevPage.
Left() - nHalfDocBorder );
1345 if(!aSpaceToPrevPage.
IsEmpty())
1351 SwRect aSpaceToNextPage( aPageRect );
1352 aSpaceToNextPage.
Bottom( aSpaceToNextPage.
Bottom() + nHalfDocBorder );
1354 if(!aSpaceToNextPage.
IsEmpty())
1358 aSpaceToNextPage = aPageRect;
1359 aSpaceToNextPage.
Right( aSpaceToNextPage.
Right() + nHalfDocBorder );
1361 if(!aSpaceToNextPage.
IsEmpty())
1380 if( bAlreadyPainted )
1394 bool bTabChanged =
false;
1395 while ( pLow && pLow->
GetUpper() == pLay )
1409 if (pTab->IsFollow())
1445 if ( bAlreadyPainted &&
1446 ( aBoundRect.
Width() > aFrameAtCompletePaint.
Width() ||
1452 return bChanged || bTabChanged;
1458 OSL_ENSURE( !
IsAgain(),
"Attention to the invalid page." );
1462 bool bChanged =
false;
1463 bool bAddRect =
true;
1469 pFly->
Calc(pRenderContext);
1506 OSL_ENSURE( !
IsAgain(),
"8-) Attention to the invalid page." );
1514 bool bChanged =
false;
1515 bool bPainted =
false;
1531 pTab->
Calc(pRenderContext);
1661 std::vector<std::pair<SwAnchoredObject*, SwPageFrame*>> moved;
1662 for (auto const pObj : *pObjs)
1664 assert(!pObj->AnchorFrame()->IsTextFrame()
1665 || !static_cast<SwTextFrame const*>(pObj->AnchorFrame())->IsFollow());
1666 SwPageFrame *const pAnchorPage(pObj->AnchorFrame()->FindPageFrame());
1667 assert(pAnchorPage);
1668 if (pAnchorPage != pPage
1669 && pPage->GetPhyPageNum() < pAnchorPage->GetPhyPageNum()
1670 && pObj->GetFrameFormat().GetAnchor().GetAnchorId()
1671 != RndStdIds::FLY_AS_CHAR)
1673 moved.emplace_back(pObj, pAnchorPage);
1676 for (
auto const& [pObj, pAnchorPage] : moved)
1678 SAL_INFO(
"sw.layout",
"SwLayAction::FormatContent: move anchored " << pObj <<
" from " << pPage->
GetPhyPageNum() <<
" to " << pAnchorPage->GetPhyPageNum());
1679 pObj->RegisterAtPage(*pAnchorPage);
1682 pObj->InvalidateObjPos();
1690 pObj->SetForceNotifyNewBackground(
true);
1697 pContent->InvalidateSize();
1707 while ( pContent && pPage->IsAnLower( pContent ) )
1710 const bool bFull = !pContent->isFrameAreaDefinitionValid() || pContent->IsCompletePaint() ||
1711 pContent->IsRetouche() || pContent->GetDrawObjs();
1715 const bool bNxtCnt = IsCalcLayout() && !pContent->GetFollow();
1717 SwContentFrame*
const pContentPrev = pContent->
GetPrev() ? pContent->GetPrevContentFrame() :
nullptr;
1718 std::optional<SfxDeleteListener> oPrevDeleteListener;
1720 oPrevDeleteListener.emplace(*pContentPrev);
1725 const bool bOldPaint = IsPaint();
1726 m_bPaint = bOldPaint && !(pTab && pTab == m_pOptTab);
1727 FormatContent_( pContent, pPage );
1729 m_bPaint = bOldPaint;
1738 ( !IsInterrupt() || mbFormatContentOnInterrupt ) &&
1739 pContent->IsTextFrame() &&
1741 *(pContent->FindPageFrame()),
this ) )
1746 if ( !pContent->GetValidLineNumFlag() && pContent->IsTextFrame() )
1748 const sal_Int32 nAllLines =
static_cast<const SwTextFrame*
>(pContent)->GetAllLines();
1750 if ( IsPaintExtraData() && IsPaint() &&
1751 nAllLines !=
static_cast<const SwTextFrame*
>(pContent)->GetAllLines() )
1752 m_pImp->GetShell()->AddPaintRect( pContent->getFrameArea() );
1763 if (!pTab || !bInValid)
1767 if ( ( IsInterrupt() && !mbFormatContentOnInterrupt ) ||
1768 ( !bBrowse && pPage->IsInvalidLayout() ) ||
1770 ( pPage->GetSortedObjs() && pPage->IsInvalidFly() && !mbFormatContentOnInterrupt )
1774 if ( pOldUpper != pContent->GetUpper() )
1776 const sal_uInt16 nCurNum = pContent->FindPageFrame()->GetPhyPageNum();
1777 if ( nCurNum < pPage->GetPhyPageNum() )
1778 m_nPreInvaPage = nCurNum;
1782 if ( !IsCalcLayout() && pPage->GetPhyPageNum() > nCurNum+1 )
1784 SetNextCycle(
true );
1786 if ( !mbFormatContentOnInterrupt )
1796 bool bSetContent =
true;
1799 if (oPrevDeleteListener->WasDeleted())
1801 SAL_WARN(
"sw",
"ContentPrev was deleted");
1807 pPage->InvalidateContent();
1810 if ( pOldUpper != pContent->GetUpper() &&
1811 pPage->GetPhyPageNum() < pContent->FindPageFrame()->GetPhyPageNum() )
1813 pContent = pContentPrev;
1814 bSetContent =
false;
1819 if ( bBrowse && !IsIdle() && !IsCalcLayout() && !IsComplete() &&
1820 pContent->getFrameArea().Top() > m_pImp->GetShell()->VisArea().Bottom())
1822 const tools::Long nBottom = m_pImp->GetShell()->VisArea().Bottom();
1824 nBottom, pContent );
1827 if ( (!(pPage->GetSortedObjs() && pPage->IsInvalidFly()) ||
1829 (!pPage->IsInvalidLayout() ||
1831 SetBrowseActionStop(
true );
1833 if ( !mbFormatContentOnInterrupt )
1849 if ( !pContent->GetValidLineNumFlag() && pContent->IsTextFrame() )
1851 const sal_Int32 nAllLines =
static_cast<const SwTextFrame*
>(pContent)->GetAllLines();
1853 if ( IsPaintExtraData() && IsPaint() &&
1854 nAllLines !=
static_cast<const SwTextFrame*
>(pContent)->GetAllLines() )
1855 m_pImp->GetShell()->AddPaintRect( pContent->getFrameArea() );
1859 if ( pContent->IsTextFrame() &&
static_cast<const SwTextFrame*
>(pContent)->HasRepaint() &&
1861 PaintContent( pContent, pPage, pContent->getFrameArea(), pContent->getFrameArea().Bottom());
1866 if ( IsInterrupt() && !mbFormatContentOnInterrupt )
1869 if ( bBrowse && !IsIdle() && !IsCalcLayout() && !IsComplete() &&
1870 pContent->getFrameArea().Top() > m_pImp->GetShell()->VisArea().Bottom())
1872 const tools::Long nBottom = m_pImp->GetShell()->VisArea().Bottom();
1874 nBottom, pContent );
1877 if ( (!(pPage->GetSortedObjs() && pPage->IsInvalidFly()) ||
1879 (!pPage->IsInvalidLayout() ||
1881 SetBrowseActionStop(
true );
1883 if ( !mbFormatContentOnInterrupt )
1889 pContent = pContent->GetNextContentFrame();
1894 return !IsInterrupt() || mbFormatContentOnInterrupt;
1902 if ( !bDrawObjsOnly &&
IsPaint() )
1947 const sal_Int32 nAllLines =
static_cast<const SwTextFrame*
>(pContent)->GetAllLines();
1950 nAllLines !=
static_cast<const SwTextFrame*
>(pContent)->GetAllLines() )
1972 OSL_ENSURE( pCnt->
IsTextFrame(),
"NoText neighbour of Text" );
1981 bool bProcess =
false;
1982 for (
size_t i = 0; pTextNode; )
2004 if (i < pMerged->extents.size())
2006 if (pMerged->extents[
i].pNode != pTextNode)
2008 pTextNode = pMerged->extents[
i].pNode;
2014 pTextNode =
nullptr;
2020 pTextNode =
nullptr;
2030 if(
auto pCursorShell =
dynamic_cast<SwCursorShell *
>( pSh ) )
2031 if( !pCursorShell->IsTableMode() )
2033 SwPaM *pCursor = pCursorShell->GetCursor();
2059 const_cast<SwTextFrame*
>(pTextFrame)->CollectAutoCmplWrds(*pTextNode,
nPos);
2067 const sal_Int32 nEnd = pTextNode->
GetText().getLength();
2077 const SwRect aRepaint(
const_cast<SwTextFrame*
>(pTextFrame)->SmartTagScan(*pTextNode) );
2081 }
catch(
const css::uno::RuntimeException&) {
2098 if (
auto pFly = pObj->DynCastFlyFrame() )
2100 if ( pFly->IsFlyInContentFrame() )
2176 while (pContentFrame && pPage->
IsAnLower(pContentFrame))
2180 SAL_INFO(
"sw.idle",
"DoIdleJob " << sal_Int32(eJob) <<
" interrupted on page " << pPage->
GetPhyPageNum());
2188 i < pPage->GetSortedObjs()->
size(); ++
i )
2200 SAL_INFO(
"sw.idle",
"DoIdleJob " << sal_Int32(eJob) <<
" interrupted on page " << pPage->
GetPhyPageNum());
2239#if HAVE_FEATURE_DESKTOP && defined DBG_UTIL
2259#define SHOW_IDLE( Color ) ShowIdle( Color )
2261#define SHOW_IDLE( Color )
2268 , m_bIndicator( false )
2271 SAL_INFO(
"sw.idle",
"SwLayIdle() entry");
2290 std::vector<bool> aBools;
2293 ++rSh.mnStartAction;
2295 if (
auto pCursorShell =
dynamic_cast<SwCursorShell*
>( &rSh) )
2297 bVis = pCursorShell->GetCharRect().Overlaps(rSh.VisArea());
2299 aBools.push_back( bVis );
2302 bool bInterrupt(
false);
2314 bool bActions =
false;
2315 size_t nBoolIdx = 0;
2318 --rSh.mnStartAction;
2320 if ( rSh.Imp()->HasPaintRegion() )
2324 SwRect aTmp( rSh.VisArea() );
2333 bActions |= aTmp != rSh.VisArea();
2334 if ( aTmp == rSh.VisArea() )
2335 if (
auto pCursorShell =
dynamic_cast< SwCursorShell*
>( &rSh) )
2336 bActions |= aBools[nBoolIdx] != pCursorShell->GetCharRect().
Overlaps( rSh.VisArea() );
2358 bool bUnlock =
false;
2361 SAL_INFO(
"sw.idle",
"Disappointing full document invalidation");
2387 rSh.UnlockPaint(
true );
2402 bool bInValid =
false;
2426 }
while ( pPg && !bInValid );
2438#if !ENABLE_WASM_STRIP_ACCESSIBILITY
2443 SAL_INFO(
"sw.idle",
"SwLayIdle() return");
static bool AnyInput(VclInputFlags nType=VCL_INPUT_ANY)
virtual SdrLayerID GetHellId() const =0
virtual bool IsVisibleLayerId(SdrLayerID _nLayerId) const =0
method to determine, if a layer ID belongs to the visible ones.
Provides access to the layout of a document.
virtual SwLayouter * GetLayouter()=0
virtual const SwDocStat & GetDocStat() const =0
Document - Statistics.
Handle the background jobs of a Writer document.
virtual void BlockIdling()=0
Increment block count.
virtual void UnblockIdling()=0
Decrement block count.
void DrawRect(const tools::Rectangle &rRect)
void Push(vcl::PushFlags nFlags=vcl::PushFlags::ALL)
sal_uInt32 GetOrdNumDirect() const
virtual SdrLayerID GetLayer() const
bool IsHelpDocument() const
bool IsSmartTagsEnabled() const
class for the positioning of drawing objects
wrapper class for the positioning of Writer fly frames and drawing objects
virtual const SwFlyFrame * DynCastFlyFrame() const
virtual SwRect GetObjRect() const =0
SwContentFrame is the layout for content nodes: a common base class for text (paragraph) and non-text...
SwContentFrame * GetNextContentFrame() const
SwTextFrame * FindMaster() const
void EndCursorMove(const bool bIdleEnd=false)
static OUString GetEventName(sal_Int32 nId)
static SwAutoCompleteWord & GetAutoCompleteWords()
SwFootnoteIdxs & GetFootnoteIdxs()
SwDocShell * GetDocShell()
general base class for all free-flowing frames
const SwVirtFlyDrawObj * GetVirtDrawObj() const
virtual const SwFlyFrameFormat * GetFormat() const override
bool IsBackgroundTransparent() const
SwFlyFrame::IsBackgroundTransparent.
bool IsLowerOf(const SwLayoutFrame *pUpper) const
bool IsFlyInContentFrame() const
virtual void Calc(vcl::RenderContext *pRenderContext) const override
Flys that are anchored as a character in the content.
const SwRect & getFrameArea() const
bool isFrameAreaDefinitionValid() const
const SwRect & getFramePrintArea() const
Base class of the Writer layout elements.
SwRect GetPaintArea() const
|* The paintarea is the area, in which the content of a frame is allowed |* to be displayed.
SwSectionFrame * ImplFindSctFrame()
bool GetValidLineNumFlag() const
SwFlyFrame * FindFlyFrame()
SwSectionFrame * FindSctFrame()
SwTabFrame * FindTabFrame()
void ResetCompletePaint() const
SwTabFrame * ImplFindTabFrame()
virtual void Calc(vcl::RenderContext *pRenderContext) const
bool IsRetoucheFrame() const
const SwSortedObjs * GetDrawObjs() const
void ResetRetouche() const
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 IsPageBodyFrame() const
SwRect UnionFrame(bool bBorder=false) const
|* The unionframe is the framearea (getFrameArea()) of a frame expanded by the |* printarea,...
bool IsFootnoteFrame() const
SwLayoutFrame * GetUpper()
bool IsCompletePaint() const
void InvalidatePage(const SwPageFrame *pPage=nullptr) const
Invalidates the page in which the Frame is currently placed.
SwRootFrame * getRootFrame()
bool IsNoTextFrame() const
void SetCompletePaint() const
SwPageFrame * FindPageFrame()
static void DestroyFrame(SwFrame *const pFrame)
this is the only way to delete a SwFrame instance
bool IsLayoutFrame() const
The usage of LayAction is always the same:
void FormatLayoutFly(SwFlyFrame *)
SwLayAction(SwRootFrame *pRt, SwViewShellImp *pImp)
std::clock_t m_nStartTicks
const SwTabFrame * m_pOptTab
void Action(OutputDevice *pRenderContext)
std::unique_ptr< SwWait > m_pWait
sal_uInt16 m_nPreInvaPage
void SetAgain(bool bAgain)
void FormatFlyContent(const SwFlyFrame *)
void SetInputType(VclInputFlags nNew)
VclInputFlags GetInputType() const
void SetCheckPages(bool bNew)
void PaintContent(const SwContentFrame *, const SwPageFrame *, const SwRect &rOldRect, tools::Long nOldBottom)
Depending of the type, the Content is output according to its changes, or the area to be outputted is...
bool FormatLayoutTab(SwTabFrame *, bool bAddRect)
bool TurboAction_(const SwContentFrame *)
bool IsWaitAllowed() const
sal_uInt16 m_nCheckPageNum
void SetWaitAllowed(bool bNew)
bool IsReschedule() const
void PushFormatLayout(SwFrame *pLow)
bool PaintWithoutFlys(const SwRect &, const SwContentFrame *, const SwPageFrame *)
void InternalAction(OutputDevice *pRenderContext)
std::vector< SwFrame * > m_aFrameStack
bool FormatContent(SwPageFrame *pPage)
bool IsShortCut(SwPageFrame *&)
bool IsBrowseActionStop() const
bool RemoveEmptyBrowserPages()
std::vector< std::unique_ptr< SwFrameDeleteGuard > > m_aFrameDeleteGuards
void SetStatBar(bool bNew)
void SetNextCycle(bool bNew)
bool IsPaintExtraData() const
bool PaintContent_(const SwContentFrame *, const SwPageFrame *, const SwRect &)
void FormatContent_(const SwContentFrame *pContent, const SwPageFrame *pPage)
bool IsCalcLayout() const
bool FormatLayout(OutputDevice *pRenderContext, SwLayoutFrame *, bool bAddRect=true)
bool mbFormatContentOnInterrupt
static SwPageFrame * CheckFirstVisPage(SwPageFrame *pPage)
VclInputFlags m_nInputType
SwContentNode * m_pContentNode
bool DoIdleJob_(const SwContentFrame *, IdleJobType)
bool DoIdleJob(IdleJobType eJobType, IdleJobArea eJobArea)
static bool isJobEnabled(IdleJobType eJob, const SwViewShell *pViewShell)
void ShowIdle(Color eName)
SwLayIdle(SwRootFrame *pRt, SwViewShellImp *pImp)
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame.
bool IsAnLower(const SwFrame *) const
virtual const SwFrameFormat * GetFormat() const
const SwContentFrame * ContainsContent() const
Checks if the frame contains one or more ContentFrame's anywhere in his subsidiary structure; if so t...
const SwFrame * Lower() const
static bool StartLoopControl(SwDoc *pDoc, SwPageFrame const *pPage)
void LoopControl(SwPageFrame *pPage)
PaM is Point and Mark: a selection of the document model.
bool IsMultiSelection() const
SwContentNode * GetPointContentNode() const
const SwPosition * GetPoint() const
bool HasMark() const
A PaM marks a selection if Point and Mark are distinct positions.
A page of the document layout.
bool IsInvalidWordCount() const
void InvalidateContent() const
void ValidateFlyInCnt() const
SwContentFrame * FindLastBodyContent()
Searches the last ContentFrame in BodyText below the page.
void ValidateContent() const
void InvalidateFlyLayout() const
Validate, invalidate and query the Page status Layout/Content and Fly/non-Fly respectively are inspec...
sal_uInt16 GetPhyPageNum() const
void ValidateSmartTags() const
static void GetBorderAndShadowBoundRect(const SwRect &_rPageRect, const SwViewShell *_pViewShell, OutputDevice const *pRenderContext, SwRect &_orBorderAndShadowBoundRect, const bool bLeftShadow, const bool bRightShadow, const bool bRightSidebar)
get bound rectangle of border and shadow for repaints
bool IsInvalidFlyContent() const
void InvalidateFlyInCnt() const
const SwSortedObjs * GetSortedObjs() const
bool IsInvalidFlyLayout() const
bool IsLeftShadowNeeded() const
SwContentFrame * FindFirstBodyContent()
sw::sidebarwindows::SidebarPosition SidebarPosition() const
asks the page on which side a margin should be shown, e.g for notes returns true for left side,...
bool IsInvalidSmartTags() const
void ValidateFlyLayout() const
bool IsFootnotePage() const
Foot note interface.
bool IsInvalidContent() const
void InvalidateFlyContent() const
bool IsInvalidSpelling() const
bool IsInvalidAutoCompleteWords() const
SwRect GetBoundRect(OutputDevice const *pOutputDevice) const
void ValidateWordCount() const
bool IsInvalidFlyInCnt() const
virtual void Cut() override
void ValidateSpelling() const
bool IsInvalidFly() const
void ValidateAutoCompleteWords() const
bool IsRightShadowNeeded() const
void ValidateLayout() const
bool IsInvalidLayout() const
void ValidateFlyContent() const
tools::Long GetHeight(const SwRect &rRect) const
void SetWidth(SwRect &rRect, tools::Long nNew) const
tools::Long GetRightMargin(const SwFrame &rFrame) const
tools::Long GetTopMargin(const SwFrame &rFrame) const
void SetHeight(SwRect &rRect, tools::Long nNew) const
tools::Long GetPrtRight(const SwFrame &rFrame) const
tools::Long GetBottomMargin(const SwFrame &rFrame) const
tools::Long YDiff(tools::Long n1, tools::Long n2) const
tools::Long GetLeftMargin(const SwFrame &rFrame) const
tools::Long GetBottom(const SwRect &rRect) const
void SetTop(SwRect &rRect, tools::Long nNew) const
tools::Long GetPrtBottom(const SwFrame &rFrame) const
void SetLeft(SwRect &rRect, tools::Long nNew) const
Of course Writer needs its own rectangles.
void Height(tools::Long nNew)
void Top(const tools::Long nTop)
void Right(const tools::Long nRight)
void Bottom(const tools::Long nBottom)
void Pos(const Point &rNew)
void SSize(const Size &rNew)
bool Overlaps(const SwRect &rRect) const
void Left(const tools::Long nLeft)
void Width(tools::Long nNew)
void ChangeOrigin(const SwRect &rRect)
The root element of a Writer document layout.
bool IsAssertFlyPages() const
bool IsLeftToRightViewLayout() const
void ResetTurboFlag() const
bool IsSuperfluous() const
SwViewShell * GetCurrShell() const
const SwContentFrame * GetTurbo() const
sal_uInt16 GetPageNum() const
bool IsTableUpdateInProgress() const
void RemoveSuperfluous()
remove pages that are not needed at all
void DisallowTurbo() const
void AssertFlyPages()
Ensures that enough pages exist, so that all page bound frames and draw objects can be placed.
static SwSmartTagMgr & Get()
class for collecting anchored objects
SwTabFrame is one table in the document layout, containing rows (which contain cells).
void SetLowersFormatted(bool b)
bool IsLowersFormatted() const
Represents the visualization of a paragraph.
sal_Int32 GetAllLines() const
For displaying the line numbers.
sw::MergedPara * GetMergedPara()
SwRect GetPaintSwRect()
Page number etc.
SwTextNode const * GetTextNodeForParaProps() const
SwTextNode is a paragraph in the document model.
bool IsSmartTagDirty() const
bool IsAutoCompleteWordDirty() const
bool CountWords(SwDocStat &rStat, sal_Int32 nStart, sal_Int32 nEnd) const
count words in given range - returns true if we refreshed out count
bool IsWordCountDirty() const
sw::WrongState GetWrongDirty() const
bool IsWrongDirty() const
const OUString & GetText() const
static bool IsAutoCompleteWords()
sal_uInt16 GetGapBetweenPages() const
static constexpr sal_uInt16 defGapBetweenPages
bool getBrowseMode() const
bool IsOnlineSpell() const
SwLayAction * m_pLayAction
const SwPageFrame * GetFirstVisPage(OutputDevice const *pRenderContext) const
Management of the first visible Page.
void SetFirstVisPageInvalid()
const SwViewShell * GetShell() const
Only for SwViewShell::Init()
void FireAccessibleEvents()
Fire all accessible events that have been collected so far.
bool IsAccessible() const
Is this view accessible?
vcl::RenderContext * GetOut() const
const IDocumentStatistics & getIDocumentStatistics() const
Provides access to the document statistics interface.
const SwViewOption * GetViewOptions() const
void UnlockPaint(bool bVirDev=false)
void EnableSmooth(bool b)
bool AddPaintRect(const SwRect &rRect)
vcl::Window * GetWin() const
const SwRect & VisArea() const
void InvalidateWindows(const SwRect &rRect)
bool IsPaintLocked() const
SwFlyFrame * GetFlyFrame()
ring_container GetRingContainer()
bool SupportsDoubleBuffering() const
::OutputDevice const * GetOutDev() const
Point PixelToLogic(const Point &rDevicePt) const
constexpr ::Color COL_LIGHTRED(0xFF, 0x00, 0x00)
constexpr ::Color COL_LIGHTGREEN(0x00, 0xFF, 0x00)
#define PROTOCOL(pFrame, nFunc, nAct, pPar)
#define TOOLS_WARN_EXCEPTION(area, stream)
static const SwFrame * lcl_FindFirstInvaLay(const SwFrame *pFrame, tools::Long nBottom)
static bool lcl_IsInvaLay(const SwFrame *pFrame, tools::Long nBottom)
static void unlockPositionOfObjects(SwPageFrame *pPageFrame)
static const SwFrame * lcl_FindFirstInvaContent(const SwLayoutFrame *pLay, tools::Long nBottom, const SwContentFrame *pFirst)
static const SwAnchoredObject * lcl_FindFirstInvaObj(const SwPageFrame *_pPage, tools::Long _nBottom)
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
void RescheduleProgress(SwDocShell const *pDocShell)
void SetProgressState(tools::Long nPosition, SwDocShell const *pDocShell)
tools::Long const nTopMargin
tools::Long const nLeftMargin
sal_Int32 GetContentIndex() const
Describes parts of multiple text nodes, which will form a text frame, even when redlines are hidden a...
#define STR_SW_EVENT_LAYOUT_FINISHED
constexpr sal_Int32 COMPLETE_STRING