39#include <unicode/ubidi.h>
49#define MIN_OFFSET_STEP 10
65 const bool bRightMargin,
const bool bNoScroll =
true )
73 if (nOffset < pFrameAtPos->GetOffset() &&
74 !pFrameAtPos->IsFollow() )
85 while( pFrame != pFrameAtPos )
92 if( nOffset && bRightMargin )
96 pFrameAtPos->IsFollow() )
101 OSL_ENSURE( pFrameAtPos,
"+GetCharRect: no frame with my rightmargin" );
103 return pFrameAtPos ? pFrameAtPos : pFrame;
111 OSL_ENSURE( !pFrame->IsFollow(),
"Illegal Scrolling by Follow!" );
119 ( !pFly && pFrame->
IsInTab() ) )
181 OSL_ENSURE( !
IsVertical() || !
IsSwapped(),
"SwTextFrame::GetCharRect with swapped frame" );
209 ( aRectFnSet.
IsVertL2R() ?
std::min( nFrameMaxY, nUpperMaxY ) : std::max( nFrameMaxY, nUpperMaxY ) ) :
222 if ( aRectFnSet.
IsVert() )
224 if( nFirstOffset > 0 )
226 if ( aPnt1.
X() < nMaxY && !aRectFnSet.
IsVertL2R() )
229 aPnt2.
setY( aPnt1.
Y() );
230 if( aPnt2.
X() < nMaxY )
235 if( nFirstOffset > 0 )
238 if( aPnt1.
Y() > nMaxY )
240 aPnt2.
setX( aPnt1.
X() );
242 if( aPnt2.
Y() > nMaxY )
246 rOrig =
SwRect( aPnt1, aPnt2 );
265 if ( aRectFnSet.
IsVert() )
278 nNextOfst = aLine.
GetEnd();
291 if ( aRectFnSet.
IsVert() )
294 if( pFrame->IsUndersized() && pCMS && !pFrame->
GetNext() &&
295 aRectFnSet.
GetBottom(rOrig) == nUpperMaxY &&
297 !pFrame->IsFollow() && !bNoScroll &&
317 if ( aRectFnSet.
IsVert() )
342 OSL_ENSURE( pPage,
"Text escaped from page?" );
351 if( aRectFnSet.
YDiff( nPageTop, nOrigTop ) > 0 )
352 aRectFnSet.
SetTop( rOrig, nPageTop );
354 if ( aRectFnSet.
YDiff( nOrigTop, nPageBott ) > 0 )
355 aRectFnSet.
SetTop( rOrig, nPageBott );
382 if ( aRectFnSet.
IsVert() )
395 if ( aRectFnSet.
IsVert() )
397 if ( aPnt1.
X() < nMaxY && !aRectFnSet.
IsVertL2R() )
401 aPnt2.
setY( aPnt1.
Y() );
402 if( aPnt2.
X() < nMaxY )
407 if( aPnt1.
Y() > nMaxY )
409 aPnt2.
setX( aPnt1.
X() );
411 if( aPnt2.
Y() > nMaxY )
414 rOrig =
SwRect( aPnt1, aPnt2 );
423 if ( aRectFnSet.
IsVert() )
430 aLine.
GetCharRect( &rOrig, nOffset, &aTmpState, nMaxY );
440 if ( aRectFnSet.
IsVert() )
472 _onTopOfLine = aRectFnSet.
GetPrtTop(*
this);
490 _onTopOfLine = aRectFnSet.
GetTop(aCharRect);
506 _onTopOfLine = aLine.
Y();
507 if ( aRectFnSet.
IsVert() )
519#define FILL_MIN_DIST 1100
560 Point aOldPoint( rPoint );
571 std::unique_ptr<SwFillData> pFillData;
581 if( nDiff > 50 || nDiff < 0 )
621 pFillData->bInner =
true;
622 pFillData->bFirstLine = aLine.
GetLineNr() < 2;
625 pFillData->bEmpty =
false;
631 bool bChgFillData =
false;
648 const sal_Int16 eOrient = pFillData->pCMS->m_pFill->eOrient;
650 if ( text::HoriOrientation::LEFT == eOrient )
651 pFillData->SetOrient( text::HoriOrientation::RIGHT );
652 else if ( text::HoriOrientation::RIGHT == eOrient )
653 pFillData->SetOrient( text::HoriOrientation::LEFT );
656 const_cast<Point&
>(rPoint) = aOldPoint;
745class SwSetToRightMargin
755 void SetRight(
const bool bNew) { m_bRight = bNew; }
761 bool bSetInReadOnly )
const
764 SwSetToRightMargin aSet;
801 bool bPrevLine = ( pPrevLine && pPrevLine != aLine.
GetCurr() );
803 if( !pPrevLine && !bSecondOfDouble &&
GetOffset() && !IsFollow() )
809 if( nFormat > nDiff )
810 nFormat = nFormat - nDiff;
818 if( bPrevLine && !bSecondOfDouble )
821 while ( aLine.
GetStart() == nStart &&
827 if ( bPrevLine || bSecondOfDouble )
829 aCharBox.
Width( aCharBox.
SSize().Width() / 2 );
830 aCharBox.
Pos().setX( aCharBox.
Pos().X() - 150 );
833#if OSL_DEBUG_LEVEL > 0
838 aCharBox.
Pos(),
false );
839#if OSL_DEBUG_LEVEL > 0
841 "SwTextFrame::UnitUp: illegal node change" );
845 if( nTmpOfst >= nStart && nStart && !bSecondOfDouble )
848 aSet.SetRight(
true );
857 aCharBox.
Width( aCharBox.
SSize().Width() / 2 );
876 while( pPrevPrev && ( pPrevPrev->
GetOffset() == nOffs ||
877 ( !bProtectedAllowed && pPrevPrev->
IsProtected() ) ) )
879 pTmpPrev = pPrevPrev;
881 if ( pPrevPrev->IsFollow() )
887 return pTmpPrev->SwContentFrame::UnitUp( pPam, nOffset, bSetInReadOnly );
908 while ( pPor && nIdx + pPor->
GetLen() <=
nPos )
910 nIdx = nIdx + pPor->
GetLen();
921 if ( bRecurse && nIdx ==
nPos )
926 if ( nCursorLevel != nDefaultDir )
943 if ( nCursorLevel != nDefaultDir )
946 nIdx = nIdx - pLast->
GetLen();
956 bool bTmpForward = ! bRight;
957 sal_uInt8 nTmpCursorLevel = nCursorLevel;
959 nTmpCursorLevel, nDefaultDir + 1 );
961 nPos = nTmpPos + nIdx;
962 bRight = bTmpForward;
963 nCursorLevel = nTmpCursorLevel;
970 nCursorLevel = nDefaultDir;
979 if ( bRecurse && nIdx ==
nPos )
982 if ( nCursorLevel == nDefaultDir )
995 if ( nCursorLevel % 2 == nDefaultDir % 2 )
998 nIdx = nIdx - pLast->
GetLen();
1005 if ( nDefaultDir + 2 == nCursorLevel )
1015 bool bTmpForward = ! bRight;
1016 sal_uInt8 nTmpCursorLevel = nCursorLevel;
1018 nTmpCursorLevel, nDefaultDir + 1 );
1024 if ( nTmpPos == pPor->
GetLen() && nTmpCursorLevel == nDefaultDir + 1 )
1026 nTmpPos = nTmpPos - pPor->
GetLen();
1027 nTmpCursorLevel = nDefaultDir;
1028 bTmpForward = ! bTmpForward;
1031 nPos = nTmpPos + nIdx;
1032 bRight = bTmpForward;
1033 nCursorLevel = nTmpCursorLevel;
1040 nCursorLevel = nDefaultDir;
1046 bool& bForward,
bool bInsertCursor )
1074 if ( bInsertCursor )
1082 const bool bVisualRight = ( nDefaultDir == UBIDI_LTR && bForward ) ||
1083 ( nDefaultDir == UBIDI_RTL && ! bForward );
1089 UErrorCode nError = U_ZERO_ERROR;
1090 UBiDi* pBidi = ubidi_openSized( sal_Int32(nLen), 0, &nError );
1091 ubidi_setPara( pBidi,
reinterpret_cast<const UChar *
>(pLineString),
1092 sal_Int32(nLen), nDefaultDir,
nullptr, &nError );
1095 bool bOutOfBounds =
false;
1097 if (
nPos < nStt + nLen )
1109 bOutOfBounds =
true;
1119 bOutOfBounds =
true;
1128 if ( ! bOutOfBounds )
1139 bForward = ! bForward;
1146 ubidi_close( pBidi );
1150 bool bSetInReadOnly )
const
1180 nFormat = aLine.
GetEnd();
1190 if( pNextLine || bFirstOfDouble )
1192 aCharBox.
Width( aCharBox.
SSize().Width() / 2 );
1193#if OSL_DEBUG_LEVEL > 0
1197 if ( pNextLine && ! bFirstOfDouble )
1201 aCharBox.
Pos(), false );
1202#if OSL_DEBUG_LEVEL > 0
1204 "SwTextFrame::UnitDown: illegal node change" );
1208 if( nTmpOfst <= nStart && ! bFirstOfDouble )
1218 if(
nullptr != pTmpFollow )
1234 return pTmp->SwContentFrame::UnitDown( pPam, nOffset, bSetInReadOnly );
1238 aCharBox.
Width( aCharBox.
SSize().Width() / 2 );
1240 else if( !IsFollow() )
1243 if( aLine.
GetEnd() < nTmpLen )
1275 bool bSetInReadOnly )
const
1286 const bool bRet = pFrame->
UnitUp_( pPam, nOffset, bSetInReadOnly );
1294 bool bSetInReadOnly )
const
1298 const bool bRet = pFrame->
UnitDown_( pPam, nOffset, bSetInReadOnly );
1311 sal_uInt16 nNextCol = 0;
1362 std::unique_ptr<SwFont> pFnt;
1366 if( nDiff < nFirst )
1381 pFnt.reset(
new SwFont( pSet, &
GetDoc().getIDocumentSettingAccess() ));
1387 pFnt->CheckFontCacheId( pSh, pFnt->GetActual() );
1393 pFnt->SetFntChg(
true );
1394 pFnt->ChgPhysFnt( pSh, *
pOut );
1396 SwTwips nLineHeight = pFnt->GetHeight( pSh, *
pOut );
1407 nDiff = rFill.
Y() - rFill.
Bottom();
1410 else if( nDist < nFirst )
1411 nFirst = nFirst - nDist;
1415 nDist += nLineHeight;
1421 rFill.
Fill().
nParaCnt = o3tl::narrowing<sal_uInt16>(nDiff + 1);
1425 rFill.
SetOrient( text::HoriOrientation::LEFT );
1439 rRect.
Top( rFill.
Bottom() + (nDiff+1) * nDist - nLineHeight );
1440 if( nFirst && nDiff > -1 )
1441 rRect.
Top( rRect.
Top() + nFirst );
1442 rRect.
Height( nLineHeight );
1446 SwTwips nCenter = ( nLeft + nRight ) / 2;
1447 rRect.
Left( nLeft );
1452 rFill.
SetOrient( text::HoriOrientation::LEFT );
1453 if( rFill.
X() < nCenter )
1455 if( rFill.
X() > ( nLeft + 2 * nCenter ) / 3 )
1457 rFill.
SetOrient( text::HoriOrientation::CENTER );
1458 rRect.
Left( nCenter );
1461 else if( rFill.
X() > ( nRight + 2 * nCenter ) / 3 )
1463 rFill.
SetOrient( text::HoriOrientation::RIGHT );
1464 rRect.
Left( nRight );
1468 rFill.
SetOrient( text::HoriOrientation::CENTER );
1469 rRect.
Left( nCenter );
1481 nSpace = pFnt->GetTextSize_( aDrawInf ).Width()/2;
1483 if( rFill.
X() >= nRight )
1488 rFill.
SetOrient( text::HoriOrientation::RIGHT );
1489 rRect.
Left( nRight );
1497 if( !rFill.
bEmpty || nIndent > nRight )
1501 nIndent -= rFill.
Left();
1502 if( nIndent >= 0 && nSpace )
1506 rFill.
SetTab( sal_uInt16( nIndent ) );
1507 rRect.
Left( nIndent + rFill.
Left() );
1513 else if( rFill.
X() > nLeft )
1520 sal_uInt16 nSpaceCnt = 0;
1521 sal_uInt16 nSpaceOnlyCnt = 0;
1522 sal_uInt16 nTabCnt = 0;
1523 sal_uInt16 nIdx = 0;
1526 nLeftTab = nRightTab;
1527 if( nIdx < rRuler.
Count() )
1529 const SvxTabStop &rTabStop = rRuler.operator[](nIdx);
1530 nRightTab = nTextLeft + rTabStop.
GetTabPos();
1531 if( nLeftTab < nTextLeft && nRightTab > nTextLeft )
1532 nRightTab = nTextLeft;
1542 const SwTwips nDefTabDist = rTab[0].GetTabPos();
1543 nRightTab = nLeftTab - nTextLeft;
1544 nRightTab /= nDefTabDist;
1545 nRightTab = nRightTab * nDefTabDist + nTextLeft;
1546 while ( nRightTab <= nLeftTab )
1547 nRightTab += nDefTabDist;
1550 while ( nRightTab < rFill.
X() )
1552 nRightTab += nDefTabDist;
1556 if( nLeftTab < nRightTab - nDefTabDist )
1557 nLeftTab = nRightTab - nDefTabDist;
1559 if( nRightTab > nRight )
1562 while( rFill.
X() > nRightTab );
1570 while( nLeftTab < rFill.
X() )
1580 if( rFill.
X() - nLeftTab > nRightTab - rFill.
X() )
1584 rRect.
Left( nRightTab );
1588 if( rFill.
X() - nLeftTab > nSpace/2 )
1591 rRect.
Left( nLeftTab + nSpace );
1594 rRect.
Left( nLeftTab );
1597 else if( rFill.
X() - nLeftTab < nRightTab - rFill.
X() )
1598 rRect.
Left( nLeftTab );
1601 if( nRightTab >= nRight )
1603 rFill.
SetOrient( text::HoriOrientation::RIGHT );
1604 rRect.
Left( nRight );
1610 rRect.
Left( nRightTab );
1618 while( nLeftSpace < rFill.
X() )
1620 nLeftSpace += nSpace;
1623 rRect.
Left( nLeftSpace );
1627 if( rFill.
X() - nLeftTab < nRightTab - rFill.
X() )
1628 rRect.
Left( nLeftTab );
1631 if( nRightTab >= nRight )
1633 rFill.
SetOrient( text::HoriOrientation::RIGHT );
1634 rRect.
Left( nRight );
1640 rRect.
Left( nRightTab );
1653 rFill.
SetOrient( text::HoriOrientation::CENTER );
1657 rRect.
Left( nCenter );
1679 if ( aRectFnSet.
IsVert() )
1682 if( aRectFnSet.
YDiff( nLimit, nRectBottom ) < 0 )
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...
virtual OutputDevice * getReferenceDevice(bool bCreate) const =0
Returns the current reference device.
constexpr tools::Long Y() const
void setX(tools::Long nX)
void setY(tools::Long nY)
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long X() const
const SfxPoolItem & GetDefaultItem(sal_uInt16 nWhich) const
void SetParent(const SfxItemSet *pNew)
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
SvxInterLineSpaceRule GetInterLineSpaceRule() const
tools::Long GetRight() const
tools::Long GetLeft(SvxFirstLineIndentItem const &rFirstLine) const
tools::Long GetTextLeft() const
sal_uInt16 GetUpper() const
sal_uInt16 GetLower() const
const SvxFirstLineIndentItem & GetFirstLineIndent(bool=true) const
SwAttrPool * GetPool() const
const SvxTabStopItem & GetTabStops(bool=true) const
const SvxULSpaceItem & GetULSpace(bool=true) const
const SvxTextLeftMarginItem & GetTextLeftMargin(bool=true) const
const SvxLineSpacingItem & GetLineSpacing(bool=true) const
const SvxRightMarginItem & GetRightMargin(bool=true) const
SwContentFrame is the layout for content nodes: a common base class for text (paragraph) and non-text...
virtual bool UnitUp(SwPaM *, const SwTwips nOffset, bool bSetInReadOnly) const
const SwContentFrame * GetFollow() const
virtual bool UnitDown(SwPaM *, const SwTwips nOffset, bool bSetInReadOnly) const
SwTextFrame * FindMaster() const
const SwAttrSet & GetSwAttrSet() const
Does node has already its own auto-attributes? Access to SwAttrSet.
IDocumentDeviceAccess const & getIDocumentDeviceAccess() const
general base class for all free-flowing frames
SwFlyFrame * GetPrevLink() const
SwFlyFrame * GetNextLink() const
To take Asian or other languages into consideration, an SwFont object consists of 3 SwSubFonts (Latin...
const SwRect & getFrameArea() const
bool isFrameAreaDefinitionValid() const
const SwRect & getFramePrintArea() const
Helper class which can be used instead of the macros if a function has too many returns.
Base class of the Writer layout elements.
SwFlyFrame * FindFlyFrame()
const SwSortedObjs * GetDrawObjs() const
bool IsProtected() const
Is the Frame or rather the Section in which it lies protected?
bool IsRightToLeft() const
const SwAttrSet * GetAttrSet() const
WARNING: this may not return correct RES_PAGEDESC/RES_BREAK items for SwTextFrame,...
SwLayoutFrame * GetUpper()
SwRootFrame * getRootFrame()
SwPageFrame * FindPageFrame()
sw::BroadcastingModify * GetDep()
use these so we can grep for SwFrame's GetRegisteredIn accesses beware that SwTextFrame may return sw...
bool IsColBodyFrame() const
These SwFrame inlines are here, so that frame.hxx does not need to include layfrm....
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame.
const SwFrame * Lower() const
Collection of SwLinePortion instances, representing one line of text.
SwLinePortion * GetFirstPortion() const
Base class for anything that can be part of a line in the Writer layout.
SwLinePortion * GetNextPortion() const
TextFrameIndex GetLen() const
bool IsMultiPortion() const
const SwStartNode * StartOfSectionNode() const
PaM is Point and Mark: a selection of the document model.
SwNode & GetPointNode() const
SwNode & GetMarkNode() const
const SwPosition * GetPoint() const
A page of the document layout.
tools::Long GetHeight(const SwRect &rRect) const
tools::Long GetTop(const SwRect &rRect) const
tools::Long YDiff(tools::Long n1, tools::Long n2) const
tools::Long GetPrtTop(const SwFrame &rFrame) const
tools::Long GetBottom(const SwRect &rRect) const
void SetTop(SwRect &rRect, tools::Long nNew) const
void Refresh(const SwFrame *pFrame)
tools::Long GetPrtBottom(const SwFrame &rFrame) const
Of course Writer needs its own rectangles.
void Height(tools::Long nNew)
void Top(const tools::Long nTop)
void Right(const tools::Long nRight)
void Bottom(const tools::Long nBottom)
void Pos(const Point &rNew)
void SSize(const Size &rNew)
void Left(const tools::Long nLeft)
void Width(tools::Long nNew)
SwViewShell * GetCurrShell() const
const SwLineLayout * CharCursorToLine(TextFrameIndex const nPos)
TextFrameIndex GetModelPositionForViewPoint(SwPosition *pPos, const Point &rPoint, bool bChgNode, SwCursorMoveState *=nullptr) const
void GetCharRect(SwRect *, TextFrameIndex, SwCursorMoveState *=nullptr, const tools::Long nMax=0)
void GetEndCharRect(SwRect *, TextFrameIndex, SwCursorMoveState *=nullptr, const tools::Long nMax=0)
static bool IsRightMargin()
static void SetRightMargin(const bool bNew)
Represents the style of a paragraph.
SwTextFormatColl & GetNextTextFormatColl() const
Represents the visualization of a paragraph.
SwTextFrame * GetFormatted(bool bForceQuickFormat=false)
In case the SwLineLayout was cleared out of the s_pTextCache, recreate it.
SwTextFrame * GetFrameAtPos(const SwPosition &rPos)
bool GetModelPositionForViewPoint_(SwPosition *pPos, const Point &rPoint, const bool bChgFrame, SwCursorMoveState *=nullptr) const
void SwitchVerticalToHorizontal(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from vertical to horizontal layout.
void PrepareVisualMove(TextFrameIndex &nPos, sal_uInt8 &nCursorLevel, bool &bRight, bool bInsertCursor)
Prepares the cursor position for a visual cursor move (BiDi).
virtual bool RightMargin(SwPaM *, bool bAPI=false) const override
void SetOffset(TextFrameIndex nNewOfst)
SwTextFrame * GetFollow()
SwPosition MapViewToModelPos(TextFrameIndex nIndex) const
TextFrameIndex GetOffset() const
void SwitchLTRtoRTL(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from LTR to RTL layout.
virtual bool UnitDown(SwPaM *, const SwTwips nOffset, bool bSetInReadOnly) const override
void SwitchRTLtoLTR(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from RTL to LTR layout.
bool GetAutoPos(SwRect &, const SwPosition &) const
A slimmer version of GetCharRect for autopositioning Frames.
bool UnitUp_(SwPaM *, const SwTwips nOffset, bool bSetInReadOnly) const
sw::MergedPara * GetMergedPara()
void SetPara(SwParaPortion *pNew, bool bDelete=true)
bool GetKeyCursorOfst(SwPosition *pPos, const Point &rPoint) const
Makes sure that the Frame is not switched (e.g.
bool GetTopOfLine(SwTwips &_onTopOfLine, const SwPosition &_rPos) const
Determine top of line for given position in the text frame.
void SwitchHorizontalToVertical(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from horizontal to vertical layout.
tools::Long GetLineSpace(const bool _bNoPropLineSpacing=false) const
Returns the additional line spacing for the next paragraph.
TextFrameIndex MapModelToViewPos(SwPosition const &rPos) const
virtual bool LeftMargin(SwPaM *) const override
Layout oriented cursor travelling: Left border, right border, previous Line, following Line,...
bool IsHiddenNow() const
Hidden.
SwTextFrame & GetFrameAtOfst(TextFrameIndex nOfst)
virtual bool GetCharRect(SwRect &rRect, const SwPosition &rPos, SwCursorMoveState *pCMS=nullptr, bool bAllowFarAway=true) const override
Returns the view rectangle for the rPos model position.
friend bool sw_ChangeOffset(SwTextFrame *pFrame, TextFrameIndex nNew)
virtual bool UnitUp(SwPaM *, const SwTwips nOffset, bool bSetInReadOnly) const override
void SwapWidthAndHeight()
Swaps width and height of the text frame.
const OUString & GetText() const
Returns the text portion we want to edit (for inline see underneath)
bool UnitDown_(SwPaM *, const SwTwips nOffset, bool bSetInReadOnly) const
void FillCursorPos(SwFillData &rFill) const
SwTextNode const * GetTextNodeForParaProps() const
virtual bool GetModelPositionForViewPoint(SwPosition *, Point &, SwCursorMoveState *=nullptr, bool bTestBackground=false) const override
In nOffset returns the offset of the char within the set text buffer, which is closest to the positio...
const SwLineLayout * NextLine()
TextFrameIndex GetLength() const
TextFrameIndex GetEnd() const
const SwLineLayout * GetNext() const
TextFrameIndex GetStart() const
const SwLineLayout * PrevLine()
void TwipsToLine(const SwTwips)
const SwLineLayout * GetPrevLine()
SwTwips GetLineHeight() const
const SwLineLayout * GetCurr() const
const SwLineLayout * Prev()
sal_Int32 GetLineNr() const
const SwLineLayout * GetNextLine() const
const SwLineLayout * GetPrev()
sal_uInt16 GetDropLeft() const
sal_uInt16 GetDropLines() const
SwTwips FirstLeft() const
SwTextNode is a paragraph in the document model.
tools::Long GetLeftMarginWithNum(bool bTextLeft=false) const
Returns the additional indents of this text node and its numbering.
bool GetFirstLineOfsWithNum(short &rFirstOffset) const
Returns the combined first line indent of this text node and its numbering.
SwTextFormatColl * GetTextColl() const
bool IsFirstMulti() const
const OUString & GetText() const
bool getBrowseMode() const
bool IsCursorInProtectedArea() const
vcl::RenderContext * GetOut() const
const SwViewOption * GetViewOptions() const
void InvalidateWindows(const SwRect &rRect)
ring_container GetRingContainer()
@ Indent
by left paragraph indentation
@ Tab
default, fill with tabs
@ Margin
only align left, center, right
@ TabSpace
fill with spaces and tabs
@ SetOnlyText
stay with the cursor inside text
@ RightMargin
at right margin
bool sw_ChangeOffset(SwTextFrame *pFrame, TextFrameIndex nNew)
static void lcl_VisualMoveRecursion(const SwLineLayout &rCurrLine, TextFrameIndex nIdx, TextFrameIndex &nPos, bool &bRight, sal_uInt8 &nCursorLevel, sal_uInt8 nDefaultDir)
constexpr TypedWhichId< SvxTabStopItem > RES_PARATR_TABSTOP(68)
WhichRangesContainer const aTextFormatCollSetRange(svl::Items< RES_CHRATR_BEGIN, RES_CHRATR_END-1, RES_PARATR_BEGIN, RES_PARATR_END-1, RES_PARATR_LIST_LEVEL, RES_PARATR_LIST_LEVEL, RES_FRMATR_BEGIN, RES_FRMATR_END-1, RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1, XATTR_FILL_FIRST, XATTR_FILL_LAST >)
tools::Long const nRightMargin
double getLength(const B2DPolygon &rCandidate)
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
SwNodeOffset abs(const SwNodeOffset &a)
SwFillCursorPos * m_pFill
for automatic filling with tabs etc
bool m_bPosCorr
Point had to be corrected.
bool m_b2Lines
Check 2line portions and fill p2Lines.
bool m_bNoScroll
No scrolling of undersized textframes.
bool m_bRealHeight
should the real height be calculated?
std::unique_ptr< Sw2LinesPos > m_p2Lines
for selections inside/around 2line portions
bool m_bFieldInfo
should be fields recognized?
Point m_aRealHeight
contains then the position/height of the cursor
sal_uInt16 nColumnCnt
number of necessary column breaks
SwFillMode eMode
desired fill-up rule
sal_Int16 eOrient
paragraph alignment
sal_uInt16 nSpaceOnlyCnt
number of spaces to insert ("only spaces, no tabs" mode)
SwRect aCursor
position and size of the ShadowCursor
sal_uInt16 nSpaceCnt
number of spaces to insert
sal_uInt16 nTabCnt
number of tabs respectively size of indentation
sal_uInt16 nParaCnt
number of paragraphs to insert
void SetSpace(sal_uInt16 nNew)
void SetSpaceOnly(sal_uInt16 nNew)
const SwCursorMoveState * pCMS
SwFillCursorPos & Fill() const
void SetOrient(const sal_Int16 eNew)
tools::Long Bottom() const
SwFillData(const SwCursorMoveState *pC, SwPosition *pP, const SwRect &rR, const Point &rPt)
void SetTab(sal_uInt16 nNew)
tools::Long Right() const
Marks a position in the document model.
SwNodeOffset GetNodeIndex() const
const sal_Unicode CH_BREAK
constexpr sal_Int32 COMPLETE_STRING