20 #include <config_feature_desktop.h>
21 #include <config_wasm_strip.h>
26 #include <viewimp.hxx>
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" );
302 pPage = static_cast<SwPageFrame*>(pPage->
GetNext());
330 for (
size_t i = 0;
i < nCount; ++
i)
338 for (
size_t i = 0;
i < nCount; ++
i)
416 bool bPageChgd =
false;
419 if ( pCnt && pChk != pCnt )
432 pCnt = static_cast<SwContentFrame*>(pCnt->
FindPrev());
433 if ( pCnt && pCnt != pChk )
454 assert( pPageFrame );
461 pObj->UnlockPosition();
489 pPage = static_cast<SwPageFrame*>(pPage->
GetNext());
493 sal_uInt16 nPercentPageNum = 0;
495 auto lcl_isLayoutLooping = [&]()
497 const bool bAgain = this->
IsAgain();
498 if (bAgain && bNoLoop)
508 if (!pPage || m_nCheckPageNum < pPage->GetPhyPageNum())
512 pPg = static_cast<SwPageFrame*>(pPg->
GetNext());
540 if (lcl_isLayoutLooping())
return;
562 if (lcl_isLayoutLooping())
return;
565 int nLoopControlRuns_1 = 0;
566 const int nLoopControlMax = 20;
572 if ( ++nLoopControlRuns_1 > nLoopControlMax )
574 OSL_FAIL(
"LoopControl_1 in SwLayAction::InternalAction" );
579 if (lcl_isLayoutLooping())
return;
592 if (lcl_isLayoutLooping())
return;
609 if (lcl_isLayoutLooping())
return;
634 pPage = static_cast<SwPageFrame*>(pPage->
GetPrev());
674 if (lcl_isLayoutLooping())
return;
677 pPage = static_cast<SwPageFrame*>(pPage->
GetNext());
678 while ( pPage && pPage->
GetNext() &&
680 pPage = static_cast<SwPageFrame*>(pPage->
GetNext());
682 else if (bTakeShortcut)
704 if (lcl_isLayoutLooping())
return;
708 pPg = static_cast<SwPageFrame*>(pPg->
GetNext());
719 (
IsIdle() && pPg == pPage ) ) )
723 if (lcl_isLayoutLooping())
return;
726 int nLoopControlRuns_2 = 0;
727 const int nLoopControlMax = 20;
732 while ( ( mbFormatContentOnInterrupt &&
737 if (lcl_isLayoutLooping())
return;
747 int nLoopControlRuns_3 = 0;
753 if ( ++nLoopControlRuns_3 > nLoopControlMax )
755 OSL_FAIL(
"LoopControl_3 in Interrupt formatting in SwLayAction::InternalAction" );
760 if (lcl_isLayoutLooping())
return;
763 if ( mbFormatContentOnInterrupt &&
772 if ( ++nLoopControlRuns_2 > nLoopControlMax )
774 OSL_FAIL(
"LoopControl_2 in Interrupt formatting in SwLayAction::InternalAction" );
780 if (lcl_isLayoutLooping())
return;
798 mbFormatContentOnInterrupt =
false;
824 if ( nAllLines != static_cast<const SwTextFrame*>(pCnt)->GetAllLines() )
887 OSL_ENSURE( pFrame->
IsLayoutFrame(),
"FindFirstInvaLay, no LayFrame" );
899 if (
nullptr != pTmp )
925 if (
auto pFly = pObj->DynCastFlyFrame() )
927 if ( pFly->IsFlyInContentFrame() )
929 if ( static_cast<const SwFlyInContentFrame*>(pFly)->IsInvalid() ||
930 pFly->IsCompletePaint() )
932 if ( pFly->getFrameArea().Top() <= nBottom )
955 OSL_ENSURE( _pPage->
GetSortedObjs(),
"FindFirstInvaObj, no Objs" );
959 if (
auto pFly = pObj->DynCastFlyFrame() )
961 if ( pFly->getFrameArea().Top() <= _nBottom )
963 if ( pFly->IsInvalid() || pFly->IsCompletePaint() )
972 else if (
auto pDrawObject = dynamic_cast< const SwAnchoredDrawObject *>( pObj ) )
974 if ( !pDrawObject->IsValidPos() )
1009 prPage->
Calc(pRenderContext);
1011 while ( pPageLowerFrame )
1013 pPageLowerFrame->
Calc(pRenderContext);
1014 pPageLowerFrame = pPageLowerFrame->
GetNext();
1044 pBody = static_cast<const SwLayoutFrame*>(pBody->
GetNext());
1046 while ( p2ndPage && !pContent )
1053 pBody = static_cast<const SwLayoutFrame*>(pBody->
GetNext());
1059 bool bTstCnt =
true;
1063 const SwFrame *pLst = pContent;
1082 bool bPageChg =
false;
1089 pSct->
Calc(pRenderContext);
1101 pContent->
Calc(pRenderContext);
1110 if ( !bPageChg && pContent->
IsInTab() )
1115 pTab->
Calc(pRenderContext);
1125 if ( !bPageChg && pContent->
IsInSct() )
1130 pSct->
Calc(pRenderContext);
1164 if ( pObj->GetAnchorFrameContainingAnchPos() == pContent )
1176 if ( !bRet && bBrowse )
1187 const SwFrame* pFrame(
nullptr );
1208 OSL_ENSURE( !
IsAgain(),
"Attention to the invalid page." );
1212 bool bChanged =
false;
1213 bool bAlreadyPainted =
false;
1215 SwRect aFrameAtCompletePaint;
1223 SwRect aOldRect( aOldFrame );
1226 aOldRect =
static_cast<SwPageFrame*
>(pLay)->GetBoundRect(pRenderContext);
1231 pLay->
Calc(pRenderContext);
1237 bool bNoPaint =
false;
1261 if( bPageInBrowseMode )
1265 bPageInBrowseMode =
false;
1267 if( bPageInBrowseMode )
1280 for (
size_t i = 0;
i < aRegion.size(); ++
i )
1284 aRegion.push_back( aPaint );
1285 aRegion -= aOldRect;
1286 for (
size_t i = 0; i < aRegion.size(); ++i )
1293 bAlreadyPainted =
true;
1306 const bool bPrev = bLeftToRightViewLayout ? pLay->
GetPrev() : pLay->
GetNext();
1307 const bool bNext = bLeftToRightViewLayout ? pLay->
GetNext() : pLay->
GetPrev();
1322 SwRect aSpaceToPrevPage( aPageRect );
1323 aSpaceToPrevPage.
Top( aSpaceToPrevPage.
Top() - nHalfDocBorder );
1325 if(!aSpaceToPrevPage.
IsEmpty())
1329 aSpaceToPrevPage = aPageRect;
1330 aSpaceToPrevPage.
Left( aSpaceToPrevPage.
Left() - nHalfDocBorder );
1332 if(!aSpaceToPrevPage.
IsEmpty())
1338 SwRect aSpaceToNextPage( aPageRect );
1339 aSpaceToNextPage.
Bottom( aSpaceToNextPage.
Bottom() + nHalfDocBorder );
1341 if(!aSpaceToNextPage.
IsEmpty())
1345 aSpaceToNextPage = aPageRect;
1346 aSpaceToNextPage.
Right( aSpaceToNextPage.
Right() + nHalfDocBorder );
1348 if(!aSpaceToNextPage.
IsEmpty())
1367 if( bAlreadyPainted )
1381 bool bTabChanged =
false;
1382 while ( pLow && pLow->
GetUpper() == pLay )
1396 if (pTab->IsFollow())
1404 bTabChanged |=
FormatLayoutTab( static_cast<SwTabFrame*>(pLow), bAddRect );
1410 bChanged |=
FormatLayout( pRenderContext, static_cast<SwLayoutFrame*>(pLow), bAddRect );
1432 if ( bAlreadyPainted &&
1433 ( aBoundRect.Width() > aFrameAtCompletePaint.
Width() ||
1434 aBoundRect.Height() > aFrameAtCompletePaint.
Height() )
1439 return bChanged || bTabChanged;
1445 OSL_ENSURE( !
IsAgain(),
"Attention to the invalid page." );
1449 bool bChanged =
false;
1450 bool bAddRect =
true;
1456 pFly->
Calc(pRenderContext);
1493 OSL_ENSURE( !
IsAgain(),
"8-) Attention to the invalid page." );
1501 bool bChanged =
false;
1502 bool bPainted =
false;
1518 pTab->
Calc(pRenderContext);
1540 if ( nLeftMargin > 0)
1543 aRectFnSet.
SetWidth( aMarginRect, nLeftMargin );
1555 if ( nTopMargin > 0)
1558 aRectFnSet.
SetHeight( aMarginRect, nTopMargin );
1648 std::vector<std::pair<SwAnchoredObject*, SwPageFrame*>> moved;
1649 for (
auto const pObj : *pObjs)
1651 assert(!pObj->AnchorFrame()->IsTextFrame()
1652 || !
static_cast<SwTextFrame const*
>(pObj->AnchorFrame())->IsFollow());
1653 SwPageFrame *
const pAnchorPage(pObj->AnchorFrame()->FindPageFrame());
1654 assert(pAnchorPage);
1655 if (pAnchorPage != pPage
1657 && pObj->GetFrameFormat().GetAnchor().GetAnchorId()
1658 != RndStdIds::FLY_AS_CHAR)
1660 moved.emplace_back(pObj, pAnchorPage);
1663 for (
auto const& [pObj, pAnchorPage] : moved)
1665 SAL_INFO(
"sw.layout",
"SwLayAction::FormatContent: move anchored " << pObj <<
" from " << pPage->
GetPhyPageNum() <<
" to " << pAnchorPage->GetPhyPageNum());
1666 pObj->RegisterAtPage(*pAnchorPage);
1669 pObj->InvalidateObjPos();
1678 pContent->InvalidateSize();
1688 while ( pContent && pPage->
IsAnLower( pContent ) )
1691 const bool bFull = !pContent->isFrameAreaDefinitionValid() || pContent->IsCompletePaint() ||
1692 pContent->IsRetouche() || pContent->GetDrawObjs();
1696 const bool bNxtCnt =
IsCalcLayout() && !pContent->GetFollow();
1698 SwContentFrame*
const pContentPrev = pContent->
GetPrev() ? pContent->GetPrevContentFrame() :
nullptr;
1699 std::optional<SfxDeleteListener> oPrevDeleteListener;
1701 oPrevDeleteListener.emplace(*pContentPrev);
1706 const bool bOldPaint =
IsPaint();
1720 pContent->IsTextFrame() &&
1722 *(pContent->FindPageFrame()),
this ) )
1727 if ( !pContent->GetValidLineNumFlag() && pContent->IsTextFrame() )
1732 nAllLines != static_cast<const SwTextFrame*>(pContent)->GetAllLines() )
1744 if (!pTab || !bInValid)
1755 if ( pOldUpper != pContent->
GetUpper() )
1757 const sal_uInt16 nCurNum = pContent->FindPageFrame()->GetPhyPageNum();
1758 if ( nCurNum < pPage->GetPhyPageNum() )
1777 bool bSetContent =
true;
1780 if (oPrevDeleteListener->WasDeleted())
1782 SAL_WARN(
"sw",
"ContentPrev was deleted");
1791 if ( pOldUpper != pContent->
GetUpper() &&
1792 pPage->
GetPhyPageNum() < pContent->FindPageFrame()->GetPhyPageNum() )
1794 pContent = pContentPrev;
1795 bSetContent =
false;
1805 nBottom, pContent );
1830 if ( !pContent->GetValidLineNumFlag() && pContent->IsTextFrame() )
1835 nAllLines != static_cast<const SwTextFrame*>(pContent)->GetAllLines() )
1840 if ( pContent->IsTextFrame() &&
static_cast<const SwTextFrame*
>(pContent)->HasRepaint() &&
1855 nBottom, pContent );
1870 pContent = pContent->GetNextContentFrame();
1883 if ( !bDrawObjsOnly &&
IsPaint() )
1918 *const_cast<SwContentFrame*>(pContent),
1931 nAllLines != static_cast<const SwTextFrame*>(pContent)->GetAllLines() )
1953 OSL_ENSURE( pCnt->
IsTextFrame(),
"NoText neighbour of Text" );
1958 SwTextFrame const*
const pTextFrame(static_cast<SwTextFrame const*>(pCnt));
1962 bool bProcess =
false;
1963 for (
size_t i = 0; pTextNode; )
1985 if (i < pMerged->extents.size())
1987 if (pMerged->extents[
i].pNode != pTextNode)
1989 pTextNode = pMerged->extents[
i].pNode;
1995 pTextNode =
nullptr;
2001 pTextNode =
nullptr;
2011 if(
auto pCursorShell = dynamic_cast<SwCursorShell *>( pSh ) )
2012 if( !pCursorShell->IsTableMode() )
2014 SwPaM *pCursor = pCursorShell->GetCursor();
2030 SwRect aRepaint( const_cast<SwTextFrame*>(pTextFrame)->AutoSpell_(*pTextNode, nPos) );
2040 const_cast<SwTextFrame*
>(pTextFrame)->CollectAutoCmplWrds(*pTextNode, nPos);
2048 const sal_Int32 nEnd = pTextNode->
GetText().getLength();
2058 const SwRect aRepaint( const_cast<SwTextFrame*>(pTextFrame)->SmartTagScan(*pTextNode) );
2062 }
catch(
const css::uno::RuntimeException&) {
2079 if (
auto pFly = pObj->DynCastFlyFrame() )
2081 if ( pFly->IsFlyInContentFrame() )
2129 default: OSL_FAIL(
"Unknown idle job type" );
2145 while( pCnt && pPage->
IsAnLower( pCnt ) )
2191 if ( pPage && bVisAreaOnly &&
2198 #if HAVE_FEATURE_DESKTOP && defined DBG_UTIL
2218 #define SHOW_IDLE( Color ) ShowIdle( Color )
2220 #define SHOW_IDLE( Color )
2227 , m_bIndicator(
false )
2230 SAL_INFO(
"sw.idle",
"SwLayIdle() entry");
2249 std::vector<bool> aBools;
2252 ++rSh.mnStartAction;
2254 if (
auto pCursorShell = dynamic_cast<SwCursorShell*>( &rSh) )
2256 bVis = pCursorShell->GetCharRect().Overlaps(rSh.VisArea());
2258 aBools.push_back( bVis );
2261 bool bInterrupt(
false);
2273 bool bActions =
false;
2274 size_t nBoolIdx = 0;
2277 --rSh.mnStartAction;
2287 static const bool blockOnRepaints =
true;
2288 if (!blockOnRepaints && rSh.Imp()->HasPaintRegion())
2292 SwRect aTmp( rSh.VisArea() );
2301 bActions |= aTmp != rSh.VisArea();
2302 if ( aTmp == rSh.VisArea() )
2303 if (
auto pCursorShell = dynamic_cast< SwCursorShell*>( &rSh) )
2304 bActions |= aBools[nBoolIdx] != pCursorShell->GetCharRect().
Overlaps( rSh.VisArea() );
2326 bool bUnlock =
false;
2354 rSh.UnlockPaint(
true );
2369 bool bInValid =
false;
2393 }
while ( pPg && !bInValid );
2405 #if !ENABLE_WASM_STRIP_ACCESSIBILITY
2410 SAL_INFO(
"sw.idle",
"SwLayIdle() return");
void InternalAction(OutputDevice *pRenderContext)
bool IsAnLower(const SwFrame *) const
vcl::RenderContext * GetOut() const
void SetTop(SwRect &rRect, tools::Long nNew) const
bool IsPaintLocked() const
const SwVirtFlyDrawObj * GetVirtDrawObj() const
Base class of the Writer layout elements.
Represents the visualization of a paragraph.
virtual SwRect GetObjRect() const =0
bool PaintWithoutFlys(const SwRect &, const SwContentFrame *, const SwPageFrame *)
void FireAccessibleEvents()
Fire all accessible events that have been collected so far.
void Right(const tools::Long nRight)
virtual const SwFlyFrameFormat * GetFormat() const override
const SwSortedObjs * GetDrawObjs() const
SwContentFrame * GetNextContentFrame() const
bool IsMultiSelection() const
void SetNextCycle(bool bNew)
tools::Long GetPrtRight(const SwFrame &rFrame) const
bool FormatLayout(OutputDevice *pRenderContext, SwLayoutFrame *, bool bAddRect=true)
void ShowIdle(Color eName)
void LoopControl(SwPageFrame *pPage)
bool TurboAction_(const SwContentFrame *)
void SetLowersFormatted(bool b)
const IDocumentStatistics & getIDocumentStatistics() const
Provides access to the document statistics interface.
bool IsLowerOf(const SwLayoutFrame *pUpper) const
bool FormatLayoutTab(SwTabFrame *, bool bAddRect)
const OUString & GetText() 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.
void ResetTurboFlag() const
static SwAutoCompleteWord & GetAutoCompleteWords()
bool IsInvalidWordCount() const
void SetInputType(VclInputFlags nNew)
bool IsWrongDirty() const
SwDocShell * GetDocShell()
tools::Long GetLeftMargin(const SwFrame &rFrame) const
void FormatFlyContent(const SwFlyFrame *)
void Left(const tools::Long nLeft)
void ValidateSpelling() const
void SetCompletePaint() const
tools::Long const nLeftMargin
bool IsWaitAllowed() const
#define PROTOCOL(pFrame, nFunc, nAct, pPar)
bool DoIdleJob(IdleJobType, bool bVisAreaOnly)
const SwRect & getFramePrintArea() const
void Push(vcl::PushFlags nFlags=vcl::PushFlags::ALL)
Handle the background jobs of a Writer document.
SwTabFrame is one table in the document layout, containing rows (which contain cells).
sw::MergedPara * GetMergedPara()
static bool IsAutoCompleteWords()
void ValidateFlyContent() const
void ValidateContent() const
bool IsLeftToRightViewLayout() const
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...
SwLayAction * m_pLayAction
bool GetValidLineNumFlag() const
static void DestroyFrame(SwFrame *const pFrame)
this is the only way to delete a SwFrame instance
bool IsSmartTagDirty() const
static bool StartLoopControl(SwDoc *pDoc, SwPageFrame const *pPage)
void Pos(const Point &rNew)
bool IsBackgroundTransparent() const
SwFlyFrame::IsBackgroundTransparent.
bool IsAccessible() const
Is this view accessible?
virtual void Calc(vcl::RenderContext *pRenderContext) const
bool IsFootnotePage() const
Foot note interface.
Of course Writer needs its own rectangles.
void AssertFlyPages()
Ensures that enough pages exist, so that all page bound frames and draw objects can be placed...
SwContentFrame * FindFirstBodyContent()
bool IsLowersFormatted() const
The root element of a Writer document layout.
bool IsCalcLayout() const
void InvalidateFlyInCnt() const
bool IsFootnoteFrame() const
bool isFrameAreaDefinitionValid() const
const SwPageFrame * GetFirstVisPage(OutputDevice const *pRenderContext) const
Management of the first visible Page.
void EnableSmooth(bool b)
void ValidateWordCount() const
bool IsReschedule() const
sal_uInt16 GetPhyPageNum() const
bool RemoveEmptyBrowserPages()
SwContentNode * GetContentNode(bool bPoint=true) const
SwSectionFrame * ImplFindSctFrame()
bool AddPaintRect(const SwRect &rRect)
virtual void UnblockIdling()=0
Decrement block count.
void ValidateAutoCompleteWords() const
SwRect GetPaintArea() const
|* The paintarea is the area, in which the content of a frame is allowed |* to be displayed...
bool IsShortCut(SwPageFrame *&)
wrapper class for the positioning of Writer fly frames and drawing objects
void SetFirstVisPageInvalid()
virtual bool IsVisibleLayerId(SdrLayerID _nLayerId) const =0
method to determine, if a layer ID belongs to the visible ones.
void ChangeOrigin(const SwRect &rRect)
bool IsInvalidFlyInCnt() const
const SwRect & getFrameArea() const
bool getBrowseMode() const
void PushFormatLayout(SwFrame *pLow)
std::vector< SwFrame * > m_aFrameStack
bool IsInvalidAutoCompleteWords() const
void InvalidateFlyContent() const
void Action(OutputDevice *pRenderContext)
void Width(tools::Long nNew)
bool IsInvalidSpelling() const
bool IsPageBodyFrame() const
bool IsInvalidSmartTags() const
Describes parts of multiple text nodes, which will form a text frame, even when redlines are hidden a...
SwFlyFrame * FindFlyFrame()
bool IsWordCountDirty() const
bool IsFlyInContentFrame() const
void SetBrowseActionStop(bool bNew)
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_LIGHTRED
void DrawRect(const tools::Rectangle &rRect)
sal_uInt32 GetOrdNumDirect() const
void InvalidateContent() const
const SwViewShell * GetShell() const
Only for SwViewShell::Init()
bool IsInvalidContent() const
bool IsAssertFlyPages() const
VclInputFlags m_nInputType
void ValidateFlyLayout() const
SwRect GetPaintSwRect()
Page number etc.
void EndCursorMove(const bool bIdleEnd=false)
void SetStatBar(bool bNew)
bool IsInvalidFly() const
bool IsTableUpdateInProgress() const
PaM is Point and Mark: a selection of the document model.
bool IsInvalidFlyContent() const
SwTextNode const * GetTextNodeForParaProps() const
SwTabFrame * ImplFindTabFrame()
#define TOOLS_WARN_EXCEPTION(area, stream)
static const SwFrame * lcl_FindFirstInvaLay(const SwFrame *pFrame, tools::Long nBottom)
sal_uInt16 m_nPreInvaPage
static SwPageFrame * CheckFirstVisPage(SwPageFrame *pPage)
const SwSortedObjs * GetSortedObjs() const
tools::Long GetPrtBottom(const SwFrame &rFrame) const
void ValidateFlyInCnt() const
const SwRect & VisArea() const
std::unique_ptr< SwWait > m_pWait
const SwPosition * GetPoint() const
The usage of LayAction is always the same:
static bool AnyInput(VclInputFlags nType=VCL_INPUT_ANY)
SwRect GetBoundRect(OutputDevice const *pOutputDevice) const
static SwSmartTagMgr & Get()
SwPageFrame * FindPageFrame()
static const SwFrame * lcl_FindFirstInvaContent(const SwLayoutFrame *pLay, tools::Long nBottom, const SwContentFrame *pFirst)
virtual void Cut() override
bool IsCompletePaint() const
const SwFrame * Lower() const
virtual SwLayouter * GetLayouter()=0
void InvalidatePage(const SwPageFrame *pPage=nullptr) const
Invalidates the page in which the Frame is currently placed.
tools::Long GetHeight(const SwRect &rRect) const
bool HasMark() const
A PaM marks a selection if Point and Mark are distinct positions.
void RescheduleProgress(SwDocShell const *pDocShell)
virtual const SwFlyFrame * DynCastFlyFrame() const
SwLayoutFrame * GetUpper()
VclInputFlags GetInputType() const
bool IsSmartTagsEnabled() const
bool IsRetoucheFrame() const
tools::Long GetTopMargin(const SwFrame &rFrame) const
ring_container GetRingContainer()
static constexpr sal_uInt16 defGapBetweenPages
tools::Long YDiff(tools::Long n1, tools::Long n2) const
bool IsOnlineSpell() const
Point PixelToLogic(const Point &rDevicePt) const
bool mbFormatContentOnInterrupt
tools::Long GetRightMargin(const SwFrame &rFrame) const
void SSize(const Size &rNew)
SwLayAction(SwRootFrame *pRt, SwViewShellImp *pImp)
SwRect UnionFrame(bool bBorder=false) const
|* The unionframe is the framearea (getFrameArea()) of a frame expanded by the |* printarea...
void InvalidateFlyLayout() const
Validate, invalidate and query the Page status Layout/Content and Fly/non-Fly respectively are inspec...
A page of the document layout.
sal_uInt16 m_nCheckPageNum
bool IsLeftShadowNeeded() const
void InvalidateWindows(const SwRect &rRect)
SwContentNode * m_pContentNode
virtual SdrLayerID GetHellId() const =0
void ResetCompletePaint() const
SwSectionFrame * FindSctFrame()
virtual SdrLayerID GetLayer() const
void ResetRetouche() const
bool IsInvalidFlyLayout() const
void ValidateLayout() const
void ValidateSmartTags() const
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...
void FormatContent_(const SwContentFrame *pContent, const SwPageFrame *pPage)
std::clock_t m_nStartTicks
bool IsLayoutFrame() const
void Bottom(const tools::Long nBottom)
SwTextNode is a paragraph in the document model.
SwFlyFrame * GetFlyFrame()
void SetWidth(SwRect &rRect, tools::Long nNew) const
SwContentFrame * FindLastBodyContent()
Searches the last ContentFrame in BodyText below the page.
tools::Long const nTopMargin
bool DoIdleJob_(const SwContentFrame *, IdleJobType)
const SwTabFrame * m_pOptTab
tools::Long GetBottomMargin(const SwFrame &rFrame) const
general base class for all free-flowing frames
void RemoveSuperfluous()
remove pages that are not needed at all
bool FormatContent(SwPageFrame *pPage)
static void unlockPositionOfObjects(SwPageFrame *pPageFrame)
bool IsBrowseActionStop() const
SwTextFrame * FindMaster() const
WrongState GetWrongDirty() const
const SwViewOption * GetViewOptions() const
vcl::Window * GetWin() const
bool IsPaintExtraData() const
static const SwAnchoredObject * lcl_FindFirstInvaObj(const SwPageFrame *_pPage, tools::Long _nBottom)
virtual const SwDocStat & GetDocStat() const =0
Document - Statistics.
#define SAL_INFO(area, stream)
sal_Int32 GetIndex() const
void SetHeight(SwRect &rRect, tools::Long nNew) const
void SetProgressState(tools::Long nPosition, SwDocShell const *pDocShell)
bool IsNoTextFrame() const
::OutputDevice const * GetOutDev() const
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_LIGHTGREEN
bool IsHelpDocument() const
void Top(const tools::Long nTop)
bool IsLockWordLstLocked() const
void SetWaitAllowed(bool bNew)
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 PaintContent_(const SwContentFrame *, const SwPageFrame *, const SwRect &)
static OUString GetEventName(sal_Int32 nId)
const SwContentFrame * GetTurbo() const
constexpr sal_Int32 COMPLETE_STRING
void DisallowTurbo() const
tools::Long GetBottom(const SwRect &rRect) const
virtual void Calc(vcl::RenderContext *pRenderContext) const override
static bool lcl_IsInvaLay(const SwFrame *pFrame, tools::Long nBottom)
Provides access to the layout of a document.
#define STR_SW_EVENT_LAYOUT_FINISHED
SwFootnoteIdxs & GetFootnoteIdxs()
#define SAL_WARN(area, stream)
void SetLeft(SwRect &rRect, tools::Long nNew) const
void FormatLayoutFly(SwFlyFrame *)
void SetCheckPages(bool bNew)
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame...
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
const SwContentFrame * ContainsContent() const
Checks if the frame contains one or more ContentFrame's anywhere in his subsidiary structure; if so t...
SwViewShell * GetCurrShell() const
class for collecting anchored objects
std::vector< std::unique_ptr< SwFrameDeleteGuard > > m_aFrameDeleteGuards
bool SupportsDoubleBuffering() const
void Height(tools::Long nNew)
void SetAgain(bool bAgain)
bool IsSuperfluous() const
bool Overlaps(const SwRect &rRect) const
sal_uInt16 GetPageNum() const
SwRootFrame * getRootFrame()
bool IsInvalidLayout() const
sal_uInt16 GetGapBetweenPages() const
void UnlockPaint(bool bVirDev=false)
SwLayIdle(SwRootFrame *pRt, SwViewShellImp *pImp)
bool IsRightShadowNeeded() const
bool m_bDetectedRangeSegmentation false
virtual const SwFrameFormat * GetFormat() const
SwTabFrame * FindTabFrame()
virtual void BlockIdling()=0
Increment block count.