20#include <config_wasm_strip.h>
61#include <objectformatter.hxx>
66#include <osl/diagnose.h>
76 , SwFlowFrame( static_cast<
SwFrame&>(*this) )
79 , m_bCalcLowers(false)
80 , m_bLowersFormatted(false)
81 , m_bLockBackMove(false)
82 , m_bResizeHTMLTable(false)
83 , m_bONECalcLowers(false)
84 , m_bHasFollowFlowLine(false)
85 , m_bIsRebuildLastLine(false)
86 , m_bRestrictTableGrowth(false)
87 , m_bRemoveFollowFlowLinePending(false)
88 , m_bConsiderObjsForMinCellHeight(true)
89 , m_bObjsDoesFit(true)
90 , m_bInRecalcLowerRow(false)
101 for (
size_t i = 0;
i < rLines.
size(); ++
i )
104 if ( bHiddenRedlines && rLines[
i]->IsDeleted(nRedlinePos) )
121 , SwFlowFrame( static_cast<
SwFrame&>(*this) )
122 , m_pTable( rTab.GetTable() )
124 , m_bCalcLowers(false)
125 , m_bLowersFormatted(false)
126 , m_bLockBackMove(false)
127 , m_bResizeHTMLTable(false)
128 , m_bONECalcLowers(false)
129 , m_bHasFollowFlowLine(false)
130 , m_bIsRebuildLastLine(false)
131 , m_bRestrictTableGrowth(false)
132 , m_bRemoveFollowFlowLinePending(false)
133 , m_bConsiderObjsForMinCellHeight(true)
134 , m_bObjsDoesFit(true)
135 , m_bInRecalcLowerRow(false)
141 rTab.SetFollow(
this );
160 if ( pFoll->HasFollow() )
190 bool _bOnlyRowsAndCells =
false );
196 const bool _bConsiderObjs );
208 while ( pStart &&
nCount > 0 )
221 OSL_ENSURE( rTmpRow.
IsRowFrame(),
"No row frame to copy for FollowFlowLine" );
229 return pFollowFlowLine;
236 const bool _bMoveObjsOutOfRange =
false,
243 OSL_ENSURE( _pPageFrame,
244 "<lcl_InvalidateLowerObjs(..)> - missing page frame -> no move of lower objects out of range" );
253 while ( pLowerFrame )
258 _bMoveObjsOutOfRange, _pPageFrame );
275 if ( _bMoveObjsOutOfRange )
281 pAnchoredObj->
SetObjLeft( _pPageFrame->getFrameArea().Right() );
288 == RndStdIds::FLY_AS_CHAR )
294 if ( pFly !=
nullptr )
302 if ( pFly !=
nullptr )
308 pLowerFrame = pLowerFrame->
GetNext();
318 bool bAllCellsCollapsed =
true;
319 while ( pCurrMasterCell )
335 bool bAllLowersCollapsed =
true;
351 bool bAllRowsCollapsed =
true;
358 bAllRowsCollapsed =
false;
363 if (bAllRowsCollapsed)
370 aRectFnSet.
SetTop(aPrt, 0);
374 bAllLowersCollapsed =
false;
380 aRectFnSet.
SetTop(aPrt, 0);
385 bAllLowersCollapsed =
false;
398 if (bAllLowersCollapsed)
405 aRectFnSet.
SetTop(aPrt, 0);
409 bAllCellsCollapsed =
false;
414 if (bAllCellsCollapsed)
421 aRectFnSet.
SetTop(aPrt, 0);
435 while ( pCurrSourceCell )
440 while ( pTmpSourceRow )
451 while ( pTmpDestRow->
GetNext() )
513 while ( pCurrLastLineCell )
524 while ( pTmpLastLineRow->
GetNext() && nTmpCut > nCurrentHeight )
526 nTmpCut -= nCurrentHeight;
537 bool bTableLayoutTooComplex =
false;
560 bTableLayoutTooComplex =
true;
579 if ( nTmpCut > nCurrentHeight ||
581 !bTableLayoutTooComplex && nMinHeight < nTmpCut ) )
588 pNewRow->
InsertBehind( pCurrFollowFlowLineCell,
nullptr );
593 while ( pTmpLastLineRow )
598 pTmpLastLineRow->
InsertBefore( pCurrFollowFlowLineCell,
nullptr );
601 pTmpLastLineRow = pTmp;
606 pCurrFollowFlowLineCell =
static_cast<SwCellFrame*
>(pCurrFollowFlowLineCell->
GetNext());
614 while ( pCurrMasterCell )
616 if ( pCurrMasterCell->
Lower() &&
623 OSL_ENSURE( pRowFrame->
GetFollowRow(),
"Deleting row frame without follow" );
683 rTab.
Shrink(nAlreadyFree + nCurLastLineHeight - nRemainingSpaceForLastRow + 1);
686 bool bUnlockMaster =
false;
687 SwFlowFrame * pFollow =
nullptr;
689 if ( pMaster && !pMaster->IsJoinLocked() )
691 bUnlockMaster =
true;
708 rLastLine.
Calc(pRenderContext);
730 const SwTwips nDistanceToUpperPrtBottom =
743 pFootnote !=
nullptr;
758 nFollowFootnotes += aRectFnSet.
GetHeight(pFootnote->getFrameArea());
764 if (nDistanceToUpperPrtBottom + nFollowFootnotes < 0 || !rTab.
DoesObjsFit())
775 while ( pCurrMasterCell )
834 if ( nLayoutRowSpan > 1 )
858 bool bNextRow =
false;
860 while ( pCurrentRowFrame )
874 pCurrentRowFrame = bNextRow ?
896 pLastLine,
"There should be a flowline in the follow" );
899 if ( !pFollowFlowLine || !pLastLine )
903 SAL_WARN(
"sw.layout",
"Cannot remove in-use Follow Flow Line");
920 if ( nRowsToMove > 1 )
927 while ( pRow && nRowsToMove-- > 1 )
939 pInsertBehind = pRow;
947 pFirstRow = pFirstRow->
GetNext();
954 bool bJoin = !pFollowFlowLine->
GetNext();
955 pFollowFlowLine->
Cut();
990 if (!pSectionLower->IsColumnFrame())
996 for (
const SwFrame* pFrame = pSectionLower; pFrame; pFrame = pFrame->
GetNext())
998 if (pFrame->IsTabFrame())
1013 pTmpFrame = pTmpFrame->
GetNext();
1043 sal_uInt16 nRowCount = 0;
1045 SwTwips nRemainingSpaceForLastRow =
1047 nRemainingSpaceForLastRow -= aRectFnSet.
GetTopMargin(*
this);
1070 bool bSplitRowAllowed =
true;
1078 bSplitRowAllowed =
false;
1087 bTryToSplit =
false;
1099 if (nMinHeight > nRemainingSpaceForLastRow)
1101 bSplitRowAllowed =
false;
1117 bool bKeepNextRow =
false;
1118 if ( nRowCount < nRepeat )
1125 OSL_ENSURE( !
GetIndPrev(),
"Table is supposed to be at beginning" );
1132 bKeepNextRow =
true;
1134 else if ( !
GetIndPrev() && nRepeat == nRowCount )
1139 if ( bTryToSplit && bSplitRowAllowed )
1144 while ( pLowerCell )
1152 bKeepNextRow =
true;
1160 bKeepNextRow =
true;
1184 bSplitRowAllowed = bSplitRowAllowed && bTryToSplit &&
1189 if ( !bSplitRowAllowed && bTableRowKeep )
1194 nRowCount > nRepeat )
1211 if ( !bSplitRowAllowed )
1214 if ( pRow == pFirstNonHeadlineRow )
1224 if ( !pTmpRow || pRow == pTmpRow )
1260 for ( nRowCount = 0; nRowCount < nRepeat; ++nRowCount )
1272 if( !pSpzs->
empty() )
1281 ?
static_cast<SwTextFrame*
>(pFrame)->GetTextNodeFirst()->GetIndex()
1296 if ( bSplitRowAllowed )
1314 while ( pCellFrame )
1348 pInsertBehind = pRow;
1367 pRow->
Paste( pFoll, pPasteBefore );
1385 if (!bRet && !bSplitRowAllowed)
1403 if (pFoll->IsJoinLocked())
1408 SAL_WARN(
"sw.layout",
"Delete Forbidden");
1422 if (!pFoll || !CanDeleteFollow(pFoll))
1504 if ( pToInvalidate->
Lower() )
1551 int nLoopControlRuns = 0;
1552 const int nLoopControlMax = 10;
1553 const sw::BroadcastingModify* pLoopControlCond =
nullptr;
1555 while (pCnt && rDontLeave.
IsAnLower(pCnt))
1560 const bool bFormatPossible = !pCnt->IsJoinLocked() &&
1566 bool bSkipContent =
false;
1567 if ( bSkipRowSpanCells && pCnt->
IsInTab() )
1573 bSkipContent =
true;
1576 if ( bFormatPossible && !bSkipContent )
1582 pCnt->
Calc(pRenderContext);
1588 "<SwContentFrame::CalcLowers(..)> - text frame invalid and not locked." );
1597 static_cast<SwTextFrame*
>(pCnt)->GetTextNodeFirst());
1598 if (pTextNode == pLoopControlCond)
1602 nLoopControlRuns = 0;
1603 pLoopControlCond = pTextNode;
1606 if ( nLoopControlRuns < nLoopControlMax )
1613 SAL_WARN(
"sw.layout",
"LoopControl in SwContentFrame::CalcLowers");
1634 bool _bOnlyRowsAndCells )
1655 pFrame->
Calc(pRenderContext);
1667 rToCalc.
Calc(pRenderContext);
1668 if ( rToCalc.
Lower() )
1684 int nLoopControlRuns_1 = 0;
1685 sal_uInt16 nLoopControlStage_1 = 0;
1686 const int nLoopControlMax = 10;
1692 int nLoopControlRuns_2 = 0;
1693 sal_uInt16 nLoopControlStage_2 = 0;
1697 if ( ++nLoopControlRuns_2 > nLoopControlMax )
1699 SAL_WARN_IF(nLoopControlStage_2 == 0,
"sw.layout",
"LoopControl_2 in lcl_RecalcRow: Stage 1!");
1700 SAL_WARN_IF(nLoopControlStage_2 == 1,
"sw.layout",
"LoopControl_2 in lcl_RecalcRow: Stage 2!!");
1701 SAL_WARN_IF(nLoopControlStage_2 >= 2,
"sw.layout",
"LoopControl_2 in lcl_RecalcRow: Stage 3!!!");
1703 nLoopControlRuns_2 = 0;
1704 if( nLoopControlStage_2 > 2 )
1720 for (
int i = 0;
i < 2; ++
i )
1723 while ( pCellFrame )
1725 const bool bCalc = 0 ==
i ?
1743 if ( ++nLoopControlRuns_1 > nLoopControlMax )
1745 SAL_WARN_IF(nLoopControlStage_1 == 0,
"sw.layout",
"LoopControl_1 in lcl_RecalcRow: Stage 1!");
1746 SAL_WARN_IF(nLoopControlStage_1 == 1,
"sw.layout",
"LoopControl_1 in lcl_RecalcRow: Stage 2!!");
1747 SAL_WARN_IF(nLoopControlStage_1 >= 2,
"sw.layout",
"LoopControl_1 in lcl_RecalcRow: Stage 3!!!");
1749 nLoopControlRuns_1 = 0;
1750 if( nLoopControlStage_1 > 2 )
1785 bool bSkippedDirectPrevEmptySection(
false );
1794 bSkippedDirectPrevEmptySection =
true;
1802 if ( ( !bSkippedDirectPrevEmptySection && !rFrame.
GetIndPrev() ) ||
1803 ( bSkippedDirectPrevEmptySection &&
1829#define KEEPTAB ( !GetFollow() && !IsFollow() )
1862 pNxt->
Calc(pRenderContext);
1869 bool AreAllRowsKeepWithNext(
const SwRowFrame* pFirstRowFrame,
const bool bCheckParents =
true )
1871 bool bRet = pFirstRowFrame !=
nullptr &&
1874 while ( bRet && pFirstRowFrame->
GetNext() !=
nullptr )
1877 bRet = pFirstRowFrame !=
nullptr &&
1916 OSL_ENSURE( !pFollowFrame->IsJoinLocked() || !pFollowFrame->
IsRebuildLastLine(),
1917 "SwTabFrame::MakeAll for master while follow is in RebuildLastLine()" );
1964 bool bMakePage =
true;
1966 bool bMovedBwd =
false;
1969 bool bMovedFwd =
false;
1971 bool bSplit =
false;
1975 std::optional<SwBorderAttrAccess> oAccess(std::in_place,
SwFrame::GetCache(),
this);
1979 bool bDontSplit = !IsFollow() &&
1987 bool bTryToSplit =
true;
1994 if (pFly->IsFlySplitAllowed())
1997 bTableRowKeep =
false;
1999 else if (!pFly->GetNextLink())
2014 bool bLastRowHasToMoveToFollow =
false;
2015 bool bLastRowMoveNoMoreTries =
false;
2018 const bool bEmulateTableKeep = !bLargeTable && bTableRowKeep
2069 else if (!
MoveFwd(bMakePage,
false))
2075 int nUnSplitted = 5;
2076 int nThrowAwayValidLayoutLimit = 5;
2082 !(bMovedFwd && bEmulateTableKeep) )
2083 if ( CheckMoveFwd( bMakePage, bKeep &&
KEEPTAB, bEmulateTableKeep ) )
2112 if ( bKeep || (
nullptr != (pPre =
FindPrev()) &&
2144 pAttrs = oAccess->Get();
2165 if ( !bMovedFwd && (bMoveable || bFly) &&
lcl_NoPrev( *
this ) )
2183 std::optional<SfxDeleteListener> oDeleteListener;
2185 oDeleteListener.emplace(*pOldBoss);
2187 if ( MoveBwd( bReformat ) )
2189 SAL_WARN_IF(oDeleteListener && oDeleteListener->WasDeleted(),
"sw.layout",
"SwFootnoteBossFrame unexpectedly deleted");
2194 if (bFootnotesInDoc && !oDeleteListener->WasDeleted())
2196 if ( bReformat || bKeep )
2216 pAttrs = oAccess->Get();
2254 SwTwips nDistanceToUpperPrtBottom =
2260 if ( nDistanceToUpperPrtBottom < 0 && bBrowseMode )
2272 if (pUpper->IsFlySplitAllowed())
2283 nRequest += aRectFnSet.
GetHeight(pFollow->getFrameArea());
2286 pUpper->Grow(nRequest);
2297 if( nDistanceToUpperPrtBottom >= 0 && !bLastRowHasToMoveToFollow )
2334 if ( !pRow || !pRow->
GetNext() )
2356 while ( pRowToMove && nRowsToMove-- > 0 )
2358 const bool bMoveFootnotes = bFootnotesInDoc && !
GetFollow()->IsJoinLocked();
2361 if ( bMoveFootnotes )
2374 pRowToMove->
Paste(
this );
2378 if ( bMoveFootnotes )
2382 pRowToMove = pNextRow;
2394 bool bFormat =
false;
2397 else if ( bTableRowKeep && !bLastRowMoveNoMoreTries )
2401 bLastRowMoveNoMoreTries =
true;
2417 pAttrs = oAccess->Get();
2443 bLastRowHasToMoveToFollow =
true;
2489 bLastRowHasToMoveToFollow =
false;
2513 SwFrame* pAnchor = pFlyAtContent->FindAnchorCharFrame();
2524 const bool bAllowSplitOfRow = bTableRowKeep && !pIndPrev && AreAllRowsKeepWithNext(pFirstNonHeadlineRow);
2527 const bool bEmulateTableKeepSplitAllowed = bEmulateTableKeep && !IsKeepFwdMoveAllowed(
true);
2529 if ( pFirstNonHeadlineRow && nUnSplitted > 0 &&
2530 ( bEmulateTableKeepSplitAllowed || bAllowSplitOfRow ||
2531 ( ( !bTableRowKeep || pFirstNonHeadlineRow->
GetNext() ||
2533 ) && ( !bDontSplit || !pIndPrev )
2545 bTryToSplit =
false;
2550 if ( pFirstNonHeadlineRow->
GetNext() || bTryToSplit )
2553 bool bFlySplit =
false;
2561 nDeadLine = aRectFnSet.
YInc( nDeadLine,
2582 bLastRowHasToMoveToFollow =
false;
2593 if ( pTmpRow && !
static_cast<const SwRowFrame*
>(pTmpRow)->IsRowSplitAllowed() )
2597 sal_uInt16 nMinNumOfLines = nRepeat;
2599 if ( bTableRowKeep )
2620 if( aRectFnSet.
YDiff(nDeadLine, nBreakLine) >=0
2621 || !pIndPrev || bEmulateTableKeepSplitAllowed )
2629 if (!nThrowAwayValidLayoutLimit)
2635 if (bInitialLoopEndCondition && !bFinalLoopEndCondition)
2637 --nThrowAwayValidLayoutLimit;
2642 const bool bSplitError = !
Split( nDeadLine, bTryToSplit, ( bTableRowKeep && !(bAllowSplitOfRow || bEmulateTableKeepSplitAllowed) ) );
2645 if (bSplitError && nRepeat >
GetTable()->GetRowsToRepeat())
2651 if (!bTryToSplit && !bSplitError)
2671 if ( bSplitError && bTryToSplit )
2675 bTryToSplit =
false;
2679 bTryToSplit = !bSplitError;
2709 const bool bOldJoinLock =
GetFollow()->IsJoinLocked();
2716 if ( !bOldJoinLock )
2728 bool bCalcNxt =
true;
2743 pNxt->
Calc(pRenderContext);
2759 bLastRowHasToMoveToFollow =
false;
2775 bool bMoveAlways =
false;
2779 auto pFlyFrame =
static_cast<SwFlyFrame*
>(pUpper);
2780 if (pFlyFrame->IsFlySplitAllowed())
2791 else if (!
MoveFwd(bMakePage,
false, bMoveAlways))
2812 pTab->
Calc(pRenderContext);
2837 SwTwips nDistToUpperPrtBottom =
2846 if (pAnchor && pAnchor->HasFollow())
2855 if ( nDistToUpperPrtBottom >= 0 || bTryToSplit )
2863#if OSL_DEBUG_LEVEL > 0
2866 OSL_FAIL(
"debug assertion: <SwTabFrame::MakeAll()> - format of table lowers suppressed by fix i44910" );
2885 if ( bMovedFwd || bMovedBwd || !bOldValidPos )
2896 if (pContentFrame == &rAnchorFrame)
2908 SwTwips *
const pSpaceBelowBottom)
const
2910 bool bInvalidatePrtArea =
false;
2922 return bInvalidatePrtArea;
2925 const bool bConsiderWrapOnObjPos
2928 nPrtPos = aRectFnSet.
YInc(nPrtPos, rUpper);
2930 if (pSpaceBelowBottom)
2951 const SwRect aFlyRect = pFly->GetObjRectWithSpaces();
2968 const SwTextFrame* pAnchorCharFrame = pFly->FindAnchorCharFrame();
2971 bool bIgnoreFlyValidity
2976 (pFly->isFrameAreaDefinitionValid() || bIgnoreFlyValidity)
2978 && pFly->IsFlyAtContentFrame()
2983 && (pSpaceBelowBottom
2986 && !pFly->IsAnLower(
this)
2995 && pPage->
GetPhyPageNum() >= pFly->GetAnchorFrame()->FindPageFrame()->GetPhyPageNum()
2997 && (!pAnchorCharFrame ||
3005 if (pFlyHeaderFooterFrame != pThisHeaderFooterFrame
3009 && (!bConsiderWrapOnObjPos ||
nullptr != pThisHeaderFooterFrame
3015 text::WrapTextMode nSurround = pFly->GetFormat()->GetSurround().GetSurround();
3018 bool bWrapThrough = nSurround == text::WrapTextMode_THROUGH;
3022 if (!bWrapThrough && nSurround == text::WrapTextMode_THROUGH)
3023 nSurround = text::WrapTextMode_PARALLEL;
3025 bool bShiftDown = css::text::WrapTextMode_NONE == nSurround;
3026 if (!bShiftDown && bAddVerticalFlyOffsets)
3028 if (nSurround == text::WrapTextMode_PARALLEL
3041 const SwRect aFlyRectWithoutSpaces = pFly->GetObjRect();
3043 aRectFnSet.
GetRight(aFlyRectWithoutSpaces));
3048 bShiftDown = aTabRange.
overlaps(aFlyRange);
3068 *
static_cast<SwTextFrame*
>(pFly->GetAnchorFrameContainingAnchPos())))
3070 if (aRectFnSet.
YDiff(nPrtPos, nBottom) < 0)
3074 if (pSpaceBelowBottom && aRectFnSet.
YDiff(aRectFnSet.
GetBottom(aRect), nBottom) < 0)
3076 if (aRectFnSet.
YDiff(aRectFnSet.
GetTop(aRect), aRectFnSet.
GetTop(aFlyRect)) < 0)
3085 bInvalidatePrtArea =
true;
3089 if ((css::text::WrapTextMode_RIGHT == nSurround
3090 || css::text::WrapTextMode_PARALLEL == nSurround)
3095 aRectFnSet.
GetLeft(pFly->GetAnchorFrame()->getFrameArea()));
3096 rLeftOffset = std::max(rLeftOffset, nWidth);
3097 bInvalidatePrtArea =
true;
3099 if ((css::text::WrapTextMode_LEFT == nSurround
3100 || css::text::WrapTextMode_PARALLEL == nSurround)
3104 = aRectFnSet.
XDiff(aRectFnSet.
GetRight(pFly->GetAnchorFrame()->getFrameArea()),
3105 aRectFnSet.
GetLeft(aFlyRect));
3106 rRightOffset = std::max(rRightOffset, nWidth);
3107 bInvalidatePrtArea =
true;
3111 if (pSpaceBelowBottom)
3113 *pSpaceBelowBottom = aRectFnSet.
GetHeight(aRect);
3116 return bInvalidatePrtArea;
3123 OSL_ENSURE( pAttrs,
"TabFrame::Format, pAttrs is 0." );
3133 aRectFnSet.
AddRight( aFrm, nDiff );
3141 SwTwips nUpper = CalcUpperSpace( pAttrs );
3187 bool bCheckBrowseWidth =
false;
3192 switch (
GetFormat()->GetHoriOrient().GetHoriOrient() )
3194 case text::HoriOrientation::LEFT:
3197 nLeftSpacing = nLeftLine + nLeftOffset;
3203 const SwTwips nWishRight = nMax - nWishedTableWidth - nLeftOffset;
3204 if ( nRightOffset > 0 )
3209 nRightSpacing = nRightLine + std::max(
SwTwips(nRightOffset), nWishRight );
3218 nRightSpacing = nRightLine +
3219 ( ( (nWishRight+nLeftOffset) < 0 ) ?
3220 (nWishRight+nLeftOffset) :
3221 std::max(
SwTwips(0), nWishRight ) );
3225 case text::HoriOrientation::RIGHT:
3228 nRightSpacing = nRightLine + nRightOffset;
3234 const SwTwips nWishLeft = nMax - nWishedTableWidth - nRightOffset;
3235 if ( nLeftOffset > 0 )
3240 nLeftSpacing = nLeftLine + std::max(
SwTwips(nLeftOffset), nWishLeft );
3249 nLeftSpacing = nLeftLine +
3250 ( ( (nWishLeft+nRightOffset) < 0 ) ?
3251 (nWishLeft+nRightOffset) :
3252 std::max(
SwTwips(0), nWishLeft ) );
3256 case text::HoriOrientation::CENTER:
3259 const SwTwips nCenterSpacing = ( nMax - nWishedTableWidth ) / 2;
3260 nLeftSpacing = nLeftLine +
3261 ( (nLeftOffset > 0) ?
3262 std::max( nCenterSpacing,
SwTwips(nLeftOffset) ) :
3264 nRightSpacing = nRightLine +
3265 ( (nRightOffset > 0) ?
3266 std::max( nCenterSpacing,
SwTwips(nRightOffset) ) :
3270 case text::HoriOrientation::FULL:
3275 bCheckBrowseWidth =
true;
3276 nLeftSpacing = nLeftLine + nLeftOffset;
3277 nRightSpacing = nRightLine + nRightOffset;
3282 nLeftSpacing = pAttrs->
CalcLeft(
this );
3289 nLeftSpacing = std::max( nLeftSpacing,
SwTwips( nLeftOffset + nLeftLine ) );
3292 nRightSpacing = pAttrs->
CalcRight(
this );
3299 nRightSpacing = std::max( nRightSpacing,
SwTwips( nRightOffset + nRightLine ) );
3303 case text::HoriOrientation::LEFT_AND_WIDTH:
3308 nLeftSpacing = pAttrs->
CalcLeft(
this );
3319 nMax - (nLeftSpacing-pAttrs->
CalcLeftLine()) - nWishedTableWidth;
3320 nRightSpacing = nRightLine +
3321 ( (nRightOffset > 0) ?
3322 std::max( nWishRight,
SwTwips(nRightOffset) ) :
3327 OSL_FAIL(
"Invalid orientation for table." );
3338 if( (nMax -
MINLAY) < (nLeftSpacing + nRightSpacing) )
3341 aRectFnSet.
SetXMargins( *
this, nLeftSpacing, nRightSpacing );
3344 if ( bCheckBrowseWidth &&
3372 SwTwips nRemaining = 0, nDiff;
3380 nRemaining += nUpper + nLower;
3385 else if ( nDiff < 0 )
3393 if( nHeight > 0 && nDist > (
LONG_MAX - nHeight ) )
3405 while ( pFrame &&
GetFollow() != pFrame )
3411 if ( nReal < nDist )
3418 nDist = nTmp < 0 ? 0 : nTmp;
3429#if !ENABLE_WASM_STRIP_ACCESSIBILITY
3501 if(pPage && pPage->
GetUpper() && !IsFollow())
3510 if(rHint.
GetId() == SfxHintId::SwTableHeadingChange)
3515 else if (rHint.
GetId() != SfxHintId::SwLegacyModify)
3519 bool bAttrSetChg = pLegacy->m_pNew &&
RES_ATTRSET_CHG == pLegacy->m_pNew->Which();
3523 auto& rOldSetChg = *
static_cast<const SwAttrSetChg*
>(pLegacy->m_pOld);
3524 auto& rNewSetChg = *
static_cast<const SwAttrSetChg*
>(pLegacy->m_pNew);
3533 UpdateAttr_(pOItem, pNItem, eInvFlags, &aOldSet, &aNewSet);
3541 UpdateAttr_(pLegacy->m_pOld, pLegacy->m_pNew, eInvFlags);
3560 for(sal_uInt16 nIdx = 0; nIdx < nNewRepeat; ++nIdx)
3567 pHeadline->
Paste(
this, pLowerRow);
3577 const sal_uInt16 nWhich = pOld ? pOld->
Which() : pNew ? pNew->
Which() : 0;
3594 if (
GetFormat()->GetPageDesc().GetNumOffset())
3627 if ( pOldSet || pNewSet )
3647 return pPage->UpdateVirtPageNumInfo(rInfo,
this);
3678#if OSL_DEBUG_LEVEL > 0
3680 OSL_ENSURE( pSect,
"Where does this column come from?");
3681 OSL_ENSURE(
IsAnLower( pSect ),
"Split cell?" );
3689 OSL_ENSURE( pRet->
IsCellFrame(),
"SwTabFrame::FindLastContent failed" );
3739 if ( SwFlowFrame::IsMoveBwdJump() || !IsPrevObjMove() )
3757 bool bMoveAnyway =
false;
3761 if ( !SwFlowFrame::IsMoveBwdJump() )
3767 if(
std::abs( nNewWidth - nOldWidth ) < 2 )
3769 bMoveAnyway = BwdMoveNecessary( pOldPage,
getFrameArea() ) > 1;
3775 while ( pPrevFrame && pPrevFrame !=
this )
3778 pPrevFrame = pPrevFrame->
GetNext();
3780 bMoveAnyway = BwdMoveNecessary( pNewPage, aRect) > 1;
3796 if (0 < nSpace && GetPrecede())
3799 tools::Long nLeftOffsetDummy(0), nRightOffsetDummy(0);
3802 nUpperDummy, nLeftOffsetDummy, nRightOffsetDummy, &nSpace);
3818 bool bFits = nSpace > 0;
3822 bFits = nSpace >= 0;
3842 return nTmpHeight <= nSpace;
3850 OSL_ENSURE(
GetUpper(),
"Cut without Upper()." );
3866 if( !pSct->IsFollow() )
3878 if (
nullptr != pFrame )
3895 if( !pSct->IsFollow() )
3935 bSplitFly = pFlyAtContent->IsFollow();
3937 if (pUp == pFly && bSplitFly)
3950 pTmp->InvalidatePrt_();
3968 if ( pPage && !IsFollow() && pPage->
GetUpper() )
3974 OSL_ENSURE( pParent,
"No parent for pasting." );
3975 OSL_ENSURE( pParent->
IsLayoutFrame(),
"Parent is ContentFrame." );
3976 OSL_ENSURE( pParent !=
this,
"I'm the parent myself." );
3977 OSL_ENSURE( pSibling !=
this,
"I'm my own neighbour." );
3979 "I'm still registered somewhere." );
4018 if ( !pPage || IsFollow() )
4042 , m_pTabLine( &rLine )
4043 , m_pFollowRow( nullptr )
4045 , mnTopMarginForLowers( 0 )
4046 , mnBottomMarginForLowers( 0 )
4047 , mnBottomLineSize( 0 )
4049 , m_bIsFollowFlowRow( false )
4051 , m_bIsRepeatedHeadline( false )
4052 , m_bIsRowSpanLine( false )
4053 , m_bForceRowSplitAllowed( false )
4054 , m_bIsInSplit( false )
4064 for (
size_t i = 0;
i < rBoxes.size(); ++
i )
4067 if ( bHiddenRedlines && RedlineType::Delete == rBoxes[
i]->GetRedlineType() )
4078 sw::BroadcastingModify* pMod =
GetFormat();
4081 pMod->Remove(
this );
4082 if( !pMod->HasWriterListeners() )
4106 if(bInFirstNonHeadlineRow)
4108 if(bInFirstNonHeadlineRow || !
GetNext())
4111 const sw::BroadcastingModify aMod;
4119 if(
GetTabLine() != &pNewFormatHint->m_rTabLine)
4130 bool bInFollowFlowRow =
false;
4132 if(bInFirstNonHeadlineRow ||
4137 if(bInFirstNonHeadlineRow || bInFollowFlowRow)
4147 if(
GetTabLine() != &pMoveTableLineHint->m_rTableLine)
4154 if (rHint.
GetId() != SfxHintId::SwLegacyModify)
4157 if(!pLegacy->m_pNew)
4163 switch(pLegacy->m_pNew->Which())
4197 (void)xmlTextWriterStartElement(writer,
reinterpret_cast<const xmlChar*
>(
"row"));
4200 (void)xmlTextWriterStartElement(writer, BAD_CAST(
"infos"));
4202 (void)xmlTextWriterEndElement(writer);
4205 (void)xmlTextWriterEndElement(writer);
4213 static_cast<const SwSectionFrame*
>(pFrame)->ContainsContent() : pFrame;
4218 bool bIsFollow(
false );
4250 pAnchoredObj->FindAnchorCharFrame() != pTmp )
4258 const SwFrameFormat& rFrameFormat = pAnchoredObj->GetFrameFormat();
4260 bool bIsFarAway = pAnchoredObj->GetObjRect().Top() !=
FAR_AWAY;
4262 bool bIsAnchoredToTmpFrm =
false;
4263 if ( pPageFrm && pPageFrm->
IsPageFrame() && pAnchoredObj->GetPageFrame())
4264 bIsAnchoredToTmpFrm = pAnchoredObj->GetPageFrame() == pPageFrm ||
4266 const bool bConsiderObj =
4269 bFollowTextFlow && bIsAnchoredToTmpFrm;
4271 bool bInBackground = !rFrameFormat.
GetOpaque().GetValue();
4273 bool bConsiderFollowTextFlow = bInBackground
4276 if (pFrame->
IsInTab() && bFollowTextFlow && bWrapThrough && bConsiderFollowTextFlow)
4289 const SwTwips nDistOfFlyBottomToAnchorTop =
4290 aRectFnSet.
GetHeight(pAnchoredObj->GetObjRect()) +
4292 pAnchoredObj->GetCurrRelPos().X() :
4293 pAnchoredObj->GetCurrRelPos().Y() );
4300 nHeight = std::max( nHeight, nDistOfFlyBottomToAnchorTop + nFrameDiff -
4310 const SwTwips nDistOfFlyBottomToAnchorTop2 = aRectFnSet.
YDiff(
4311 aRectFnSet.
GetBottom(pAnchoredObj->GetObjRect()),
4314 nHeight = std::max( nHeight,
tools::Long(nDistOfFlyBottomToAnchorTop2 ));
4323 if( !
static_cast<const SwSectionFrame*
>(pFrame)->IsAnLower( pTmp ) )
4338 nTopSpace =
static_cast<const SwRowFrame*
>(rCell.
GetUpper())->GetTopMarginForLowers();
4339 nBottomSpace =
static_cast<const SwRowFrame*
>(rCell.
GetUpper())->GetBottomMarginForLowers();
4345 nTopSpace = rAttrs.
CalcLeft( &rCell );
4346 nBottomSpace = rAttrs.
CalcRight( &rCell );
4355 return nTopSpace + nBottomSpace;
4362 const bool _bConsiderObjs,
4382 nHeight += nLowHeight;
4384 if ( _bConsiderObjs )
4386 nFlyAdd = std::max(
tools::Long(0), nFlyAdd - nLowHeight );
4399 if ( _pCell->
Lower() )
4416 const bool _bConsiderObjs )
4431 bool bSplitFly =
false;
4473 if ( 1 == nRowSpan )
4477 else if ( -1 == nRowSpan )
4485 while ( pMasterRow && pMasterRow != _pRow )
4488 pMasterRow = pMasterRow->
GetNext();
4508 sal_uInt16 nTopSpace = 0;
4510 pCurrLower =
static_cast<const SwCellFrame*
>(pCurrLower->GetNext()) )
4512 sal_uInt16 nTmpTopSpace = 0;
4513 if ( pCurrLower->Lower() && pCurrLower->Lower()->IsRowFrame() )
4521 nTopSpace = std::max( nTopSpace, nTmpTopSpace );
4529 sal_uInt16 nTopLineDist = 0;
4531 pCurrLower =
static_cast<const SwCellFrame*
>(pCurrLower->GetNext()) )
4533 sal_uInt16 nTmpTopLineDist = 0;
4534 if ( pCurrLower->Lower() && pCurrLower->Lower()->IsRowFrame() )
4542 nTopLineDist = std::max( nTopLineDist, nTmpTopLineDist );
4544 return nTopLineDist;
4550 sal_uInt16 nBottomLineSize = 0;
4552 pCurrLower =
static_cast<const SwCellFrame*
>(pCurrLower->GetNext()) )
4554 sal_uInt16 nTmpBottomLineSize = 0;
4555 if ( pCurrLower->Lower() && pCurrLower->Lower()->IsRowFrame() )
4557 const SwFrame* pRow = pCurrLower->GetLastLower();
4567 nBottomLineSize = std::max( nBottomLineSize, nTmpBottomLineSize );
4569 return nBottomLineSize;
4575 sal_uInt16 nBottomLineDist = 0;
4577 pCurrLower =
static_cast<const SwCellFrame*
>(pCurrLower->GetNext()) )
4579 sal_uInt16 nTmpBottomLineDist = 0;
4580 if ( pCurrLower->Lower() && pCurrLower->Lower()->IsRowFrame() )
4582 const SwFrame* pRow = pCurrLower->GetLastLower();
4591 nBottomLineDist = std::max( nBottomLineDist, nTmpBottomLineDist );
4593 return nBottomLineDist;
4613 if (!pLine || !pTab || !pTab->IsFollow())
4619 if (pCurRow != &rRow && pCurRow->
GetTabLine() == pLine)
4630 if (pCurTab && pCurTab->IsAnFollow(pTab))
4634 nResult += aRectFnSet.
GetHeight(pCurRow->getFrameArea());
4644 OSL_ENSURE( pAttrs,
"SwRowFrame::Format without Attrs." );
4684 while ( pTmpRow && !pPrevTabLine )
4691 while ( rLines[ nIdx ] != pTmpRow->
GetTabLine() )
4697 pPrevTabLine = rLines[ nIdx - 1 ];
4719 if ( pRow->GetTabLine() == pPrevTabLine &&
4720 !pRow->IsRepeatedHeadline() )
4722 pPreviousRow = pRow;
4728 sal_uInt16 nTopPrtMargin = nTopSpace;
4731 const sal_uInt16 nTmpPrtMargin = pPreviousRow->
GetBottomLineSize() + nTopLineDist;
4732 if ( nTmpPrtMargin > nTopPrtMargin )
4733 nTopPrtMargin = nTmpPrtMargin;
4766#if OSL_DEBUG_LEVEL > 0
4783 Shrink( nDiff,
false,
true );
4784 else if ( nDiff < 0 )
4799 pSibling = pSibling->
GetNext();
4800 }
while ( pSibling );
4816#if !ENABLE_WASM_STRIP_ACCESSIBILITY
4848 SwFrame* pToAdjustRow =
nullptr;
4855 pToAdjustRow = pToAdjust->
GetUpper();
4859 pToAdjust = pCellFrame;
4860 pToAdjustRow =
this;
4866 while ( pToAdjustRow )
4869 nSumRowHeight += pToAdjustRow ==
this ?
4873 if ( nRowSpan-- == 1 )
4876 pToAdjustRow = pToAdjustRow->
GetNext();
4879 if ( pToAdjustRow && pToAdjustRow !=
this )
4885#if !ENABLE_WASM_STRIP_ACCESSIBILITY
4890 pNotify = pToAdjust;
4895#if !ENABLE_WASM_STRIP_ACCESSIBILITY
4935 bool bRestrictTableGrowth;
4941 bRestrictTableGrowth = pFollowFlowRow && !pFollowFlowRow->
IsRowSpanLine();
4946 bRestrictTableGrowth =
GetFollowRow() && bHasFollowFlowLine;
4947 OSL_ENSURE( !bRestrictTableGrowth || !
GetNext(),
4948 "GetFollowRow for row frame that has a Next" );
4951 const SwTwips nAdditionalSpace =
4953 if ( bRestrictTableGrowth && nAdditionalSpace > 0 )
4955 nReal =
std::min( nAdditionalSpace, nDist );
4965 if ( bRestrictTableGrowth )
5006 const bool bShrinkAnyway = bInfo;
5025 OSL_ENSURE(
FindTabFrame(),
"<SwRowFrame::ShrinkFrame(..)> - no table frame -> crash." );
5026 const bool bConsiderObjs(
FindTabFrame()->IsConsiderObjsForMinCellHeight() );
5033 if ( nRealDist < 0 )
5043 aRectFnSet.
SetHeight( aFrm, nHeight - nReal );
5047 aFrm.
Pos().AdjustX(nReal );
5053 if ( !bShrinkAnyway && !
GetNext() && nTmp != nReal )
5062 aRectFnSet.
SetHeight( aFrm, nHeight + nReal );
5066 aFrm.
Pos().AdjustX( -nReal );
5131 static_cast<const SwTextFrame*
>(pText)->GetTextNodeForParaProps()->GetSwAttrSet().GetKeep(bCheckParents).GetValue();
5136 , m_pTabBox( &rBox )
5140 if ( !bInsertContent )
5153 for (
size_t i = 0;
i < rLines.
size(); ++
i )
5164 sw::BroadcastingModify* pMod =
GetFormat();
5169#if !ENABLE_WASM_STRIP_ACCESSIBILITY
5178 pMod->Remove(
this );
5179 if( !pMod->HasWriterListeners() )
5198 if( nFrameTop != lYStart )
5206 aRectFnSet.
SubTop( aFrm, -lDiff );
5237 bool bVertPosDepOnAnchor(
true );
5242 case text::RelOrientation::PAGE_FRAME:
5243 case text::RelOrientation::PAGE_PRINT_AREA:
5244 bVertPosDepOnAnchor =
false;
5258 const bool bDirectMove =
5259 FAR_AWAY != pFly->getFrameArea().Top() &&
5260 bVertPosDepOnAnchor &&
5261 !pFly->ConsiderObjWrapInfluenceOnObjPos();
5266 aRectFnSet.
SubTop( aFrm, -lDiff );
5270 pFly->GetVirtDrawObj()->SetBoundAndSnapRectsDirty();
5274 pFly->GetVirtDrawObj()->SetChanged();
5276 pFly->InvalidateObjRectWithSpaces();
5279 if ( pFly->IsFlyInContentFrame() )
5289 else if( pFly->IsAutoPos() )
5291 pFly->AddLastCharY( lDiff );
5294 pFly->AddLastTopOfLineY( lDiff );
5303 !( pTabFrame->IsFollow() &&
5305 pFly->IsFlyFreeFrame() )
5309 if ( pPageFrame != pPageOfAnchor )
5312 pFly->RegisterAtPage(*pPageOfAnchor);
5319 pFly->InvalidatePos();
5329 pFly->SetCompletePaint();
5337 !( pTabFrame->IsFollow() &&
5340 != RndStdIds::FLY_AS_CHAR))
5344 if ( pPageFrame != pPageOfAnchor )
5356 const bool bDirectMove =
5358 bVertPosDepOnAnchor &&
5363 if ( aRectFnSet.
IsVert() )
5378 OSL_FAIL(
"<lcl_ArrangeLowers(..)> - unknown type of anchored object!" );
5385 lYStart = aRectFnSet.
YInc( lYStart,
5393 SwTwips nDistanceToUpperPrtBottom =
5398 if ( nDistanceToUpperPrtBottom < 0 &&
5401 !
static_cast<SwTextFrame*
>(pFrame)->IsUndersized() ) ) ||
5414 OSL_ENSURE( pAttrs,
"CellFrame::Format, pAttrs is 0." );
5425 SwTwips nTopSpace, nBottomSpace, nLeftSpace, nRightSpace;
5438 nLeftSpace = pAttrs->
CalcLeft(
this );
5439 nRightSpace = pAttrs->
CalcRight(
this );
5440 nTopSpace = pAttrs->
CalcTop();
5443 aRectFnSet.
SetXMargins( *
this, nLeftSpace, nRightSpace );
5444 aRectFnSet.
SetYMargins( *
this, nTopSpace, nBottomSpace );
5469 OSL_ENSURE( nWish,
"Table without width?" );
5470 OSL_ENSURE( nWidth <= nWish,
"Width of cell larger than table." );
5471 OSL_ENSURE( nWidth > 0,
"Box without width" );
5474 if ( nWish != nPrtWidth )
5488 pTmpBox = rBoxes[
i++ ];
5494 double nTmpWidth = nSumWidth;
5495 nTmpWidth *= nPrtWidth;
5497 nWidth =
static_cast<SwTwips>(nTmpWidth);
5502 while ( pTmpCell !=
this )
5505 pTmpCell = pTmpCell->
GetNext();
5508 nWidth = nWidth - nSumFrameWidths;
5514 double nTmpWidth = nWidth;
5515 nTmpWidth *= nPrtWidth;
5517 nWidth =
static_cast<SwTwips>(nTmpWidth);
5523 OSL_ENSURE( pAttrs->
GetSize().
Width() > 0,
"Box without width" );
5526 while ( pPre !=
this )
5540 aRectFnSet.
SubLeft( aFrm, nDiff );
5544 aRectFnSet.
AddRight( aFrm, nDiff );
5550 aRectFnSet.
AddRight( aPrt, nDiff );
5557 if ( nDiffHeight > 0 )
5561 if ( !
Grow( nDiffHeight ) )
5572 if ( !
Shrink( -nDiffHeight ) )
5597 OSL_ENSURE(
false,
"VAlign to cell without content" );
5600 bool bVertDir =
true;
5611 SwRect aTmp( pAnchoredObj->GetObjRect() );
5612 const SwFrame* pAnch = pAnchoredObj->GetAnchorFrame();
5613 if ( (bConsiderWrapOnObjPos &&
IsAnLower( pAnch )) || (!bConsiderWrapOnObjPos && aTmp.
Overlaps( aRect )) )
5615 const SwFrameFormat& rAnchoredObjFrameFormat = pAnchoredObj->GetFrameFormat();
5618 if ( bConsiderWrapOnObjPos || css::text::WrapTextMode_THROUGH != rSur.
GetSurround() )
5621 if (
auto pFly = pAnchoredObj->DynCastFlyFrame() )
5623 if ( pFly->IsAnLower(
this ) )
5633 if ( bConsiderWrapOnObjPos ||
5635 pAnchoredObj->IsTmpConsiderWrapInfluence() ||
5658 case text::VertOrientation::CENTER: lTopOfst = nDiff / 2;
break;
5659 case text::VertOrientation::BOTTOM: lTopOfst = nDiff;
break;
5664 aRectFnSet.
GetPrtTop(*
this), lTopOfst );
5685 if (!pFrame->IsTextFrame())
5690 auto pTextFrame =
static_cast<SwTextFrame*
>(pFrame);
5691 if (!pTextFrame->GetHasRotatedPortions())
5704 if(
GetTabBox() != &pNewFormatHint->m_rTableBox)
5727 if(
GetTabBox() != &pMoveTableBoxHint->m_rTableBox)
5736 else if (rHint.
GetId() == SfxHintId::SwLegacyModify)
5743 const auto nWhich = pLegacy->m_pNew ? pLegacy->m_pNew->
Which() : 0;
5748 auto& rChgSet = *
static_cast<const SwAttrSetChg*
>(pLegacy->m_pNew)->GetChgSet();
5750 pProtectItem = rChgSet.GetItemIfSet(
RES_PROTECT,
false);
5751 pFrameDirItem = rChgSet.GetItemIfSet(
RES_FRAMEDIR,
false);
5752 pBoxItem = rChgSet.GetItemIfSet(
RES_BOX,
false);
5756 pVertOrientItem = pLegacy->m_pNew;
5759 pProtectItem = pLegacy->m_pNew;
5762 pFrameDirItem = pLegacy->m_pNew;
5765 pBoxItem = pLegacy->m_pNew;
5771 const auto eVertOrient =
static_cast<const SwFormatVertOrient*
>(pVertOrientItem)->GetVertOrient();
5784#if !ENABLE_WASM_STRIP_ACCESSIBILITY
5809 pTmpUpper = pTmpUpper->
GetNext();
5845 if (!pCell->IsCellFrame())
5850 auto pCellFrame =
static_cast<const SwCellFrame*
>(pCell);
5851 if (!pCellFrame->IsCoveredCell())
5876 std::vector<const SwCellFrame*> aRet;
5888 if (!pFirstRowFrame->
GetNext())
5900 if (!pRow->IsRowFrame())
5905 auto pRowFrame =
static_cast<const SwRowFrame*
>(pRow);
5913 aRet.push_back(pCovered);
5923 (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST(
"follow"),
"%" SAL_PRIuUINT32, pFollow->GetFrameId());
5926 (
void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST(
"precede"),
"%" SAL_PRIuUINT32, pPrevious->GetFrameId());
5931 (void)xmlTextWriterStartElement(writer,
reinterpret_cast<const xmlChar*
>(
"cell"));
5933 (void)xmlTextWriterWriteFormatAttribute( writer, BAD_CAST(
"rowspan" ),
"%ld",
GetLayoutRowSpan() );
5935 (void)xmlTextWriterStartElement(writer, BAD_CAST(
"infos"));
5937 (void)xmlTextWriterEndElement(writer);
5940 (void)xmlTextWriterEndElement(writer);
5947#if !ENABLE_WASM_STRIP_ACCESSIBILITY
5953 if ( pVSh && pVSh->
Imp() )
5969 "SwTabFrame::IsInHeadline called for frame not lower of table" );
5971 const SwFrame* pTmp = &rFrame;
5998 while ( pRet && nRepeat > 0 )
6028 "BottomLineSize only required for collapsing borders" );
6030 OSL_ENSURE(
Lower(),
"Warning! Trying to prevent a crash" );
6035 if ( !pTmp )
return 0;
6047 (void)xmlTextWriterStartElement(writer,
reinterpret_cast<const xmlChar*
>(
"tab"));
6050 (void)xmlTextWriterStartElement(writer, BAD_CAST(
"infos"));
6052 (void)xmlTextWriterEndElement(writer);
6055 (void)xmlTextWriterEndElement(writer);
6076 while ( pCurrSourceCell )
6090 SwTwips nTmpHeight = USHRT_MAX;
6118 if ( USHRT_MAX != nTmpHeight )
6128 const SwFrame* pLast = pFrame;
6142 !
static_cast<const SwTextFrame*
>(pLast)->GetFollow() ) )
6144 nReal += SwFlowFrame::CastFlowFrame(pLast)->CalcAddLowerSpaceAsLastInTableCell();
6151 !
static_cast<const SwTextFrame*
>(pTmp)->IsFollow() ) )
6153 nTmpHeight += SwFlowFrame::CastFlowFrame(pTmp)->CalcUpperSpace(
nullptr, pLast);
6154 nTmpHeight += SwFlowFrame::CastFlowFrame(pTmp)->CalcLowerSpace();
6164 nTmpHeight += SwFlowFrame::CastFlowFrame(pTmp)
6165 ->CalcAddLowerSpaceAsLastInTableCell();
6168 nTmpHeight -= nReal;
6181 nTmpHeight += SwFlowFrame::CastFlowFrame(pTmp)->CalcUpperSpace();
6182 nTmpHeight += SwFlowFrame::CastFlowFrame(pTmp)->CalcLowerSpace();
6187 if ( bIsInFollowFlowLine )
6190 if ( nTmpHeight < nHeight )
6191 nHeight = nTmpHeight;
6196 if ( nTmpHeight > nHeight && USHRT_MAX != nTmpHeight )
6197 nHeight = nTmpHeight;
6204 return (
LONG_MAX == nHeight ) ? 0 : nHeight;
6223 OSL_ENSURE( !IsFollow() || pFirstRow,
"FollowTable without Lower" );
6235 SwTwips nKeepHeight = nRepeatHeight;
6238 sal_uInt16 nKeepRows = nRepeat;
6247 if ( nKeepRows > nRepeat )
6256 nTmpHeight = nKeepHeight;
6260 nTmpHeight = nKeepHeight - nRepeatHeight;
6296 nTmpHeight += nMaxHeight;
6300 nTmpHeight += nFirstLineHeight;
6307 else if ( 0 != nFirstLineHeight )
6309 const bool bOldJoinLock = IsJoinLocked();
6323 nTmpHeight += std::max( nHeightOfFirstContentLine, nMinRowHeight );
6325 if ( !bOldJoinLock )
css::chart::ChartAxisLabelPosition ePos
@ CONSIDER_WRAP_ON_OBJECT_POSITION
@ USE_FORMER_TEXT_WRAPPING
@ ADD_VERTICAL_FLY_OFFSETS
@ ADD_PARA_SPACING_TO_TABLE_CELLS
virtual void UpdatePageFields(const SwTwips)=0
virtual const SwRedlineTable & GetRedlineTable() const =0
Provides access to settings of a document.
virtual bool get(DocumentSettingId id) const =0
Return the specified document setting.
constexpr tools::Long Y() const
virtual void Move(const Size &rSiz)
virtual void SetChanged()
virtual void SetBoundAndSnapRectsDirty(bool bNotMyself=false, bool bRecursive=true)
const SfxPoolItem * GetCurItem() const
const SfxPoolItem * NextItem()
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
constexpr tools::Long Height() const
constexpr tools::Long Width() const
sal_Int16 CalcLineSpace(SvxBoxItemLine nLine, bool bEvenIfNoLine=false, bool bAllowNegative=false) const
sal_Int16 GetDistance(SvxBoxItemLine nLine, bool bAllowNegative=false) const
tools::Long GetHeight() const
tools::Long GetWidth() const
const Size & GetSize() const
sal_uInt16 GetLower() const
class for the positioning of drawing objects
wrapper class for the positioning of Writer fly frames and drawing objects
virtual void RegisterAtPage(SwPageFrame &)=0
SwTextFrame * FindAnchorCharFrame()
get frame, which contains the anchor character, if the object is anchored at-character or as-characte...
void AddLastCharY(tools::Long nDiff)
void AddLastTopOfLineY(SwTwips _nDiff)
SwFrame * GetAnchorFrameContainingAnchPos()
determine anchor frame containing the anchor position
void ClearCharRectAndTopOfLine()
reset members <maLastCharRect> and <mnLastTopOfLine>
void SetTmpConsiderWrapInfluence(const bool _bTmpConsiderWrapInfluence)
void SetCurrRelPos(Point _aRelPos)
void SetObjLeft(const SwTwips _nLeft)
bool ConsiderObjWrapInfluenceOnObjPos() const
method to determine, if wrapping style influence of the anchored object has to be considered on the o...
virtual SwFrameFormat & GetFrameFormat()=0
SwPageFrame * GetPageFrame()
void SetConsiderForTextWrap(const bool _bConsiderForTextWrap)
virtual void InvalidateObjPos()=0
method to invalidate position of the anchored object
virtual const SwFlyFrame * DynCastFlyFrame() const
void InvalidateObjRectWithSpaces() const
void ClearItem(sal_uInt16 nWhichL)
const SwFormatVertOrient & GetVertOrient(bool=true) const
const SvxFormatKeepItem & GetKeep(bool=true) const
const SwFormatFrameSize & GetFrameSize(bool=true) const
sal_uInt16 CalcRightLine() const
const SvxBoxItem & GetBox() const
const Size & GetSize() const
tools::Long CalcLeft(const SwFrame *pCaller) const
const SvxULSpaceItem & GetULSpace() const
sal_uInt16 CalcLeftLine() const
sal_uInt16 CalcTop() const
const SwAttrSet & GetAttrSet() const
sal_uInt16 CalcBottomLine() const
tools::Long CalcRight(const SwFrame *pCaller) const
sal_uInt16 CalcBottom() const
SwCellFrame is one table cell in the document layout.
virtual bool IsLeaveUpperAllowed() const override
const SwCellFrame & FindStartEndOfRowSpanCell(bool bStart) const
virtual void DestroyImpl() override
void dumpAsXmlAttributes(xmlTextWriterPtr writer) const override
virtual ~SwCellFrame() override
void dumpAsXml(xmlTextWriterPtr writer=nullptr) const override
tools::Long GetLayoutRowSpan() const
const SwCellFrame * GetCoveredCellInRow(const SwRowFrame &rRow) const
If this is a vertically merged cell, then looks up its covered cell in rRow.
SwCellFrame * GetFollowCell() const
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
virtual void Cut() override
SwCellFrame * GetPreviousCell() const
std::vector< const SwCellFrame * > GetCoveredCells() const
If this is a vertically merged cell, then looks up its covered cells.
const SwTableBox * GetTabBox() const
virtual void Format(vcl::RenderContext *pRenderContext, const SwBorderAttrs *pAttrs=nullptr) override
"Formats" the Frame; Frame and PrtArea.
SwCellFrame(const SwTableBox &, SwFrame *, bool bInsertContent)
virtual bool IsCoveredCell() const override
SwContentFrame is the layout for content nodes: a common base class for text (paragraph) and non-text...
SwContentFrame * GetNextContentFrame() const
SwTextFrame * FindMaster() const
static bool CalcLowers(SwLayoutFrame &rLay, SwLayoutFrame const &rDontLeave, tools::Long nBottom, bool bSkipRowSpanCells)
IDocumentFieldsAccess const & getIDocumentFieldsAccess() const
IDocumentRedlineAccess const & getIDocumentRedlineAccess() const
SwFootnoteIdxs & GetFootnoteIdxs()
::sw::DocumentSettingManager & GetDocumentSettingManager()
const sw::FrameFormats< sw::SpzFrameFormat * > * GetSpzFrameFormats() const
Flys that are anchored to content (at-para, at-char) but not in content (as-char).
void DelEmpty()
Like Cut(), except that follow chaining is maintained.
general base class for all free-flowing frames
const SwVirtFlyDrawObj * GetVirtDrawObj() const
bool IsFlyAtContentFrame() const
bool IsFlySplitAllowed() const
Is this fly allowed to split across pages? (Disabled by default.)
Flys that are anchored as a character in the content.
SwPageDesc * GetPageDesc()
Helper class to isolate geometry-defining members of SwFrame and to control their accesses.
const SwRect & getFrameArea() const
bool isFrameAreaDefinitionValid() const
bool isFrameAreaPositionValid() const
friend void FriendHackInvalidateRowFrame(SwFrameAreaDefinition &)
const SwRect & getFramePrintArea() const
void setFramePrintAreaValid(bool bNew)
void setFrameAreaPositionValid(bool bNew)
bool isFramePrintAreaValid() const
bool isFrameAreaSizeValid() const
void setFrameAreaSizeValid(bool bNew)
Base class of the Writer layout elements.
SwTwips Grow(SwTwips, bool bTst=false, bool bInfo=false)
bool IsInCoveredCell() const
void InsertBehind(SwLayoutFrame *pParent, SwFrame *pBefore)
Insert SwFrame into existing structure.
void ValidateThisAndAllLowers(const sal_uInt16 nStage)
virtual bool Prepare(const PrepareHint ePrep=PrepareHint::Clear, const void *pVoid=nullptr, bool bNotify=true)
void SetDerivedR2L(bool bNew)
void RegisterToFormat(SwFormat &rFormat)
SwFrame * GetIndPrev() const
void CheckDirChange()
checks the layout direction and invalidates the lower frames recursively, if necessary.
SwTwips Shrink(SwTwips, bool bTst=false, bool bInfo=false)
SwFlyFrame * FindFlyFrame()
SwSectionFrame * FindSctFrame()
SwTabFrame * FindTabFrame()
void ResetCompletePaint() const
bool IsColumnFrame() const
void ReinitializeFrameSizeAttrFlags()
void InvalidateNextPos(bool bNoFootnote=false)
virtual bool IsCoveredCell() const
bool IsInFootnote() const
bool IsHeaderFrame() const
virtual void Calc(vcl::RenderContext *pRenderContext) const
const SwSortedObjs * GetDrawObjs() const
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
virtual void MakePos()
Calculates the frame area position, in case it's invalid.
static SwCache & GetCache()
bool IsRightToLeft() const
void InsertBefore(SwLayoutFrame *pParent, SwFrame *pBehind)
Insert SwFrame into existing structure.
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.
virtual bool IsDeleteForbidden() const
bool IsPageBodyFrame() const
const SwAttrSet * GetAttrSet() const
WARNING: this may not return correct RES_PAGEDESC/RES_BREAK items for SwTextFrame,...
const SwRowFrame * IsInFollowFlowRow() const
SwFrame * GetIndPrev_() const
Called for a frame inside a section with no direct previous frame (or only previous empty section fra...
friend SwFrame * sw_FormatNextContentForKeep(SwTabFrame *pTabFrame)
void dumpInfosAsXml(xmlTextWriterPtr writer) const
virtual void Paste(SwFrame *pParent, SwFrame *pSibling=nullptr)=0
bool IsMoveable(const SwLayoutFrame *_pLayoutFrame=nullptr) const
determine, if frame is moveable in given environment
bool IsFootnoteFrame() const
SwLayoutFrame * GetUpper()
virtual void dumpAsXmlAttributes(xmlTextWriterPtr writer) const
virtual bool IsLeaveUpperAllowed() const
void InvalidatePage(const SwPageFrame *pPage=nullptr) const
Invalidates the page in which the Frame is currently placed.
SwRootFrame * getRootFrame()
void SetCompletePaint() const
virtual const SvxFormatBreakItem & GetBreakItem() const
bool IsContentFrame() const
SwContentFrame * FindNextCnt(const bool _bInSameFootnote=false)
SwPageFrame * FindPageFrame()
const SwRowFrame * IsInSplitTableRow() const
SwFrame * FindFooterOrHeader()
SwFootnoteBossFrame * FindFootnoteBossFrame(bool bFootnotes=false)
virtual void MakeAll(vcl::RenderContext *pRenderContext)=0
static void DestroyFrame(SwFrame *const pFrame)
this is the only way to delete a SwFrame instance
void dumpChildrenAsXml(xmlTextWriterPtr writer) const
void SetDerivedVert(bool bNew)
bool IsLayoutFrame() const
bool IsNeighbourFrame() const
bool IsColBodyFrame() const
These SwFrame inlines are here, so that frame.hxx does not need to include layfrm....
sal_uInt16 GetBrowseWidthByTabFrame(const SwTabFrame &rTabFrame) const
Calculates available width by table-frame.
bool Resize(sal_uInt16 nAbsAvail, bool bRecalc=false, bool bForce=false, sal_uLong nDelay=0)
Recalculation of table widths for available width that has been passed.
void SetLowersComplete(bool b)
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame.
bool IsAnLower(const SwFrame *) const
virtual void MakeAll(vcl::RenderContext *pRenderContext) override
virtual const SwFrameFormat * GetFormat() const
virtual SwTwips GrowFrame(SwTwips, bool bTst=false, bool bInfo=false) override
const SwFrame * ContainsAny(const bool _bInvestigateFootnoteForSections=false) const
Method <ContainsAny()> doesn't investigate content of footnotes by default.
virtual void DestroyImpl() override
virtual void Paste(SwFrame *pParent, SwFrame *pSibling=nullptr) override
const SwFrame * GetLastLower() const
const SwContentFrame * ContainsContent() const
Checks if the frame contains one or more ContentFrame's anywhere in his subsidiary structure; if so t...
tools::Long CalcRel(const SwFormatFrameSize &rSz) const
bool MoveLowerFootnotes(SwContentFrame *pStart, SwFootnoteBossFrame *pOldBoss, SwFootnoteBossFrame *pNewBoss, const bool bFootnoteNums)
Moving the Footnotes of all Lowers - starting from StartContent.
const SwFrame * Lower() const
virtual void Cut() override
static bool DoesRowContainMovedFwdFrame(const SwDoc &_rDoc, const SwRowFrame &_rRowFrame)
SwNodeOffset GetIndex() const
Helper class for notify that positioning of an anchored object is in progress.
A page of the document layout.
sal_uInt16 GetPhyPageNum() const
const SwPageFrame & GetFormatPage() const
const SwSortedObjs * GetSortedObjs() const
SwPageDesc * GetPageDesc()
tools::Long GetHeight(const SwRect &rRect) const
tools::Long YInc(tools::Long n1, tools::Long n2) const
tools::Long GetTopMargin(const SwFrame &rFrame) const
void SetBottom(SwRect &rRect, tools::Long nNew) const
tools::Long GetWidth(const SwRect &rRect) const
void SetYMargins(SwFrame &rFrame, tools::Long nTop, tools::Long nBottom) const
void SetHeight(SwRect &rRect, tools::Long nNew) const
tools::Long GetTop(const SwRect &rRect) const
void SubTop(SwRect &rRect, tools::Long nNew) const
void AddWidth(SwRect &rRect, tools::Long nNew) const
tools::Long XDiff(tools::Long n1, tools::Long n2) const
Point GetPos(const SwRect &rRect) const
void SetXMargins(SwFrame &rFrame, tools::Long nLeft, tools::Long nRight) const
void SetTopAndHeight(SwRect &rRect, tools::Long nTop, tools::Long nHeight) const
void AddBottom(SwRect &rRect, tools::Long nNew) const
tools::Long YDiff(tools::Long n1, tools::Long n2) const
void SubLeft(SwRect &rRect, tools::Long nNew) const
tools::Long GetLeft(const SwRect &rRect) const
tools::Long GetPrtTop(const SwFrame &rFrame) const
void AddRight(SwRect &rRect, tools::Long nNew) const
tools::Long GetBottom(const SwRect &rRect) const
tools::Long BottomDist(const SwRect &rRect, tools::Long nPos) const
void SetTop(SwRect &rRect, tools::Long nNew) const
void Refresh(const SwFrame *pFrame)
tools::Long GetRight(const SwRect &rRect) 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 Pos(const Point &rNew)
bool Overlaps(const SwRect &rRect) const
void Left(const tools::Long nLeft)
void Width(tools::Long nNew)
vector_type::size_type size_type
The root element of a Writer document layout.
SwViewShell * GetCurrShell() const
void SetSuperfluous()
Remove superfluous Pages.
bool IsAnyShellAccessible() const
bool IsHideRedlines() const
Replacement for sw::DocumentRedlineManager::GetRedlineFlags() (this is layout-level redline hiding).
SwRowFrame is one table row in the document layout.
sal_uInt16 GetBottomMarginForLowers() const
void SetFollowRow(SwRowFrame *pNew)
bool IsRowSplitAllowed() const
void SetInSplit(bool bNew=true)
virtual void Cut() override
virtual SwTwips ShrinkFrame(SwTwips, bool bTst=false, bool bInfo=false) override
Only change the Frame size, not the PrtArea SSize.
void SetBottomMarginForLowers(sal_uInt16 nNew)
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
void SetBottomLineSize(sal_uInt16 nNew)
virtual SwTwips GrowFrame(SwTwips, bool bTst=false, bool bInfo=false) override
SwRowFrame(const SwTableLine &, SwFrame *, bool bInsertContent=true)
void SetRepeatedHeadline(bool bNew)
bool IsForceRowSplitAllowed() const
bool IsRowSpanLine() const
SwRowFrame * GetFollowRow() const
void AdjustCells(const SwTwips nHeight, const bool bHeight)
Adapts the Cells to the current height; invalidates the Cells if the Direction does not match the hei...
void OnFrameSize(const SfxPoolItem &)
virtual void DestroyImpl() override
bool ShouldRowKeepWithNext(const bool bCheckParents=true) const
virtual void Format(vcl::RenderContext *pRenderContext, const SwBorderAttrs *pAttrs=nullptr) override
"Formats" the Frame; Frame and PrtArea.
void dumpAsXml(xmlTextWriterPtr writer=nullptr) const override
sal_uInt16 GetBottomLineSize() const
void RegistFlys(SwPageFrame *pPage=nullptr)
Register Flys after a line was created AND inserted Must be called by the creator; the Fly is inserte...
bool IsRepeatedHeadline() const
virtual void MakeAll(vcl::RenderContext *pRenderContext) override
bool IsFollowFlowRow() const
void SetTopMarginForLowers(sal_uInt16 nNew)
void SetRowSpanLine(bool bNew)
const SwTableLine * GetTabLine() const
void SetForceRowSplitAllowed(bool bNew)
sal_uInt16 GetTopMarginForLowers() const
virtual ~SwRowFrame() override
void SetFollowFlowRow(bool bNew)
void DelEmpty(bool bRemove)
SwContentFrame * FindLastContent(SwFindMode nMode=SwFindMode::None)
const SwSectionFrame * GetFollow() const
class for collecting anchored objects
SwTabFrame is one table in the document layout, containing rows (which contain cells).
void SetDoesObjsFit(bool const bObjsDoesFit)
bool IsCollapsingBorders() const
SwTwips CalcHeightOfFirstContentLine() const
Function to calculate height of first text row.
SwContentFrame * FindLastContent()
virtual void DestroyImpl() override
SwTabFrame * FindMaster(bool bFirstMaster=false) const
const SwTabFrame * GetFollow() const
virtual ~SwTabFrame() override
void dumpAsXml(xmlTextWriterPtr writer=nullptr) const override
virtual bool GetInfo(SfxPoolItem &rHint) const override
void Invalidate(SwTabFrameInvFlags)
bool IsRebuildLastLine() const
SwRowFrame * GetFirstNonHeadlineRow() const
void SetInRecalcLowerRow(bool bNew)
SwTabFrame(SwTable &, SwFrame *)
virtual void MakeAll(vcl::RenderContext *pRenderContext) override
SwFrame * FindLastContentOrTable()
virtual void Format(vcl::RenderContext *pRenderContext, const SwBorderAttrs *pAttrs=nullptr) override
"Formats" the frame; Frame and PrtArea.
bool RemoveFollowFlowLine()
const SwTable * GetTable() const
void SetRebuildLastLine(bool bNew)
bool m_bLockBackMove
Communication between MakeAll and Layact.
bool m_bCalcLowers
Set entries for Repaint without needing to set the base class' CompletePaint With that we would want ...
void SetLowersFormatted(bool b)
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
virtual void dumpAsXmlAttributes(xmlTextWriterPtr writer) const override
bool IsRemoveFollowFlowLinePending() const
bool IsInHeadline(const SwFrame &rFrame) const
void SetRestrictTableGrowth(bool bNew)
void SetConsiderObjsForMinCellHeight(bool const bConsiderObjsForMinCellHeight)
sal_uInt16 GetBottomLineSize() const
void SetRemoveFollowFlowLinePending(bool bNew)
bool IsLayoutSplitAllowed() const
virtual SwTwips GrowFrame(SwTwips, bool bTst=false, bool bInfo=false) override
void UpdateAttr_(const SfxPoolItem *, const SfxPoolItem *, SwTabFrameInvFlags &, SwAttrSetChg *pa=nullptr, SwAttrSetChg *pb=nullptr)
virtual bool ShouldBwdMoved(SwLayoutFrame *pNewUpper, bool &rReformat) override
Return value defines if the frm needs to be relocated.
virtual void Paste(SwFrame *pParent, SwFrame *pSibling=nullptr) override
void SetFollowFlowLine(bool bNew)
bool HasFollowFlowLine() const
bool CalcFlyOffsets(SwTwips &rUpper, tools::Long &rLeftOffset, tools::Long &rRightOffset, SwTwips *pSpaceBelowBottom) const
Calculate the offsets arising because of FlyFrames.
bool Split(const SwTwips nCutPos, bool bTryToSplit, bool bTableRowKeep)
Split() splits the Frame at the specified position: a Follow is created and constructed and inserted ...
virtual void Cut() override
void HandleTableHeadlineChange()
bool m_bResizeHTMLTable
The Master took care of the BackMove test.
bool IsConsiderObjsForMinCellHeight() const
bool m_bONECalcLowers
Call the Resize of the HTMLTableLayout in the MakeAll This is an optimization, so that we don't have ...
bool IsInRecalcLowerRow() const
virtual bool Prepare(const PrepareHint ePrep=PrepareHint::Clear, const void *pVoid=nullptr, bool bNotify=true) override
bool IsRestrictTableGrowth() const
bool m_bLowersFormatted
For stability of the content in MakeAll.
SwTableBox is one table cell in the document model.
sal_Int32 getRowSpan() const
SwNodeOffset GetSttIdx() const
SwFrameFormat * GetFrameFormat()
SwTableLines & GetTabLines()
SwTableLine is one table row in the document model.
SwFrameFormat * GetFrameFormat()
SwTableBoxes & GetTabBoxes()
SwTable is one table in the document model, containing rows (which contain cells).
void SetRowsToRepeat(sal_uInt16 nNumOfRows)
SwTableLines & GetTabLines()
bool IsHeadline(const SwTableLine &rLine) const
SwHTMLTableLayout * GetHTMLTableLayout()
sal_uInt16 GetRowsToRepeat() const
static void getShapeWrapThrough(const SwFrameFormat *pTextBox, bool &rWrapThrough)
If pTextBox is a textbox, then set rWrapThrough to the surround of its shape.
Represents the visualization of a paragraph.
SwTextFrame * GetFormatted(bool bForceQuickFormat=false)
In case the SwLineLayout was cleared out of the s_pTextCache, recreate it.
sal_Int32 GetLineCount(TextFrameIndex nPos)
Determines the line count.
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!...
sal_uInt16 FirstLineHeight() const
Returns the first line height.
SwTextNode is a paragraph in the document model.
bool getBrowseMode() const
void DisposeAccessibleFrame(const SwFrame *pFrame, bool bRecursive=false)
void InvalidateAccessibleEditableState(bool bAllShells, const SwFrame *pFrame=nullptr)
Invalidate editable state for all accessible frames.
void MoveAccessibleFrame(const SwFrame *pFrame, const SwRect &rOldFrame)
vcl::RenderContext * GetOut() const
const SwViewOption * GetViewOptions() const
SwRootFrame * GetLayout() const
const SwRect & VisArea() const
sal_Int32 GetBrowseWidth() const
bool overlaps(const B1DRange &rRange) const
virtual bool get(DocumentSettingId id) const override
Return the specified document setting.
#define PROTOCOL_ENTER(pFrame, nFunc, nAct, pPar)
struct _xmlTextWriter * xmlTextWriterPtr
virtual SotClipboardFormatId GetFormat(const TransferableDataHelper &aHelper) override
void ClearFEShellTabCols(SwDoc &rDoc, SwTabFrame const *const pFrame)
@ Fixed
Frame cannot be moved in Var-direction.
@ Minimum
Value in Var-direction gives minimum (can be exceeded but not be less).
constexpr TypedWhichId< SvxFrameDirectionItem > RES_FRAMEDIR(126)
constexpr TypedWhichId< SwVirtPageNumInfo > RES_VIRTPAGENUM_INFO(180)
constexpr TypedWhichId< SwFormatRowSplit > RES_ROW_SPLIT(128)
constexpr TypedWhichId< SwFormatFrameSize > RES_FRM_SIZE(89)
constexpr TypedWhichId< SwFormatHoriOrient > RES_HORI_ORIENT(109)
constexpr TypedWhichId< SwFormatVertOrient > RES_VERT_ORIENT(108)
constexpr TypedWhichId< SwFormatLayoutSplit > RES_LAYOUT_SPLIT(119)
constexpr TypedWhichId< SwFormatPageDesc > RES_PAGEDESC(99)
constexpr TypedWhichId< SwAttrSetChg > RES_ATTRSET_CHG(169)
constexpr TypedWhichId< SfxBoolItem > RES_COLLAPSING_BORDERS(131)
constexpr TypedWhichId< SvxProtectItem > RES_PROTECT(106)
constexpr TypedWhichId< SvxBoxItem > RES_BOX(112)
constexpr TypedWhichId< SvxFormatBreakItem > RES_BREAK(100)
constexpr TypedWhichId< SvxULSpaceItem > RES_UL_SPACE(98)
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
const sal_Int32 nCellHeight
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
SwNodeOffset abs(const SwNodeOffset &a)
SwContentNode * GetNode(SwPaM &rPam, bool &rbFirst, SwMoveFnCollection const &fnMove, bool const bInReadOnly, SwRootFrame const *const i_pLayout)
This function returns the next node in direction of search.
std::vector< SwTableBox * > SwTableBoxes
constexpr sal_Int32 COMPLETE_STRING
@ FlyFrameAttributesChanged
@ AdjustSizeWithoutFormatting
static bool lcl_ArrangeLowers(SwLayoutFrame *pLay, tools::Long lYStart, bool bInva)
static void SwInvalidateAll(SwFrame *pFrame, tools::Long nBottom)
tools::Long CalcHeightWithFlys(const SwFrame *pFrame)
void TableSplitRecalcLock(SwFlowFrame *pTab)
static void lcl_ShrinkCellsAndAllContent(SwRowFrame &rRow)
static sal_uInt16 lcl_GetBottomLineDist(const SwRowFrame &rRow)
void FriendHackInvalidateRowFrame(SwFrameAreaDefinition &rRowFrame)
static void SwInvalidatePositions(SwFrame *pFrame, tools::Long nBottom)
static void lcl_RecalcTable(SwTabFrame &rTab, SwLayoutFrame *pFirstRow, SwLayNotify &rNotify)
static SwTwips lcl_CalcTopAndBottomMargin(const SwLayoutFrame &, const SwBorderAttrs &)
static void lcl_InvalidateAllLowersPrt(SwLayoutFrame *pLayFrame)
static SwRowFrame * lcl_InsertNewFollowFlowLine(SwTabFrame &rTab, const SwFrame &rTmpRow, bool bRowSpanLine)
static void InvalidateFramePositions(SwFrame *pFrame)
static void lcl_InvalidateLowerObjs(SwLayoutFrame &_rLayoutFrame, const bool _bMoveObjsOutOfRange=false, SwPageFrame *_pPageFrame=nullptr)
static SwTwips lcl_GetHeightOfRows(const SwFrame *pStart, tools::Long nCount)
static void lcl_MoveRowContent(SwRowFrame &rSourceLine, SwRowFrame &rDestLine)
static sal_uInt16 lcl_GetTopSpace(const SwRowFrame &rRow)
static SwTwips lcl_CalcMinCellHeight(const SwLayoutFrame *_pCell, const bool _bConsiderObjs, const SwBorderAttrs *pAttrs=nullptr)
SwFrame * sw_FormatNextContentForKeep(SwTabFrame *pTabFrame)
static sal_uInt16 lcl_GetBottomLineSize(const SwRowFrame &rRow)
static SwTwips lcl_CalcHeightOfFirstContentLine(const SwRowFrame &rSourceLine)
Local helper function to calculate height of first text row.
static void lcl_AdjustRowSpanCells(SwRowFrame *pRow)
static bool IsNextOnSamePage(SwPageFrame const &rPage, SwTabFrame const &rTabFrame, SwTextFrame const &rAnchorFrame)
static void lcl_PostprocessRowsInCells(SwTabFrame &rTab, SwRowFrame &rLastLine)
static void lcl_MoveFootnotes(SwTabFrame &rSource, SwTabFrame &rDest, SwLayoutFrame &rRowFrame)
static void lcl_RecalcRow(SwRowFrame &rRow, tools::Long nBottom)
static bool lcl_FindSectionsInRow(const SwRowFrame &rRow)
static void lcl_PreprocessRowsInCells(SwTabFrame &rTab, SwRowFrame &rLastLine, SwRowFrame &rFollowFlowLine, SwTwips nRemain)
static SwTwips lcl_CalcMinRowHeight(const SwRowFrame *pRow, const bool _bConsiderObjs)
void TableSplitRecalcUnlock(SwFlowFrame *pTab)
static bool lcl_NoPrev(const SwFrame &rFrame)
static bool lcl_RecalcSplitLine(SwRowFrame &rLastLine, SwRowFrame &rFollowLine, SwTwips nRemainingSpaceForLastRow, SwTwips nAlreadyFree)
static SwTwips lcl_calcHeightOfRowBeforeThisFrame(const SwRowFrame &rRow)
static tools::Long lcl_GetMaximumLayoutRowSpan(const SwRowFrame &rRow)
static bool lcl_InnerCalcLayout(SwFrame *pFrame, tools::Long nBottom, bool _bOnlyRowsAndCells=false)
static sal_uInt16 lcl_GetTopLineDist(const SwRowFrame &rRow)
@ SetIndNextCompletePaint