44 #include <com/sun/star/i18n/ScriptType.hpp>
57 OSL_ENSURE( rCMS.
m_pSpecialPos,
"Information about special pos missing" );
62 sal_Int32 nFieldIdx = 0;
63 sal_Int32 nFieldLen = 0;
66 const OUString* pString =
nullptr;
74 nFieldLen = pString->getLength();
82 if ( ! pPor->
GetNextPortion() || nFieldIdx + nFieldLen > nCharOfst )
85 nFieldIdx = nFieldIdx + nFieldLen;
91 OSL_ENSURE( nCharOfst >= nFieldIdx,
"Request of position inside field failed" );
92 sal_Int32 nLen = nCharOfst - nFieldIdx + 1;
114 rOrig.
Pos().AdjustX(nX1 );
115 rOrig.
Width( ( nX2 > nX1 ) ?
130 bool IsLabelAlignmentActive(
const SwTextNode& rTextNode )
145 rTextNode.
GetNumRule()->
Get( o3tl::narrowing<sal_uInt16>(nListLevel) );
168 const bool bLabelAlignmentActive = IsLabelAlignmentActive( *pTextNode );
170 const bool bListLevelIndentsApplicableAndLabelAlignmentActive = bListLevelIndentsApplicable && bLabelAlignmentActive;
194 ( bListLevelIndentsApplicableAndLabelAlignmentActive
202 if ( bListLevelIndentsApplicableAndLabelAlignmentActive ||
212 ( bListLevelIndentsApplicableAndLabelAlignmentActive
231 ( !nLMWithNum && (!bLabelAlignmentActive || bListLevelIndentsApplicable) ) ) )
262 case SvxLineSpaceRule::Auto:
264 case SvxLineSpaceRule::Min:
270 case SvxLineSpaceRule::Fix:
273 default: OSL_FAIL(
": unknown LineSpaceRule" );
277 case SvxInterLineSpaceRule::Off:
279 case SvxInterLineSpaceRule::Prop:
285 nTmp = nTmp ? 50 : 100;
287 nTmp *= nFirstLineOfs;
291 nFirstLineOfs = nTmp;
294 case SvxInterLineSpaceRule::Fix:
299 default: OSL_FAIL(
": unknown InterLineSpaceRule" );
305 nFirstLineOfs = nFLOfst;
310 bListLevelIndentsApplicableAndLabelAlignmentActive ||
313 if ( nFirstLineOfs < 0 && m_pFrame->IsInTab() &&
316 !bListLevelIndentsApplicableAndLabelAlignmentActive )
328 std::max( rSpace.
GetTextLeft() + nLMWithNum+ nFirstLineOfs,
349 else if ( SvxAdjust::Right ==
mnAdjust )
391 else if(
GetAdjust() == SvxAdjust::Center )
436 SwTwips nTmpHeight, nTmpAscent;
438 sal_uInt16 nPorHeight = nTmpHeight;
439 sal_uInt16 nPorAscent = nTmpAscent;
444 nX = nX + pPor->
Width();
449 nPorHeight = pPor->
Height();
455 const Size aCharSize( 1, nTmpHeight );
457 pOrig->
SSize( aCharSize );
458 pOrig->
Pos().AdjustX(nLast );
460 if( pOrig->
Left() > nTmpRight )
461 pOrig->
Pos().setX( nTmpRight );
465 if ( nTmpAscent > nPorAscent )
469 OSL_ENSURE( nPorHeight,
"GetCharRect: Missing Portion-Height" );
487 SwTwips nTmpAscent, nTmpHeight;
489 const Size aCharSize( 1, nTmpHeight );
490 const Point aCharPos;
491 pOrig->
Pos( aCharPos );
492 pOrig->
SSize( aCharSize );
497 const bool bInsideFirstField = pCMS && pCMS->
m_pSpecialPos &&
513 SwTwips nPorHeight = nTmpHeight;
514 SwTwips nPorAscent = nTmpAscent;
522 sal_uInt16 nSpaceIdx = 0;
533 while( pPor && !pPor->
GetLen() && ! bInsideFirstField )
551 if ( ++nSpaceIdx < m_pCurr->GetLLSpaceAddCount() )
557 if( pKanaComp && ( nKanaIdx + 1 ) < pKanaComp->size() )
569 if ( ++nSpaceIdx < m_pCurr->GetLLSpaceAddCount() )
575 if( pKanaComp && ( nKanaIdx + 1 ) < pKanaComp->size() )
592 nPorHeight = pPor->
Height();
601 nPorHeight = pPor->
Height();
626 if ( ++nSpaceIdx < m_pCurr->GetLLSpaceAddCount() )
633 ( nKanaIdx + 1 ) < pKanaComp->size()
643 if ( static_cast<SwMultiPortion*>(pPor)->HasTabulator() )
647 if ( ++nSpaceIdx < m_pCurr->GetLLSpaceAddCount() )
653 if( pKanaComp && ( nKanaIdx + 1 ) < pKanaComp->size() )
661 if ( static_cast<SwMultiPortion*>(pPor)->IsBidi() &&
665 nLastBidiIdx = aInf.
GetIdx();
666 nLastBidiPorWidth = pLastBidiPor->
Width() +
680 pOrig->
Pos().AdjustY(nTmpAscent - nPorAscent );
691 if( static_cast<SwMultiPortion*>(pPor)->HasRotation() )
693 if( static_cast<SwMultiPortion*>(pPor)->IsRevers() )
698 else if( static_cast<SwMultiPortion*>(pPor)->IsDouble() )
700 else if( static_cast<SwMultiPortion*>(pPor)->IsBidi() )
727 if( static_cast<SwMultiPortion*>(pPor)->IsDouble() )
733 const sal_uInt16 nRubyHeight = bHasGrid ?
744 static_cast<SwMultiPortion*>(pPor)->IsRuby() &&
746 nOffset = nRubyHeight;
750 pOrig->
Pos().AdjustY(nOffset );
755 ChgSpaceAdd(
m_pCurr, nSpaceAdd );
764 const bool bChgHeight =
775 if ( static_cast<SwMultiPortion*>(pPor)->IsBidi() )
777 aLayoutModeModifier.
Modify(
778 static_cast<SwBidiPortion*>(pPor)->GetLevel() % 2 );
792 if ( static_cast<SwMultiPortion*>(pPor)->IsDouble() )
798 if (
m_pCurr == &static_cast<SwMultiPortion*>(pPor)->GetRoot() )
811 else if( static_cast<SwMultiPortion*>(pPor)->IsRuby() ||
812 static_cast<SwMultiPortion*>(pPor)->IsBidi() )
816 if( static_cast<SwMultiPortion*>(pPor)->HasRotation() )
822 nTmp = pOrig->
Left() - aOldPos.X();
830 pOrig->
Pos().setX( nX + aOldPos.X() );
831 if( static_cast<SwMultiPortion*>(pPor)->IsRevers() )
832 pOrig->
Pos().setY( aOldPos.Y() + nTmp );
834 pOrig->
Pos().setY( aOldPos.Y()
841 if( static_cast<SwMultiPortion*>(pPor)->IsRevers() )
861 pOrig->
Pos().AdjustY(aOldPos.Y() );
862 if ( static_cast<SwMultiPortion*>(pPor)->IsBidi() )
867 pOrig->
Pos().setX( nX + nPorWidth -
868 nInsideOfst - pOrig->
Width() );
871 pOrig->
Pos().AdjustX(nX );
873 if( static_cast<SwMultiPortion*>(pPor)->HasBrackets() )
874 pOrig->
Pos().AdjustX(
875 static_cast<SwDoubleLinePortion*>(pPor)->PreWidth() );
896 const bool bOldOnWin = aInf.
OnWin();
914 pOrig->
Width( nTmp - nX );
929 while( pCurrPart && (nSumLength += pCurrPart->
GetLen()) < nOfst - aInf.
GetIdx() )
933 if( pCurrPart && nSumLength != nOfst - aInf.
GetIdx() &&
953 OSL_ENSURE( !pPor->
InNumberGrp() || bInsideFirstField,
"Number surprise" );
954 bool bEmptyField =
false;
960 sal_uInt16 nAddX = pTmp->
Width();
964 OSL_ENSURE( !pNext->
GetLen(),
"Where's my field follow?" );
965 nAddX = nAddX + pNext->
Width();
971 nPorHeight = pTmp->
Height();
978 while( pPor && !pPor->
GetLen() && ! bInsideFirstField &&
992 if ( ++nSpaceIdx < m_pCurr->GetLLSpaceAddCount() )
998 if( pKanaComp && ( nKanaIdx + 1 ) < pKanaComp->size() )
1010 if ( ++nSpaceIdx < m_pCurr->GetLLSpaceAddCount() )
1016 if( pKanaComp && ( nKanaIdx + 1 ) < pKanaComp->size() )
1021 nPorHeight = pPor->
Height();
1034 while( pPor && !pPor->
GetLen() )
1036 nX += pPor->
Width();
1039 nPorHeight = pPor->
Height();
1055 nPorAscent = pPor->
Height();
1056 nPorHeight = nPorAscent;
1057 pOrig->
Height( nPorHeight +
1059 if( nTmpHeight < pOrig->
Height() )
1061 nTmpAscent = nPorAscent;
1062 nTmpHeight = sal_uInt16( pOrig->
Height() );
1071 nPorHeight = pPor->
Height();
1077 nTmp = pPor->
Width();
1083 const bool bOldOnWin = aInf.
OnWin();
1097 pOrig->
Width( nTmp );
1128 pOrig->
Pos().AdjustX( -nLastBidiPorWidth );
1140 OSL_ENSURE( static_cast<const SwMultiPortion*>(pLast)->IsBidi(),
1141 "Non-BidiPortion inside BidiPortion" );
1144 aInf.
SetIdx(nLastBidiIdx);
1145 pOrig->
Pos().AdjustX(pLast->
Width() +
1159 pOrig->
Pos().AdjustX(pPor->
Width() +
1165 pOrig->
Pos().AdjustX(nX );
1170 if ( nTmpAscent > nPorAscent )
1174 OSL_ENSURE( nPorHeight,
"GetCharRect: Missing Portion-Height" );
1175 if ( nTmpHeight > nPorHeight )
1198 "LineOffset AND Number Portion?" );
1220 pOrig->
Pos().AdjustX(aCharPos.X() );
1221 pOrig->
Pos().AdjustY(aCharPos.Y() );
1225 pCMS->
m_p2Lines->aLine.Pos().AdjustX(aCharPos.X() );
1226 pCMS->
m_p2Lines->aLine.Pos().AdjustY(aCharPos.Y() );
1227 pCMS->
m_p2Lines->aPortion.Pos().AdjustX(aCharPos.X() );
1228 pCMS->
m_p2Lines->aPortion.Pos().AdjustY(aCharPos.Y() );
1235 if( pOrig->
Left() > nTmpRight && !bTabOverMargin)
1236 pOrig->
Pos().setX( nTmpRight );
1240 if( pOrig->
Top() + pOrig->
Height() > nMax )
1242 if( pOrig->
Top() > nMax )
1266 pOrig->
Pos().AdjustX( -(nOut + 10) );
1316 if( nRightMargin == nLeftMargin )
1319 const bool bLeftOver = x < nLeftMargin;
1322 const bool bRightOver = x > nRightMargin;
1337 bool bHolePortion =
false;
1338 bool bLastHyph =
false;
1342 sal_uInt16 nSpaceIdx = 0;
1343 size_t nKanaIdx = 0;
1345 short nKanaComp = pKanaComp ? (*pKanaComp)[0] : 0;
1364 if ( ++nSpaceIdx < m_pCurr->GetLLSpaceAddCount() )
1372 if ( nKanaIdx + 1 < pKanaComp->size() )
1373 nKanaComp = (*pKanaComp)[++nKanaIdx];
1391 nCurrStart = nCurrStart + pPor->
GetLen();
1394 nWidth = pPor->
Width();
1409 if ( ++nSpaceIdx < m_pCurr->GetLLSpaceAddCount() )
1417 if( nKanaIdx + 1 < pKanaComp->size() )
1418 nKanaComp = (*pKanaComp)[++nKanaIdx];
1442 nCurrStart = nCurrStart + pPor->
GetLen();
1456 if( bFieldInfo && ( nWidth30 < nX || bRightOver || bLeftOver ||
1478 if (!bRightOver && nX)
1493 if( bHolePortion || ( !bRightAllowed && bLastHyph ) ||
1506 sal_uInt16 nHeight = pPor->
Height();
1507 if ( !nHeight || nHeight > nWidth )
1509 if( bChgNode && nWidth - nHeight/2 > nX )
1528 sal_uInt16 nHeight = 0;
1531 nHeight = pPor->
Height();
1532 if ( !nHeight || nHeight > nWidth )
1536 if( nWidth - nHeight/2 <= nX &&
1553 && ( nWidth/2 < nX ) &&
1557 && ( bRightAllowed || !bLastHyph ))
1569 if (pPostItsPortion)
1574 nCurrStart += pPor->
GetLen();
1581 if( bRightOver && !static_cast<SwFieldPortion*>(pPor)->HasFollow() )
1592 && rText[sal_Int32(nCurrStart + nLength) - 1] ==
' ' )
1605 if ( ( static_cast<SwTextSizeInfo*>(
m_pInf)->IsMulti() &&
1606 static_cast<SwTextSizeInfo*>(
m_pInf)->IsFirstMulti() ) ||
1607 ( static_cast<SwMultiPortion*>(pPor)->IsRuby() &&
1608 static_cast<SwMultiPortion*>(pPor)->OnTop() ) )
1614 if ( static_cast<SwMultiPortion*>(pPor)->IsRuby() &&
1618 SwTextCursorSave aSave( const_cast<SwTextCursor*>(
this), static_cast<SwMultiPortion*>(pPor),
1619 nTmpY, nX, nCurrStart, nSpaceAdd );
1622 if ( static_cast<SwMultiPortion*>(pPor)->IsBidi() )
1625 aLayoutModeModifier.
Modify( nBidiLevel % 2 );
1628 if( static_cast<SwMultiPortion*>(pPor)->HasRotation() )
1631 if( !static_cast<SwMultiPortion*>(pPor)->IsRevers() )
1632 nTmpY = pPor->
Height() - nTmpY;
1635 nX = o3tl::narrowing<sal_uInt16>(nTmpY);
1638 if( static_cast<SwMultiPortion*>(pPor)->HasBrackets() )
1641 if ( nX > nPreWidth )
1642 nX = nX - nPreWidth;
1663 SwTextSlot aDiffText( &aSizeInf, static_cast<SwTextPortion*>(pPor),
false,
false );
1668 OSL_ENSURE( pPara,
"No paragraph!" );
1676 &pPara->GetScriptInfo(),
1686 sal_uInt16 nSumWidth = 0;
1687 sal_uInt16 nSumBorderWidth = 0;
1689 while (pCurrPart && nSumWidth <= nX - sal_Int32(nCurrStart))
1691 nSumWidth += pCurrPart->
GetWidth();
1703 nX = std::max(static_cast<SwTwips>(0), nX - nSumBorderWidth);
1708 nX = std::max(static_cast<SwTwips>(0), nX -
GetInfo().
GetFont()->GetLeftBorderSpace());
1711 aDrawInf.SetOffset( nX );
1718 aDrawInf.SetNumberOfBlanks( pPor->
InTextGrp() ?
1719 static_cast<const SwTextPortion*
>(pPor)->GetSpaceCnt( aSizeInf, nCharCnt ) :
1726 aDrawInf.SetSpace( nSpaceAdd );
1727 aDrawInf.SetFont( aSizeInf.
GetFont() );
1729 aDrawInf.SetSnapToGrid( aSizeInf.
SnapToGrid() );
1733 pPara->GetScriptInfo().CountCompChg() &&
1735 aDrawInf.SetKanaComp( nKanaComp );
1749 aDrawInf.GetCursorBidiLevel();
1751 if( bFieldInfo && nLength == pPor->
GetLen() &&
1757 const_cast<SwFont*
>(
GetFnt())->SetProportion( nOldProp );
1762 if(bChgNode && pPos && (pFlyPor = dynamic_cast<sw::FlyContentPortion*>(pPor)))
1771 bool bChgNodeInner = pLower
1773 Point aTmpPoint( rPoint );
1799 nOffset = nCurrStart + nLength;
1837 SwRect aRect( aTmpFrame );
1850 SwTextInfo aInf( const_cast<SwTextFrame*>(
this) );
1851 SwTextIter aLine( const_cast<SwTextFrame*>(
this), &aInf );
1860 while( nY < nTop && aLine.
Next() )
1865 bool bLastLine =
false;
1866 if( nY < nTop && !aLine.
GetNext() )
1881 if( aRectFnSet.
IsVert() )
1883 aPoint.setX( nLastY );
1884 aPoint.setY( nLeft );
1888 aPoint.setX( nLeft );
1889 aPoint.setY( nLastY );
1896 if( aRectFnSet.
IsVert() )
1898 aPoint.setX( nLastY );
1899 aPoint.setY( nRight );
1903 aPoint.setX( nRight );
1904 aPoint.setY( nLastY );
1924 else if( !bLastLine )
1932 }
while( nLastY < nBottom );
TextFrameIndex GetModelPositionForViewPoint(SwPosition *pPos, const Point &rPoint, bool bChgNode, SwCursorMoveState *=nullptr) const
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
virtual void Height(const SwTwips nNew, const bool bText=true) override
void CtorInitTextIter(SwTextFrame *pFrame, SwTextInfo *pInf)
std::deque< sal_uInt16 > * GetpKanaComp() const
Base class of the Writer layout elements.
virtual const SwFlyFrame * DynCastFlyFrame() const override
Represents the visualization of a paragraph.
const SvxLRSpaceItem & GetLRSpace(bool=true) const
tools::Long GetRight(const SwRect &rRect) const
sal_uInt16 GetLeftBorderSpace() const
SwFontScript WhichFont(TextFrameIndex nIdx) const
bool m_bFieldInfo
should be fields recognized?
void Right(const tools::Long nRight)
const SwSortedObjs * GetDrawObjs() const
sal_uInt16 GetPropLineSpace() const
virtual bool FillSelection(SwSelectionList &rList, const SwRect &rRect) const override
Looks for text portions which are inside the given rectangle.
Marks a position in the document model.
sal_uInt16 GetDropDescent() const
sal_uInt16 GetLines() const
SvxAdjust GetAdjust() const
LanguageType GetLangOfChar(TextFrameIndex nIndex, sal_uInt16 nScript, bool bNoChar=false) const
bool m_bRealHeight
should the real height be calculated?
sal_uInt16 GetDropLeft() const
TextFrameIndex GetStart() const
void Left(const tools::Long nLeft)
virtual tools::Long CalcSpacing(tools::Long nSpaceAdd, const SwTextSizeInfo &rInf) const
bool IsTextPortion() const
sal_uInt8 GetPropr() const
bool GetJoinBorderWithPrev() const
tools::Long const nLeftMargin
void SwitchHorizontalToVertical(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from horizontal to vertical layout...
sal_uInt16 GetRightBorderSpace() const
bool GetFirstLineOfsWithNum(short &rFirstOffset) const
Returns the combined first line indent of this text node and its numbering.
tools::Long GetLeftMarginForTabCalculation() const
return left margin for tab stop position calculation
void SetPropFont(const sal_uInt8 nNew)
SwTwips GetHangingMargin() const
const SwRect & getFramePrintArea() const
void SetOnWin(const bool bNew)
sal_uInt8 m_nCursorBidiLevel
bool m_bRealWidth
Calculation of the width required.
tools::Long GetLen(const Point &rPnt)
sal_uInt16 GetDropHeight() const
constexpr sal_uInt8 MAXLEVEL
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...
void SetLen(TextFrameIndex const nLen)
bool SeekAndChg(SwTextSizeInfo &rInf)
SwDropPortionPart * GetPart() const
This class is used as parameter for creation of a block cursor selection.
const SwLineLayout * Next()
void Pos(const Point &rNew)
bool AreListLevelIndentsApplicable() const
Determines, if the list level indent attributes can be applied to the paragraph.
const Size & GetSize(SwFontScript nWhich) const
bool checkContext(const SwFrame *pCheck)
Checks if the context of the list is equal to the context of the frame.
void SetKanaComp(std::deque< sal_uInt16 > *pNew)
void SetMulti(const bool bNew)
Of course Writer needs its own rectangles.
Collection of SwLineLayout instances, represents the paragraph text in Writer layout.
int GetActualListLevel() const
Returns the actual list level of this text node, when it is a list item.
tools::Long GetLLSpaceAdd(sal_uInt16 nIdx)
const SvxLineSpacingItem * GetLineSpacing() const
SvxAdjust GetOneWord() const
bool Seek(TextFrameIndex nPos)
Enables the attributes used at char pos nPos in the logical font.
SvxLineSpaceRule GetLineSpaceRule() const
void GetCharRect_(SwRect *, TextFrameIndex, SwCursorMoveState *)
SwFlyInContentFrame * GetFlyFrame()
tools::Long GetTop(const SwRect &rRect) const
bool IsMarginPortion() const
SwRect GetPaintArea() const
|* The paintarea is the area, in which the content of a frame is allowed |* to be displayed...
Text portion for the Format -> Paragraph -> Drop Caps functionality.
bool InToxRefOrFieldGrp() const
wrapper class for the positioning of Writer fly frames and drawing objects
void GetFlyCursorOfst(Point &rPoint, SwPosition &rPos, SwCursorMoveState *pCMS) const
sal_uInt16 GetLineHeight() const
bool IsBreakPortion() const
const SwRect & getFrameArea() const
int m_nInNumPortionOffset
distance from number portion's start
SwRect & Intersection(const SwRect &rRect)
void SetKanaIdx(sal_uInt16 nNew)
void Width(tools::Long nNew)
static bool ConsiderNextPortionForCursorOffset(const SwLinePortion *pPor, SwTwips nWidth30, sal_uInt16 nX)
Determines if SwTextCursor::GetModelPositionForViewPoint() should consider the next portion when calc...
tools::Long GetLeft(const SwRect &rRect) const
static bool s_bRightMargin
bool IsFlyInContentFrame() const
void insertPaM(SwPaM *pPam)
Adds a text portion to the selection list.
SwFontScript GetActual() const
SwTextFrame * GetFollow()
bool InFixMargGrp() const
TextFrameIndex GetOffset() const
const std::optional< editeng::SvxBorderLine > & GetRightBorder() const
This portion represents a part of the paragraph string.
SwNode & GetEndOfContent() const
Regular ContentSection (i.e. the BodyText).
SwTwips CurrWidth() const
PaM is Point and Mark: a selection of the document model.
const OUString & GetExp() const
SwTextNode const * GetTextNodeForParaProps() const
sal_uInt8 GetLevel() const
tools::Long GetTextLeft() const
bool IsFootnoteNumPortion() const
UNDERLYING_TYPE get() const
virtual TextFrameIndex GetModelPositionForViewPoint(sal_uInt16 nOfst) const
the parameter is actually SwTwips apparently?
sal_uInt16 GetDropDescent() const
SwTwips GetLineStart() const
Collection of SwLinePortion instances, representing one line of text.
SwTwips GetRealHeight() const
const SwLineInfo & GetLineInfo() const
void PrtWidth(SwTwips nNewWidth)
vcl::RenderContext * GetOut()
static void ResetSpaceAdd(SwLineLayout *pCurr)
void SetFont(SwFont *pNew)
SwParaPortion * GetParaPortion()
bool IsFlyPortion() const
SwTextGridItem const * GetGridItem(SwPageFrame const *const)
SwLinePortion * GetFirstPortion() const
bool IsKernPortion() const
tools::Long GetLeft() const
SvxAdjust GetLastBlock() const
const SvxAdjustItem & GetAdjust(bool=true) const
void CtorInitTextMargin(SwTextFrame *pFrame, SwTextSizeInfo *pInf)
SwTwips GetLeftMargin() const
SwNumRule * GetNumRule(bool bInParent=true) const
Returns numbering rule of this text node.
const SwLineLayout * GetPrev()
Provides access to settings of a document.
SvxInterLineSpaceRule GetInterLineSpaceRule() const
const std::optional< editeng::SvxBorderLine > & GetLeftBorder() const
void Modify(bool bChgToRTL)
TextFrameIndex GetIdx() const
const IDocumentSettingAccess * getIDocumentSettingAccess() const
Provides access to the document setting interface.
bool IsDropPortion() const
tools::Long GetLeftMarginWithNum(bool bTextLeft=false) const
Returns the additional indents of this text node and its numbering.
bool m_bInFrontOfLabel
cursor in front of label
void SSize(const Size &rNew)
Point m_aRealHeight
contains then the position/height of the cursor
vcl::Font GetFont(vcl::Font const &rFont, DrawModeFlags nDrawMode, StyleSettings const &rStyleSettings)
SwTwips GetLineEnd() const
TextFrameIndex GetLen() const
bool m_b2Lines
Check 2line portions and fill p2Lines.
const OUString & GetText() const
short GetInterLineSpace() const
std::unique_ptr< Sw2LinesPos > m_p2Lines
for selections inside/around 2line portions
bool Contains(const Point &rPOINT) const
bool IsHolePortion() const
sal_uInt16 GetWidth() const
void GetEndCharRect(SwRect *, TextFrameIndex, SwCursorMoveState *=nullptr, const tools::Long nMax=0)
bool IsMultiPortion() const
bool m_bFootnoteNoInfo
recognized footnote numbering
void SwitchLTRtoRTL(SwRect &rRect) const
Calculates the coordinates of a rectangle when switching from LTR to RTL layout.
Base class for anything that can be part of a line in the Writer layout.
const SwNumFormat & Get(sal_uInt16 i) const
bool m_bInNumPortion
point is in number portion #i23726#
void CtorInitTextCursor(SwTextFrame *pFrame, SwTextSizeInfo *pInf)
bool IsLayoutFrame() const
HFONT SelectFont(HDC hDC, HFONT hFont)
void CalcAscentAndHeight(SwTwips &rAscent, SwTwips &rHeight) const
SwTextNode is a paragraph in the document model.
void SetLen(const TextFrameIndex nNew)
TextFrameIndex GetLen() const
For the text replacement and restoration of SwTextSizeInfo.
general base class for all free-flowing frames
void SetFirstMulti(const bool bNew)
#define SAL_WARN_IF(condition, area, stream)
constexpr tools::Long Height() const
sal_uInt8 GetPropFont() const
const SwNodes & GetNodes() const
bool GetJoinBorderWithNext() const
SwLinePortion * FindLastPortion()
bool IsNoTextFrame() const
void GetCharRect(SwRect *, TextFrameIndex, SwCursorMoveState *=nullptr, const tools::Long nMax=0)
if(aStr!=aBuf) UpdateName_Impl(m_xFollowLb.get()
void SetActual(SwFontScript nNew)
IDocumentSettingAccess const & getIDocumentSettingAccess() const
SvxAdjust GetAdjust() const
SwTextSizeInfo & GetInfo()
SwTwips GetAdditionalFirstLineOffset() const
bool IsRightToLeft() const
virtual SwPosSize GetTextSize(const SwTextSizeInfo &rInfo) const
TextFrameIndex GetModelPositionForViewPoint_(SwDrawTextInfo &rInf)
void Top(const tools::Long nTop)
virtual tools::Long CalcSpacing(tools::Long nSpaceAdd, const SwTextSizeInfo &rInf) const override
SwSpecialPos * m_pSpecialPos
for positions inside fields
tools::Long const nRightMargin
const SwLineLayout * PrevLine()
double getLength(const B2DPolygon &rCandidate)
SwSPExtendRange
SwSpecialPos.
void SetRealHeight(SwTwips nNew)
virtual bool get(DocumentSettingId id) const =0
Return the specified document setting.
const SwAttrSet & GetSwAttrSet() const
Does node has already its own auto-attributes? Access to SwAttrSet.
bool m_bPosMatchesBounds
GetModelPositionForViewPoint should not return the next position if screen position is inside second ...
bool m_bPosCorr
Point had to be corrected.
const SwDropPortion * FindDropPortion() const
constexpr sal_Int32 COMPLETE_STRING
const SwLineLayout * GetNext() const
sal_uInt16 GetLineWidth() const
const SwLineLayout * GetCurr() const
tools::Long GetBottom(const SwRect &rRect) const
SwDropPortionPart * GetFollow() const
SwSPExtendRange nExtendRange
const SwLineLayout * CharCursorToLine(TextFrameIndex const nPos)
SwTextFrame * GetTextFrame()
SwTwips GetLineHeight() const
TextFrameIndex GetEnd() const
void SetProportion(const sal_uInt8 nNewPropr)
bool GetJoinBorderWithNext() const
SwLinePortion * GetNextPortion() const
void SetIdx(const TextFrameIndex nNew)
SvxParaVertAlignItem::Align GetVertAlign() const
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...
class for collecting anchored objects
void Height(tools::Long nNew)
SwPosition MapViewToModelPos(TextFrameIndex nIndex) const
#define LANGUAGE_JAPANESE
bool Overlaps(const SwRect &rRect) const
bool IsFlyCntPortion() const
sal_uInt16 GetRubyHeight() const
static void lcl_GetCharRectInsideField(SwTextSizeInfo &rInf, SwRect &rOrig, const SwCursorMoveState &rCMS, const SwLinePortion &rPor)
SwTwips AdjustBaseLine(const SwLineLayout &rLine, const SwLinePortion *pPor, SwTwips nPorHeight=0, SwTwips nAscent=0, const bool bAutoToCentered=false) const
bool IsPostItsPortion() const
virtual bool FillSelection(SwSelectionList &rList, const SwRect &rRect) const override
sal_uInt16 GetDropHeight() const
bool IsProtected() const
Is the Frame or rather the Section in which it lies protected?
bool IsBlankPortion() const
bool GetJoinBorderWithPrev() const