21#include <osl/diagnose.h>
52#include <unoprnms.hxx>
66 aResult += pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid();
68 aResult += pCnt->
getFrameArea().
Width() - pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid();
72 return pCnt->
getFrameArea().
Top() + pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid();
79 SwFlowFrame(static_cast<
SwFrame&>(*this))
87 const_cast<
SwFrame*>(rPrecede.GetAnchorFrame()), true)
90 rPrecede.SetFollow(
this);
101 if (rHint.
GetId() != SfxHintId::SwLegacyModify)
114 "Illegal change of anchor type.");
145 const bool bNext = !bFound && aOldIdx < aNewIdx;
146 while(pContent && !bFound)
180 std::pair<Point, bool>
const tmp(pOldAnchor->
getFrameArea().
Pos(),
false);
182 OSL_ENSURE(pContent,
"New anchor not found");
187 while(pFlow->IsFollow())
220 std::vector<Point> maObjPositions;
223 explicit SwOszControl(
const SwFlyFrame *pFrame );
226 static bool IsInProgress(
const SwFlyFrame *pFly );
231const SwFlyFrame* SwOszControl::s_pStack1 =
nullptr;
232const SwFlyFrame* SwOszControl::s_pStack2 =
nullptr;
233const SwFlyFrame* SwOszControl::s_pStack3 =
nullptr;
234const SwFlyFrame* SwOszControl::s_pStack4 =
nullptr;
235const SwFlyFrame* SwOszControl::s_pStack5 =
nullptr;
237SwOszControl::SwOszControl(
const SwFlyFrame* pFrame)
240 if (!SwOszControl::s_pStack1)
241 SwOszControl::s_pStack1 = m_pFly;
242 else if (!SwOszControl::s_pStack2)
243 SwOszControl::s_pStack2 = m_pFly;
244 else if (!SwOszControl::s_pStack3)
245 SwOszControl::s_pStack3 = m_pFly;
246 else if (!SwOszControl::s_pStack4)
247 SwOszControl::s_pStack4 = m_pFly;
248 else if (!SwOszControl::s_pStack5)
249 SwOszControl::s_pStack5 = m_pFly;
252SwOszControl::~SwOszControl()
254 if (SwOszControl::s_pStack1 == m_pFly)
255 SwOszControl::s_pStack1 =
nullptr;
256 else if (SwOszControl::s_pStack2 == m_pFly)
257 SwOszControl::s_pStack2 =
nullptr;
258 else if (SwOszControl::s_pStack3 == m_pFly)
259 SwOszControl::s_pStack3 =
nullptr;
260 else if (SwOszControl::s_pStack4 == m_pFly)
261 SwOszControl::s_pStack4 =
nullptr;
262 else if (SwOszControl::s_pStack5 == m_pFly)
263 SwOszControl::s_pStack5 =
nullptr;
265 maObjPositions.clear();
268bool SwOszControl::IsInProgress(
const SwFlyFrame *pFly )
270 if (SwOszControl::s_pStack1 && !pFly->
IsLowerOf(SwOszControl::s_pStack1))
272 if (SwOszControl::s_pStack2 && !pFly->
IsLowerOf(SwOszControl::s_pStack2))
274 if (SwOszControl::s_pStack3 && !pFly->
IsLowerOf(SwOszControl::s_pStack3))
276 if (SwOszControl::s_pStack4 && !pFly->
IsLowerOf(SwOszControl::s_pStack4))
278 if (SwOszControl::s_pStack5 && !pFly->
IsLowerOf(SwOszControl::s_pStack5))
283bool SwOszControl::ChkOsz()
285 bool bOscillationDetected =
false;
287 if ( maObjPositions.size() == 20 )
290 bOscillationDetected =
true;
294 Point aNewObjPos = m_pFly->GetObjRect().Pos();
295 for (
auto const & pt : maObjPositions )
297 if ( aNewObjPos == pt )
300 bOscillationDetected =
true;
304 if ( !bOscillationDetected )
306 maObjPositions.push_back( aNewObjPos );
310 return bOscillationDetected;
358 pFormat->LockModify();
360 if ( aMain.
GetSurround() == css::text::WrapTextMode_NONE )
362 aMain.
SetSurround( css::text::WrapTextMode_THROUGH );
365 pFormat->UnlockModify();
369 SwOszControl aOszCntrl(
this );
375 const bool bFormatAnchor =
388 bool bConsiderWrapInfluenceDueToOverlapPrevCol(
false );
397 bool bConsiderWrapInfluenceDueToMovedFwdAnchor(
false );
403 const bool bPosChgDueToOwnFormat =
409 bConsiderWrapInfluenceDueToOverlapPrevCol =
true;
422 const bool bAnchoredAtMaster(!rAnchPosAnchorFrame.IsFollow());
433 sal_uInt32 nToPageNum( 0 );
434 bool bDummy(
false );
435 bool bPageHasFlysAnchoredBelowThis(
false);
439 bAnchoredAtMaster, nToPageNum, bDummy,
440 bPageHasFlysAnchoredBelowThis) )
442 if (!bPageHasFlysAnchoredBelowThis)
444 bConsiderWrapInfluenceDueToMovedFwdAnchor =
true;
449 bool bInsert(
true );
450 sal_uInt32 nAnchorFrameToPageNum( 0 );
453 rDoc, *pAnchorTextFrame, nAnchorFrameToPageNum ) )
455 if ( nAnchorFrameToPageNum < nToPageNum )
457 if (!bPageHasFlysAnchoredBelowThis)
467 if (!bPageHasFlysAnchoredBelowThis)
478 ( pFooter || bPosChgDueToOwnFormat ) ) )
480 bOsz = aOszCntrl.ChkOsz();
493 if ( aSurround.
GetSurround() == css::text::WrapTextMode_NONE )
495 pFormat->LockModify();
496 aSurround.
SetSurround( css::text::WrapTextMode_THROUGH );
498 pFormat->UnlockModify();
500 OSL_FAIL(
"<SwFlyAtContentFrame::MakeAll()> - special loop prevention for dedicated document of b6403541 applied" );
516 !bConsiderWrapInfluenceDueToOverlapPrevCol &&
518 !bConsiderWrapInfluenceDueToMovedFwdAnchor &&
525 if ( bConsiderWrapInfluenceDueToMovedFwdAnchor &&
532 pCellFrame = pCellFrame->
GetUpper();
540 bConsiderWrapInfluenceDueToMovedFwdAnchor =
false;
566 const bool bLocked = pFormat->IsModifyLocked();
568 pFormat->LockModify();
569 pFormat->SetFormatAttr(aHOri);
570 pFormat->SetFormatAttr(aVOri);
572 pFormat->UnlockModify();
574 if ( bOsz || bConsiderWrapInfluenceDueToOverlapPrevCol ||
576 bConsiderWrapInfluenceDueToMovedFwdAnchor )
592 !SwOszControl::IsInProgress(
this );
606 bool operator<(
const SwDistance& rTwo )
const
608 return m_nMain < rTwo.m_nMain
609 || (m_nMain == rTwo.m_nMain && m_nSub && rTwo.m_nSub && m_nSub < rTwo.m_nSub);
611 bool operator<=(
const SwDistance& rTwo )
const
613 return m_nMain < rTwo.m_nMain
614 || (m_nMain == rTwo.m_nMain
615 && (!m_nSub || !rTwo.m_nSub || m_nSub <= rTwo.m_nSub));
641 const bool bVertL2R = pUp->
IsVertLR();
646 const SwTwips nTopForObjPos = lcl_GetTopForObjPos(pCnt, bVert, bVertL2R);
654 rRet.m_nMain = rPt.X() - nTopForObjPos;
656 rRet.m_nMain = nTopForObjPos - rPt.X();
659 rRet.m_nMain = rPt.Y() - nTopForObjPos;
683 rRet.m_nMain = rPt.X() - nTopForObjPos;
685 rRet.m_nMain = nTopForObjPos - rPt.X();
688 rRet.m_nMain = rPt.Y() - nTopForObjPos;
713 rRet.m_nSub = rRet.m_nMain;
720 if (pSect->IsAnFollow(pNxtSect) && pLay)
786 bSct =
nullptr != pSect;
807 rRet.m_nSub += nPrtHeight;
809 rRet.m_nMain += nPrtHeight;
818 if (pLay && pSect->IsAnFollow(pNxtSect))
889 bSct =
nullptr != pSect;
898 : ( rPt.Y() - nFrameTop );
900 rRet.m_nSub += nDiff;
902 rRet.m_nMain += nDiff;
951 const sal_uInt64 nDiff = (dX * dX) + (dY * dY);
954 if ( nDiff < nDistance )
957 nDistance = nNearest = nDiff;
958 rpCnt = pNearest = pCnt;
961 else if ( nDiff < nNearest )
971 }
while ( pCnt && pLay->
IsAnLower( pCnt ) );
1003 sal_uInt64 nNearest = nDist;
1009 for (
int i = 0; pPge->
GetPrev() && (
i < 3); ++
i )
1017 pRet = pNearest = pNew;
1018 nDist = nNearest = nNew;
1020 else if ( nNew < nNearest )
1034 for (
int j = 0; pPge->
GetNext() && (j < 3); ++j )
1042 pRet = pNearest = pNew;
1043 nDist = nNearest = nNew;
1045 else if ( nNew < nNearest )
1067 if ( rPoint.getX() < aTmp.
Left() )
1068 rPoint.setX(aTmp.
Left());
1069 else if ( rPoint.getX() > aTmp.
Right() )
1070 rPoint.setX(aTmp.
Right());
1071 if ( rPoint.getY() < aTmp.
Top() )
1072 rPoint.setY(aTmp.
Top());
1073 else if ( rPoint.getY() > aTmp.
Bottom() )
1074 rPoint.setY(aTmp.
Bottom());
1084 const bool bBodyOnly )
1107 const bool bBody = pCnt->
IsInDocBody() || bBodyOnly;
1129 GetContentPos( aTmp,
false,
true );
1140 SwDistance nUp, nUpLst;
1142 SwDistance nDown = nUp;
1143 bool bNegAllowed =
true;
1146 pUpLst = pUpFrame; nUpLst = nUp;
1158 while ( pUpFrame && ((nUpLst < nUp && pUpFrame->IsInTab()) ||
1169 if (nUp.m_nMain >= 0 &&
LONG_MAX != nUp.m_nMain)
1171 bNegAllowed =
false;
1172 if (nUpLst.m_nMain < 0)
1174 { pUpLst = pUpFrame;
1178 }
while (pUpFrame && ((bNegAllowed && nUp.m_nMain < 0) || (nUp <= nUpLst)));
1182 SwDistance nDownLst;
1183 if (nDown.m_nMain < 0)
1187 pDownLst = pDownFrame; nDownLst = nDown;
1189 while ( pDownFrame &&
1195 if (nDown.m_nMain < 0)
1208 if (nDown.m_nMain < 0)
1216 }
while (pDownFrame && nDown <= nDownLst && nDown.m_nMain !=
LONG_MAX
1233 return nDownLst < nUpLst ? pDownLst : pUpLst;
1251 const bool bVertL2R = pCnt->
IsVertLR();
1277 const SwFrame *pFrame =
nullptr;
1289 nY -= pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid();
1292 nY = rNew.Y() - pCnt->
getFrameArea().
Top() - pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid();
1298 nY = aDist.m_nMain + aDist.m_nSub;
1303 if ( pCnt->IsFollow() )
1309 while ( pCnt->IsFollow() )
1316 SAL_WARN(
"sw.core",
"very unexpected missing PrevContentFrame");
1338 }
while ( pFollow != pOriginal );
1349 const SwTwips nTopForObjPos = lcl_GetTopForObjPos(pCnt, bVert, bVertL2R);
1353 nY = rNew.X() - nTopForObjPos;
1355 nY = nTopForObjPos - rNew.X();
1359 nY = rNew.Y() - nTopForObjPos;
1406 pos.GetNode().GetTextNode()->GetTextAttrAt(
1408 if (pTextInputField !=
nullptr)
1553 assert(pFly &&
"GetNextFlyLeaf: missing fly frame");
1557 bool bBody = pFlyAnchor && pFlyAnchor->
IsInDocBody();
1564 pLayLeaf = pContent ? pContent->
GetUpper() :
nullptr;
1577 bool bLeftBody = bBody && !pLayLeaf->
IsInDocBody();
1580 if (bLeftBody || bLeftFly)
1583 pOldLayLeaf = pLayLeaf;
1612 pNext->MoveSubTree(pLayLeaf);
1616 while (pFlyAnchor->IsFollow())
1640 assert(pFly &&
"GetPrevFlyLeaf: missing fly frame");
1646 return pFly->GetPrecede();
o3tl::strong_int< sal_Int32, struct Tag_TextFrameIndex > TextFrameIndex
Denotes a character index in a text frame at a layout level, after extent mapping from a text node at...
bool operator<=(const BigInt &rVal1, const BigInt &rVal2)
wrapper class for the positioning of Writer fly frames and drawing objects
void SetTmpConsiderWrapInfluenceOfOtherObjs()
method to apply temporary consideration of wrapping style influence to the anchored objects,...
const SwFrame * GetAnchorFrame() const
bool InvalidationOfPosAllowed() const
method to determine, if invalidation of position is allowed
SwTextFrame * FindAnchorCharFrame()
get frame, which contains the anchor character, if the object is anchored at-character or as-characte...
void ResetLastCharRectHeight()
void SetVertPosOrientFrame(const SwLayoutFrame &_rVertPosOrientFrame)
SwFrame * GetAnchorFrameContainingAnchPos()
determine anchor frame containing the anchor position
void ClearCharRectAndTopOfLine()
reset members <maLastCharRect> and <mnLastTopOfLine>
const SwLayoutFrame * GetVertPosOrientFrame() const
void SetTmpConsiderWrapInfluence(const bool _bTmpConsiderWrapInfluence)
bool OverlapsPrevColumn() const
method to determine, if the anchored object is overlapping with a previous column
bool ConsiderObjWrapInfluenceOnObjPos() const
method to determine, if wrapping style influence of the anchored object has to be considered on the o...
SwPageFrame * GetPageFrame()
bool HasClearedEnvironment() const
method to determine, if due to anchored object size and wrapping style, its layout environment is cle...
const SwRect & GetObjRectWithSpaces() const
method to determine object area inclusive its spacing
bool ConsiderObjWrapInfluenceOfOtherObjs() const
method to determine, if other anchored objects, also attached at to the anchor frame,...
void SetRestartLayoutProcess(const bool _bRestartLayoutProcess)
bool ClearedEnvironment() const
SwContentFrame is the layout for content nodes: a common base class for text (paragraph) and non-text...
SwContentFrame * GetPrevContentFrame() const
const SwContentFrame * GetFollow() const
SwContentFrame * GetNextContentFrame() const
SwTextFrame * FindMaster() const
SwContentFrame * getLayoutFrame(const SwRootFrame *, const SwPosition *pPos=nullptr, std::pair< Point, bool > const *pViewPosAndCalcFrame=nullptr) const
void SetAttr(const SfxPoolItem &, SwFormat &)
Set attribute in given format.1y If Undo is enabled, the old values is added to the Undo history.
IDocumentUndoRedo & GetIDocumentUndoRedo()
virtual bool InvalidationAllowed(const InvalidationType _nInvalid) const override
method to determine, if an invalidation is allowed.
virtual void MakeAll(vcl::RenderContext *pRenderContext) override
|* With a paragraph-anchored fly it's absolutely possible that |* the anchor reacts to changes of the...
const SwFlyAtContentFrame * GetPrecede() const
bool ShouldBwdMoved(SwLayoutFrame *pNewUpper, bool &rReformat) override
virtual void MakeObjPos() override
method to determine position for the object and set the position at the object
SwFlyAtContentFrame(SwFlyFrameFormat *, SwFrame *, SwFrame *pAnchor, bool bFollow=false)
void SetAbsPos(const Point &rNew)
virtual void RegisterAtCorrectPage() override
method to assure that anchored object is registered at the correct page frame
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
const SwFlyAtContentFrame * GetFollow() const
virtual bool IsFormatPossible() const override
method to determine, if a format on the Writer fly frame is possible
virtual void RegisterAtPage(SwPageFrame &) override
general base class for all free-flowing frames
const SwVirtFlyDrawObj * GetVirtDrawObj() const
virtual const SwFlyFrameFormat * GetFormat() const override
static const SwFormatAnchor * GetAnchorFromPoolItem(const SfxPoolItem &rItem)
bool IsFlySplitAllowed() const
Is this fly allowed to split across pages? (Disabled by default.)
bool IsLowerOf(const SwLayoutFrame *pUpper) const
virtual const SwFlyFrame * DynCastFlyFrame() const override
virtual SwFrameFormat & GetFrameFormat() override
virtual void SwClientNotify(const SwModify &rMod, const SfxHint &rHint) override
bool m_bAtCnt
RndStdIds::FLY_AT_PARA, anchored at paragraph or RndStdIds::FLY_AT_CHAR.
bool m_bAutoPosition
RndStdIds::FLY_AT_CHAR, anchored at character.
virtual const IDocumentDrawModelAccess & getIDocumentDrawModelAccess() override
void ChgRelPos(const Point &rAbsPos)
Change the relative position.
virtual void MakeAll(vcl::RenderContext *pRenderContext) override
virtual void NotifyBackground(SwPageFrame *pPage, const SwRect &rRect, PrepareHint eHint) override
Notifies the background (all ContentFrames that currently are overlapping).
virtual bool IsFormatPossible() const override
method to determine, if a format on the Writer fly frame is possible
const SwRect & getFrameArea() const
bool isFrameAreaDefinitionValid() const
bool isFrameAreaPositionValid() const
const SwRect & getFramePrintArea() const
void setFrameAreaPositionValid(bool bNew)
Base class of the Writer layout elements.
bool IsFootnoteContFrame() const
void RemoveFly(SwFlyFrame *pToRemove)
SwTextFrame * DynCastTextFrame()
SwFlyFrame * FindFlyFrame()
SwSectionFrame * FindSctFrame()
SwTabFrame * FindTabFrame()
bool IsColumnFrame() const
InvalidationType
enumeration for the different invalidations #i28701#
virtual bool InvalidationAllowed(const InvalidationType _nInvalid) const
method to determine, if an invalidation is allowed.
SwLayoutFrame * GetNextFlyLeaf(MakePageType eMakePage)
bool IsInFootnote() const
SwPageFrame * InsertPage(SwPageFrame *pSibling, bool bFootnote)
const SwSortedObjs * GetDrawObjs() const
bool IsProtected() const
Is the Frame or rather the Section in which it lies protected?
SwLayoutFrame * GetPrevFlyLeaf()
bool IsRightToLeft() const
void AppendFly(SwFlyFrame *pNew)
const SwRowFrame * IsInFollowFlowRow() const
virtual bool GetModelPositionForViewPoint(SwPosition *, Point &, SwCursorMoveState *=nullptr, bool bTestBackground=false) const
bool IsFooterFrame() const
SwLayoutFrame * GetUpper()
const SwLayoutFrame * GetNextLayoutLeaf() const
SwLayoutFrame * GetLeaf(MakePageType eMakePage, bool bFwd)
void InvalidatePage(const SwPageFrame *pPage=nullptr) const
Invalidates the page in which the Frame is currently placed.
SwRootFrame * getRootFrame()
bool IsNoTextFrame() const
bool IsContentFrame() const
SwPageFrame * FindPageFrame()
SwFrame * FindFooterOrHeader()
static void DestroyFrame(SwFrame *const pFrame)
this is the only way to delete a SwFrame instance
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame.
bool IsAnLower(const SwFrame *) const
const SwContentFrame * ContainsContent() const
Checks if the frame contains one or more ContentFrame's anywhere in his subsidiary structure; if so t...
const SwContentFrame * GetContentPos(Point &rPoint, const bool bDontLeave, const bool bBodyOnly=false, SwCursorMoveState *pCMS=nullptr, const bool bDefaultExpand=true) const
Finds the closest Content for the SPoint Is used for Pages, Flys and Cells if GetModelPositionForView...
const SwFrame * Lower() const
static void InsertMovedFwdFrame(const SwDoc &_rDoc, const SwTextFrame &_rMovedFwdFrameByObjPos, const sal_uInt32 _nToPageNum)
static bool FrameMovedFwdByObjPos(const SwDoc &_rDoc, const SwTextFrame &_rTextFrame, sal_uInt32 &_ornToPageNum)
static void RemoveMovedFwdFrame(const SwDoc &_rDoc, const SwTextFrame &_rTextFrame)
const SwContentNode * GetNode() const
Marks a node in the document model.
SwNodeOffset GetIndex() const
SwContentNode * GetContentNode()
static void FormatAnchorFrameAndItsPrevs(SwTextFrame &_rAnchorTextFrame)
method to format given anchor text frame and its previous frames
static bool CheckMovedFwdCondition(SwAnchoredObject &_rAnchoredObj, SwPageFrame const &rFromPageFrame, const bool _bAnchoredAtMasterBeforeFormatAnchor, sal_uInt32 &_noToPageNum, bool &_boInFollow, bool &o_rbPageHasFlysAnchoredBelowThis)
method to check the conditions, if 'anchor is moved forward'
A page of the document layout.
void AppendFlyToPage(SwFlyFrame *pNew)
void MoveFly(SwFlyFrame *pToMove, SwPageFrame *pDest)
tools::Long GetHeight(const SwRect &rRect) const
tools::Long GetTop(const SwRect &rRect) const
Point GetPos(const SwRect &rRect) 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)
bool Contains(const Point &rPOINT) const
void Left(const tools::Long nLeft)
void Width(tools::Long nNew)
class for collecting anchored objects
SwTabFrame is one table in the document layout, containing rows (which contain cells).
A wrapper around SfxPoolItem to store the start position of (usually) a text portion,...
sal_Int32 GetStart() const
static tools::Rectangle getRelativeTextRectangle(SdrObject *pShape)
Return the textbox rectangle of a draw shape (in relative twips).
static SwFrameFormat * getOtherTextBoxFormat(const SwFrameFormat *pFormat, sal_uInt16 nType, const SdrObject *pObject=nullptr)
If we have an associated TextFrame, then return that.
static void getProperty(SwFrameFormat const *pShape, sal_uInt16 nWID, sal_uInt8 nMemberID, css::uno::Any &rValue)
Get a property of the underlying TextFrame.
Represents the visualization of a paragraph.
SwPosition MapViewToModelPos(TextFrameIndex nIndex) const
SwTextNode * GetTextNodeFirst()
void SplitFrame(TextFrameIndex nTextPos)
Methods to manage the FollowFrame.
virtual void CalcPosition() override
calculate position of object
const SwLayoutFrame & GetVertPosOrientFrame() const
frame, at which the vertical position is oriented at
@ SetOnlyText
stay with the cursor inside text
virtual SotClipboardFormatId GetFormat(const TransferableDataHelper &aHelper) override
const SwContentFrame * FindAnchor(const SwFrame *pOldAnch, const Point &rNew, const bool bBodyOnly)
Searches an anchor for paragraph bound objects starting from pOldAnch.
static void lcl_PointToPrt(Point &rPoint, const SwFrame *pFrame)
static const SwFrame * lcl_CalcDownDist(SwDistance &rRet, const Point &rPt, const SwContentFrame *pCnt)
static sal_uInt64 lcl_FindCntDiff(const Point &rPt, const SwLayoutFrame *pLay, const SwContentFrame *&rpCnt, const bool bBody, const bool bFootnote)
static const SwContentFrame * lcl_FindCnt(const Point &rPt, const SwContentFrame *pCnt, const bool bBody, const bool bFootnote)
constexpr TypedWhichId< SwFlyFrameFormat > RES_FLYFRMFMT(162)
constexpr TypedWhichId< SwFormatField > RES_TXTATR_INPUTFIELD(55)
#define SAL_WARN(area, stream)
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
bool FrameContainsNode(SwContentFrame const &rFrame, SwNodeOffset nNodeIndex)
@ Parent
EXPAND : (Start < nIndex <= End)
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
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.
Marks a position in the document model.
constexpr OUStringLiteral UNO_NAME_FRAME_ISAUTOMATIC_HEIGHT
bool operator<(const wwFont &r1, const wwFont &r2)