21#include <osl/diagnose.h>
52#include <unoprnms.hxx>
67 aResult += pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid();
69 aResult += pCnt->
getFrameArea().
Width() - pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid();
73 return pCnt->
getFrameArea().
Top() + pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid();
80 SwFlowFrame(static_cast<
SwFrame&>(*this))
88 const_cast<
SwFrame*>(rPrecede.GetAnchorFrame()), true)
91 rPrecede.SetFollow(
this);
102 if (rHint.
GetId() != SfxHintId::SwLegacyModify)
115 "Illegal change of anchor type.");
146 const bool bNext = !bFound && aOldIdx < aNewIdx;
147 while(pContent && !bFound)
181 std::pair<Point, bool>
const tmp(pOldAnchor->
getFrameArea().
Pos(),
false);
183 OSL_ENSURE(pContent,
"New anchor not found");
188 while(pFlow->IsFollow())
221 std::vector<Point> maObjPositions;
224 explicit SwOszControl(
const SwFlyFrame *pFrame );
227 static bool IsInProgress(
const SwFlyFrame *pFly );
232const SwFlyFrame* SwOszControl::s_pStack1 =
nullptr;
233const SwFlyFrame* SwOszControl::s_pStack2 =
nullptr;
234const SwFlyFrame* SwOszControl::s_pStack3 =
nullptr;
235const SwFlyFrame* SwOszControl::s_pStack4 =
nullptr;
236const SwFlyFrame* SwOszControl::s_pStack5 =
nullptr;
238SwOszControl::SwOszControl(
const SwFlyFrame* pFrame)
241 if (!SwOszControl::s_pStack1)
242 SwOszControl::s_pStack1 = m_pFly;
243 else if (!SwOszControl::s_pStack2)
244 SwOszControl::s_pStack2 = m_pFly;
245 else if (!SwOszControl::s_pStack3)
246 SwOszControl::s_pStack3 = m_pFly;
247 else if (!SwOszControl::s_pStack4)
248 SwOszControl::s_pStack4 = m_pFly;
249 else if (!SwOszControl::s_pStack5)
250 SwOszControl::s_pStack5 = m_pFly;
253SwOszControl::~SwOszControl()
255 if (SwOszControl::s_pStack1 == m_pFly)
256 SwOszControl::s_pStack1 =
nullptr;
257 else if (SwOszControl::s_pStack2 == m_pFly)
258 SwOszControl::s_pStack2 =
nullptr;
259 else if (SwOszControl::s_pStack3 == m_pFly)
260 SwOszControl::s_pStack3 =
nullptr;
261 else if (SwOszControl::s_pStack4 == m_pFly)
262 SwOszControl::s_pStack4 =
nullptr;
263 else if (SwOszControl::s_pStack5 == m_pFly)
264 SwOszControl::s_pStack5 =
nullptr;
266 maObjPositions.clear();
269bool SwOszControl::IsInProgress(
const SwFlyFrame *pFly )
271 if (SwOszControl::s_pStack1 && !pFly->
IsLowerOf(SwOszControl::s_pStack1))
273 if (SwOszControl::s_pStack2 && !pFly->
IsLowerOf(SwOszControl::s_pStack2))
275 if (SwOszControl::s_pStack3 && !pFly->
IsLowerOf(SwOszControl::s_pStack3))
277 if (SwOszControl::s_pStack4 && !pFly->
IsLowerOf(SwOszControl::s_pStack4))
279 if (SwOszControl::s_pStack5 && !pFly->
IsLowerOf(SwOszControl::s_pStack5))
284bool SwOszControl::ChkOsz()
286 bool bOscillationDetected =
false;
288 if ( maObjPositions.size() == 20 )
291 bOscillationDetected =
true;
295 Point aNewObjPos = m_pFly->GetObjRect().Pos();
296 for (
auto const & pt : maObjPositions )
298 if ( aNewObjPos == pt )
301 bOscillationDetected =
true;
305 if ( !bOscillationDetected )
307 maObjPositions.push_back( aNewObjPos );
311 return bOscillationDetected;
359 pFormat->LockModify();
361 if ( aMain.
GetSurround() == css::text::WrapTextMode_NONE )
363 aMain.
SetSurround( css::text::WrapTextMode_THROUGH );
366 pFormat->UnlockModify();
370 SwOszControl aOszCntrl(
this );
376 const bool bFormatAnchor =
389 bool bConsiderWrapInfluenceDueToOverlapPrevCol(
false );
398 bool bConsiderWrapInfluenceDueToMovedFwdAnchor(
false );
404 const bool bPosChgDueToOwnFormat =
410 bConsiderWrapInfluenceDueToOverlapPrevCol =
true;
423 const bool bAnchoredAtMaster(!rAnchPosAnchorFrame.IsFollow());
434 sal_uInt32 nToPageNum( 0 );
435 bool bDummy(
false );
436 bool bPageHasFlysAnchoredBelowThis(
false);
440 bAnchoredAtMaster, nToPageNum, bDummy,
441 bPageHasFlysAnchoredBelowThis) )
443 if (!bPageHasFlysAnchoredBelowThis)
445 bConsiderWrapInfluenceDueToMovedFwdAnchor =
true;
450 bool bInsert(
true );
451 sal_uInt32 nAnchorFrameToPageNum( 0 );
454 rDoc, *pAnchorTextFrame, nAnchorFrameToPageNum ) )
456 if ( nAnchorFrameToPageNum < nToPageNum )
458 if (!bPageHasFlysAnchoredBelowThis)
468 if (!bPageHasFlysAnchoredBelowThis)
479 ( pFooter || bPosChgDueToOwnFormat ) ) )
481 bOsz = aOszCntrl.ChkOsz();
494 if ( aSurround.
GetSurround() == css::text::WrapTextMode_NONE )
496 pFormat->LockModify();
497 aSurround.
SetSurround( css::text::WrapTextMode_THROUGH );
499 pFormat->UnlockModify();
501 OSL_FAIL(
"<SwFlyAtContentFrame::MakeAll()> - special loop prevention for dedicated document of b6403541 applied" );
517 !bConsiderWrapInfluenceDueToOverlapPrevCol &&
519 !bConsiderWrapInfluenceDueToMovedFwdAnchor &&
526 if ( bConsiderWrapInfluenceDueToMovedFwdAnchor &&
533 pCellFrame = pCellFrame->
GetUpper();
541 bConsiderWrapInfluenceDueToMovedFwdAnchor =
false;
567 const bool bLocked = pFormat->IsModifyLocked();
569 pFormat->LockModify();
570 pFormat->SetFormatAttr(aHOri);
571 pFormat->SetFormatAttr(aVOri);
573 pFormat->UnlockModify();
575 if ( bOsz || bConsiderWrapInfluenceDueToOverlapPrevCol ||
577 bConsiderWrapInfluenceDueToMovedFwdAnchor )
593 !SwOszControl::IsInProgress(
this );
607 bool operator<(
const SwDistance& rTwo )
const
609 return m_nMain < rTwo.m_nMain
610 || (m_nMain == rTwo.m_nMain && m_nSub && rTwo.m_nSub && m_nSub < rTwo.m_nSub);
612 bool operator<=(
const SwDistance& rTwo )
const
614 return m_nMain < rTwo.m_nMain
615 || (m_nMain == rTwo.m_nMain
616 && (!m_nSub || !rTwo.m_nSub || m_nSub <= rTwo.m_nSub));
642 const bool bVertL2R = pUp->
IsVertLR();
647 const SwTwips nTopForObjPos = lcl_GetTopForObjPos(pCnt, bVert, bVertL2R);
655 rRet.m_nMain = rPt.
X() - nTopForObjPos;
657 rRet.m_nMain = nTopForObjPos - rPt.
X();
660 rRet.m_nMain = rPt.
Y() - nTopForObjPos;
684 rRet.m_nMain = rPt.
X() - nTopForObjPos;
686 rRet.m_nMain = nTopForObjPos - rPt.
X();
689 rRet.m_nMain = rPt.
Y() - nTopForObjPos;
714 rRet.m_nSub = rRet.m_nMain;
721 if (pSect->IsAnFollow(pNxtSect) && pLay)
787 bSct =
nullptr != pSect;
808 rRet.m_nSub += nPrtHeight;
810 rRet.m_nMain += nPrtHeight;
819 if (pLay && pSect->IsAnFollow(pNxtSect))
890 bSct =
nullptr != pSect;
899 : ( rPt.
Y() - nFrameTop );
901 rRet.m_nSub += nDiff;
903 rRet.m_nMain += nDiff;
952 const sal_uInt64 nDiff = (dX * dX) + (dY * dY);
955 if ( nDiff < nDistance )
958 nDistance = nNearest = nDiff;
959 rpCnt = pNearest = pCnt;
962 else if ( nDiff < nNearest )
972 }
while ( pCnt && pLay->
IsAnLower( pCnt ) );
1004 sal_uInt64 nNearest = nDist;
1010 for (
int i = 0; pPge->
GetPrev() && (
i < 3); ++
i )
1018 pRet = pNearest = pNew;
1019 nDist = nNearest = nNew;
1021 else if ( nNew < nNearest )
1035 for (
int j = 0; pPge->
GetNext() && (j < 3); ++j )
1043 pRet = pNearest = pNew;
1044 nDist = nNearest = nNew;
1046 else if ( nNew < nNearest )
1070 else if ( rPoint.
getX() > aTmp.
Right() )
1072 if ( rPoint.
getY() < aTmp.
Top() )
1085 const bool bBodyOnly )
1108 const bool bBody = pCnt->
IsInDocBody() || bBodyOnly;
1130 GetContentPos( aTmp,
false,
true );
1141 SwDistance nUp, nUpLst;
1143 SwDistance nDown = nUp;
1144 bool bNegAllowed =
true;
1147 pUpLst = pUpFrame; nUpLst = nUp;
1159 while ( pUpFrame && ((nUpLst < nUp && pUpFrame->IsInTab()) ||
1170 if (nUp.m_nMain >= 0 &&
LONG_MAX != nUp.m_nMain)
1172 bNegAllowed =
false;
1173 if (nUpLst.m_nMain < 0)
1175 { pUpLst = pUpFrame;
1179 }
while (pUpFrame && ((bNegAllowed && nUp.m_nMain < 0) || (nUp <= nUpLst)));
1183 SwDistance nDownLst;
1184 if (nDown.m_nMain < 0)
1188 pDownLst = pDownFrame; nDownLst = nDown;
1190 while ( pDownFrame &&
1196 if (nDown.m_nMain < 0)
1209 if (nDown.m_nMain < 0)
1217 }
while (pDownFrame && nDown <= nDownLst && nDown.m_nMain !=
LONG_MAX
1234 return nDownLst < nUpLst ? pDownLst : pUpLst;
1252 const bool bVertL2R = pCnt->
IsVertLR();
1278 const SwFrame *pFrame =
nullptr;
1290 nY -= pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid();
1293 nY = rNew.
Y() - pCnt->
getFrameArea().
Top() - pCnt->GetUpperSpaceAmountConsideredForPrevFrameAndPageGrid();
1299 nY = aDist.m_nMain + aDist.m_nSub;
1304 if ( pCnt->IsFollow() )
1310 while ( pCnt->IsFollow() )
1317 SAL_WARN(
"sw.core",
"very unexpected missing PrevContentFrame");
1339 }
while ( pFollow != pOriginal );
1350 const SwTwips nTopForObjPos = lcl_GetTopForObjPos(pCnt, bVert, bVertL2R);
1354 nY = rNew.
X() - nTopForObjPos;
1356 nY = nTopForObjPos - rNew.
X();
1360 nY = rNew.
Y() - nTopForObjPos;
1407 pos.GetNode().GetTextNode()->GetTextAttrAt(
1409 if (pTextInputField !=
nullptr)
1554 assert(pFly &&
"GetNextFlyLeaf: missing fly frame");
1566 if (pAnchorFrame && pAnchorFrame->IsTextFrame())
1568 pFlyAnchor =
static_cast<SwTextFrame*
>(pAnchorFrame);
1572 bool bBody = pFlyAnchor && pFlyAnchor->
IsInDocBody();
1576 if (pFlyAnchorSection)
1586 pLayLeaf = pContent ? pContent->
GetUpper() :
nullptr;
1599 bool bLeftBody = bBody && !pLayLeaf->
IsInDocBody();
1602 bool bSameBody =
false;
1612 if (bLeftBody || bLeftFly || bSameBody)
1615 pOldLayLeaf = pLayLeaf;
1645 pNext->MoveSubTree(pLayLeaf, pLayLeaf->
Lower());
1649 while (pFlyAnchor->IsFollow())
1692 if (
SwFlowFrame* pAnchorPrecede = pAnchor->GetPrecede())
1695 pAnchorPrecede->GetFrame().InvalidateSize();
1739 assert(pFly &&
"GetPrevFlyLeaf: missing fly frame");
1745 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)
constexpr tools::Long Y() const
void setX(tools::Long nX)
void setY(tools::Long nY)
constexpr tools::Long X() const
constexpr tools::Long getX() const
constexpr tools::Long getY() const
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
void InvalidateObjRectWithSpaces() const
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()
Flys that are anchored to content (at-para, at-char) but not in content (as-char).
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
void DelEmpty()
Like Cut(), except that follow chaining is maintained.
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.
const SwBodyFrame * FindBodyFrame() const
bool IsFootnoteContFrame() const
void RemoveFly(SwFlyFrame *pToRemove)
SwTextFrame * DynCastTextFrame()
SwFlyFrame * FindFlyFrame()
SwSectionFrame * FindSctFrame()
SwTabFrame * FindTabFrame()
SwLayoutFrame * GetNextSctLeaf(MakePageType eMakePage)
Returns the next layout sheet where the frame can be moved in.
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)
virtual bool IsDeleteForbidden() const
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)
void DeleteEmptyFlys_()
Destroys the registered FlyFrames.
std::unique_ptr< SwFlyDestroyList > mpFlyDestroy
void InsertEmptyFly(SwFlyFrame *pDel)
Empty SwFlyFrames are registered here for deletion and destroyed later if they are not de-registered ...
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)