47#include <libxml/xmlwriter.h>
52#include <osl/diagnose.h>
77 sal_Int32 nParagraphCount =
pParaList->GetParagraphCount();
78 if( nAbsPos > nParagraphCount )
79 nAbsPos = nParagraphCount;
96 bool bUpdate =
pEditEngine->SetUpdateLayout(
false );
99 pParaList->Insert( std::unique_ptr<Paragraph>(pPara), nAbsPos );
100 pEditEngine->InsertParagraph( nAbsPos, OUString() );
124 pParaList->Insert( std::unique_ptr<Paragraph>(pPara), nPara );
134 sal_Int16 nDepth = -1;
140 pParaList->Insert( std::unique_ptr<Paragraph>(pPara), nPara );
160 sal_Int16 nDepth = pPara->
GetDepth();
172 pPara =
pParaList->GetParagraph( nPara );
173 if ( pPara && ( pPara->
GetDepth() > nDepth ) )
177 while ( pPara && pPara->
GetDepth() > nDepth )
178 pPara =
pParaList->GetParagraph( ++nPara );
181 if ( pPara && ( pPara->
GetDepth() == nDepth ) )
209 default: OSL_FAIL(
"Outliner::Init - Invalid Mode!" );
232 DBG_ASSERT( pPara,
"Outliner::GetDepth - Paragraph not found!" );
233 return pPara ? pPara->
GetDepth() : -1;
241 if ( nNewDepth == pPara->
GetDepth() )
260 DBG_ASSERT( pPara,
"Outliner::GetNumberingStartValue - Paragraph not found!" );
267 DBG_ASSERT( pPara,
"Outliner::GetNumberingStartValue - Paragraph not found!" );
271 InsertUndo( std::make_unique<OutlinerUndoChangeParaNumberingRestart>(
this, nPara,
284 DBG_ASSERT( pPara,
"Outliner::IsParaIsNumberingRestart - Paragraph not found!" );
291 DBG_ASSERT( pPara,
"Outliner::SetParaIsNumberingRestart - Paragraph not found!" );
295 InsertUndo( std::make_unique<OutlinerUndoChangeParaNumberingRestart>(
this, nPara,
306 const sal_Int32 nParaStart,
307 const sal_Int32 nParaEnd )
const
309 if ( nParaStart > nParaEnd
310 || nParaEnd >=
pParaList->GetParagraphCount() )
312 SAL_WARN(
"editeng",
"<Outliner::GetBulletsNumberingStatus> - unexpected parameter values" );
316 sal_Int32 nBulletsCount = 0;
317 sal_Int32 nNumberingCount = 0;
318 for (sal_Int32 nPara = nParaStart; nPara <= nParaEnd; ++nPara)
342 const sal_Int32 nParaCount = nParaEnd - nParaStart + 1;
343 if ( nBulletsCount == nParaCount )
347 else if ( nNumberingCount == nParaCount )
356 return pParaList->GetParagraphCount() > 0
363 if (
static_cast<sal_uInt64
>(nStartPara) +
nCount >
375 std::unique_ptr<EditTextObject> xText =
pEditEngine->CreateTextObject( nStartPara,
nCount );
378 const sal_Int32 nLastPara(nStartPara +
nCount - 1);
380 for(sal_Int32 nPara(nStartPara); nPara <= nLastPara; nPara++)
382 aParagraphDataVector[nPara-nStartPara] = *
GetParagraph(nPara);
385 xText->ClearPortionInfo();
386 OutlinerParaObject aPObj(std::move(xText), std::move(aParagraphDataVector), bIsEditDoc);
401 const sal_Int32 nPara =
pParaList->GetAbsPos( pPara );
410 const bool bUpdate =
pEditEngine->SetUpdateLayout(
false );
423 sal_Int32 nInsPos = nPara+1;
429 while( nIdx>=0 && nIdx<aText.getLength() )
449 while ( ( nTabs <
aStr.size() ) && (
aStr[nTabs] ==
'\t' ) )
464 pParaList->Insert( std::unique_ptr<Paragraph>(pPara), nInsPos );
491 bool bConverted =
false;
500 sal_Int32 nHeadingNumberStart = 0;
501 sal_Int32 nNumberingNumberStart = 0;
505 OUString aHeading_US(
"heading" );
506 OUString aNumber_US(
"Numbering" );
509 if ( ( nSearch =
aName.indexOf( aHeading_US ) ) != -1 )
510 nHeadingNumberStart = nSearch + aHeading_US.getLength();
511 else if ( ( nSearch =
aName.indexOf( aNumber_US ) ) != -1 )
512 nNumberingNumberStart = nSearch + aNumber_US.getLength();
515 if ( nHeadingNumberStart || nNumberingNumberStart )
518 if( nHeadingNumberStart && (
aStr.getLength() >= 2 ) &&
519 ( pPtr[0] !=
'\t' ) && ( pPtr[1] ==
'\t' ) )
525 sal_Int32
nPos = nHeadingNumberStart ? nHeadingNumberStart : nNumberingNumberStart;
535 while( *pPtr ==
'\t' )
542 aDelSel =
ESelection( nPara, 0, nPara, nTabs );
551 sal_Int16 nOutlLevel = rLevel.
GetValue();
561 bool bUpdate =
pEditEngine->SetUpdateLayout(
false );
574 for( sal_Int32 nCurPara = 0; nCurPara < rPObj.
Count(); nCurPara++ )
595 bool bUpdate =
pEditEngine->SetUpdateLayout(
false );
613 for( sal_Int32
n = 0;
n < rPObj.
Count();
n++ )
615 if (
n == 0 && bAppend )
624 pParaList->Append(std::unique_ptr<Paragraph>(pPara));
625 sal_Int32 nP = nPara+
n;
637OUString
Outliner::CalcFieldValue(
const SvxFieldItem& rField, sal_Int32 nPara, sal_Int32 nPos, std::optional<Color>& rpTxtColor, std::optional<Color>& rpFldColor, std::optional<FontLineStyle>& rpFldLineStyle )
640 return OUString(
' ' );
693 sal_Int16 nDepth =
GetDepth( nPara );
697 OUString aNewStyleSheetName( pStyle->
GetName() );
698 aNewStyleSheetName = aNewStyleSheetName.subView( 0, aNewStyleSheetName.getLength()-1 ) +
699 OUString::number( nDepth+1 );
701 DBG_ASSERT( pNewStyle,
"AutoStyleSheetName - Style not found!" );
723 sal_Int16 nOldDepth = pPara->
GetDepth();
731 bool bUpdate =
pEditEngine->SetUpdateLayout(
false );
743 InsertUndo( std::make_unique<OutlinerUndoChangeDepth>(
this, nPara, nOldDepth, nDepth ) );
762 if ( !
pParaList->HasHiddenChildren( pPara ) )
765 std::unique_ptr<OLUndoExpand> pUndo;
771 pUndo->nCount =
pParaList->GetAbsPos( pPara );
785 if ( !
pParaList->HasVisibleChildren( pPara ) )
788 std::unique_ptr<OLUndoExpand> pUndo;
797 pUndo->nCount =
pParaList->GetAbsPos( pPara );
827 std::optional<vcl::Font> pSourceFont;
835 aBulletFont = *pSourceFont;
839 aBulletFont = aStdFont;
844 aBulletFont.
SetRelief( FontRelief::NONE );
848 double nStretchY = 100.0;
853 fScaledLineHeight *= fScale * 10;
854 fScaledLineHeight /= 1000.0;
879 bool bDrawBullet =
false;
883 bDrawBullet = rBulletState.
GetValue();
892 bool bRightToLeftPara =
pEditEngine->IsRightToLeft( nPara );
896 double nStretchX = 100.0;
916 rOutDev.
SetFont( aBulletFont );
924 if ( !bRightToLeftPara )
925 aTextPos.
setX( rStartPos.
X() + aBulletArea.
Left() );
935 aTextPos.
setY( rStartPos.
Y() + aBulletArea.
Left() );
940 aTextPos.
setY( rStartPos.
Y() + aBulletArea.
Left() );
952 rOutDev.
SetFont( aRotatedFont );
958 if ( bRightToLeftPara )
975 assert(
aBuf.get_factor() == 1);
977 aSvxFont, nPara, bRightToLeftPara ? 1 : 0,
nullptr,
nullptr,
false,
false,
true,
nullptr,
Color(),
Color());
993 aBulletPos.
setY( rStartPos.
Y() + aBulletArea.
Top() );
994 if ( !bRightToLeftPara )
995 aBulletPos.
setX( rStartPos.
X() + aBulletArea.
Left() );
1003 aBulletPos.
setX( rStartPos.
X() - aBulletArea.
Bottom() );
1004 aBulletPos.
setY( rStartPos.
Y() + aBulletArea.
Left() );
1008 aBulletPos.
setX( rStartPos.
X() + aBulletArea.
Top() );
1009 aBulletPos.
setY( rStartPos.
Y() - aBulletArea.
Right() );
1044 Point aStartPos, aEndPos;
1047 aStartPos.
setY( rStartPos.
Y() + aBulletArea.
Bottom() );
1048 if ( !bRightToLeftPara )
1049 aStartPos.
setX( rStartPos.
X() + aBulletArea.
Right() );
1052 aEndPos = aStartPos;
1057 aStartPos.
setX( rStartPos.
X() - aBulletArea.
Bottom() );
1058 aStartPos.
setY( rStartPos.
Y() + aBulletArea.
Right() );
1059 aEndPos = aStartPos;
1065 rOutDev.
DrawLine( aStartPos, aEndPos );
1074 Point aPos( pView->pEditView->GetWindowPosTopLeft(nPara ) );
1081 pView->pEditView->InvalidateWindow(aRect);
1091 bool bUpdate =
pEditEngine->SetUpdateLayout(
false );
1100 sal_Int32 nParas =
pEditEngine->GetParagraphCount();
1102 for ( sal_Int32
n = 0;
n < nParas;
n++ )
1104 std::unique_ptr<Paragraph> pPara(
new Paragraph( 0 ));
1120 bool bUpdate =
pEditEngine->SetUpdateLayout(
false );
1123 for( sal_Int32 nPara = nFirstPara; nPara <= nLastPara; nPara++ )
1130 pLastConverted = pPara;
1132 else if ( pLastConverted )
1157 bool bUpdate =
pEditEngine->SetUpdateLayout(
false );
1159 const sal_Int32 nStart = nStartPara;
1172 if( nStartPara == nStart )
1181 sal_Int16 nDepth = -1;
1188 if ( nDepth !=
GetDepth( nStartPara ) )
1194 pPara =
pParaList->GetParagraph( nStartPara );
1236 , nDepthChangedHdlPrevDepth(0)
1238 , bFirstParaIsEmpty(true)
1239 , nBlockInsCallback(0)
1240 , bStrippingPortions(false)
1246 std::unique_ptr<Paragraph> pPara(
new Paragraph( 0 ));
1276 ViewList::iterator it =
aViewList.begin();
1303 ViewList::iterator it =
aViewList.begin();
1347 return pParaList->GetParagraph( nAbsPos );
1352 return pParaList->HasChildren( pParagraph );
1368 sal_Int16 nDepth = pPara->
GetDepth();
1389 DBG_ASSERT( pFmt,
"ImplGetBulletSize - no Bullet!" );
1401 pRefDev->
SetFont( aBulletFont );
1420 for ( sal_Int32
n = nStart;
n < nEnd;
n++ )
1434 for ( sal_Int32
n =
pParaList->GetParagraphCount();
n; )
1470 sal_Int32 nParas =
pParaList->GetParagraphCount();
1471 for( sal_Int32 nPara = 0; nPara < nParas; nPara++ )
1473 if (
pEditEngine->GetStyleSheet( nPara ) == pStyle )
1504 if ( nBulletWidth < aBulletSize.
Width() )
1505 nBulletWidth = aBulletSize.
Width();
1507 if ( bAdjust && !bOutlineMode )
1514 aTopLeft.
setX(
pEditEngine->GetFirstLineStartX( nPara ) - nBulletWidth );
1524 +
aInfos.nFirstLineTextHeight / 2
1525 - aBulletSize.
Height() / 2 );
1530 if ( aBulletFont.
GetCharSet() != RTL_TEXTENCODING_SYMBOL )
1534 pRefDev->
SetFont( aBulletFont );
1551 aTopLeft.
AdjustX(( nBulletWidth - aBulletSize.
Width() ) / 2 );
1554 if ( aTopLeft.
X() < 0 )
1559 if ( bReturnPaperPos )
1564 Point aBulletPos( aBulletDocPos );
1568 aBulletPos.
setY( aBulletDocPos.
X() );
1572 Size aSz( aBulletSize );
1618 OUStringBuffer aText(128);
1619 sal_Int32 nStartPara =
pParaList->GetAbsPos( pParagraph );
1620 for ( sal_Int32
n = 0;
n <
nCount;
n++ )
1626 return aText.makeStringAndClear();
1633 if( !
nPos && ( nParaCount >=
pParaList->GetParagraphCount() ) )
1639 for( sal_Int32
n = 0;
n < nParaCount;
n++ )
1654 sal_Int32 nPara,
sal_uInt8 nRightToLeft,
1658 bool bEndOfParagraph,
1660 const css::lang::Locale* pLocale,
1661 const Color& rOverlineColor,
1662 const Color& rTextLineColor)
1666 DrawPortionInfo aInfo( rStartPos, rText, nTextStart, nTextLen, rFont, nPara, pDXArray, pKashidaArray, pWrongSpellVector,
1667 pFieldData,
pLocale, rOverlineColor, rTextLineColor, nRightToLeft,
false, 0, bEndOfLine, bEndOfParagraph, bEndOfBullet);
1674 sal_Int32 nPara,
sal_uInt8 nRightToLeft,
bool bEndOfLine,
bool bEndOfParagraph,
1675 const Color& rOverlineColor,
const Color& rTextLineColor)
1679 DrawPortionInfo aInfo( rStartPos, rChar, 0, rChar.getLength(), rFont, nPara, {}, {},
nullptr,
1680 nullptr,
nullptr, rOverlineColor, rTextLineColor, nRightToLeft,
true, nWidth, bEndOfLine, bEndOfParagraph,
false);
1706 sal_Int32 nPara = pParaList->GetAbsPos( &rPara );
1707 pEditEngine->ShowParagraph( nPara, rPara.IsVisible() );
1713 aBeginMovingHdl.Call(
this );
1719 maBeginPasteOrDropHdl.Call(&rInfos);
1725 ImpTextPasted( rInfos.nStartPara, rInfos.nEndPara - rInfos.nStartPara + 1 );
1726 maEndPasteOrDropHdl.Call( &rInfos );
1732 pParaList->MoveParagraphs( rInfos.nStartPara, rInfos.nDestPara, rInfos.nEndPara - rInfos.nStartPara + 1 );
1733 sal_Int32 nChangesStart = std::min( rInfos.nStartPara, rInfos.nDestPara );
1734 sal_Int32 nParas = pParaList->GetParagraphCount();
1735 for ( sal_Int32
n = nChangesStart;
n < nParas;
n++ )
1736 ImplCalcBulletText(
n,
false,
false );
1739 aEndMovingHdl.Call(
this );
1758 sal_uInt16 nNumber = pParaFmt->
GetStart() - 1;
1761 const sal_Int16 nParaDepth = pPara->
GetDepth();
1765 pPara =
pParaList->GetParagraph( nPara );
1766 const sal_Int16 nDepth = pPara->
GetDepth();
1769 if( (nDepth > nParaDepth) || (nDepth == -1) )
1773 if( nDepth < nParaDepth )
1778 if( pFmt ==
nullptr )
1800 if( nNumberingStartValue != -1 )
1801 nNumber += nNumberingStartValue - 1;
1817 OUString aBulletText;
1825 aBulletText += OUString(&cChar, 1);
1834 if (pPara->
GetText() != aBulletText)
1835 pPara->
SetText( aBulletText );
1839 sal_Int16 nDepth = pPara->
GetDepth();
1840 pPara =
pParaList->GetParagraph( ++nPara );
1841 if ( !bRecalcChildren )
1843 while ( pPara && ( pPara->
GetDepth() > nDepth ) )
1844 pPara =
pParaList->GetParagraph( ++nPara );
1847 if ( pPara && ( pPara->
GetDepth() < nDepth ) )
1882 for ( sal_Int32 nPara =
pParaList->GetParagraphCount(); nPara; )
1883 pParaList->GetParagraph( --nPara )->aBulSize.setWidth( -1 );
1935 if ( !nBlockInsCallback )
1936 pEditEngine->aOutlinerNotifyHdl.Call( rNotify );
1938 pEditEngine->aNotifyCache.push_back(rNotify);
1967 if( pPara && !pPara->
HasFlag( nFlag ) )
1978 return pPara && pPara->
HasFlag( nFlag );
1999 sal_Int32 nOverflowLine =
pEditEngine->GetOverflowingLineNum();
2004 "[Overflowing] Ops, trying to retrieve para "
2012 "[Overflowing] No Overflowing text but GetNonOverflowinText called?!");
2045 bool bItAllOverflew =
nCount == 0 && nOverflowLine == 0;
2046 if ( bItAllOverflew )
2050 bool const bLastParaInterrupted =
true;
2054 sal_Int32 nOverflowingPara =
nCount;
2055 sal_uInt32 nLen = 0;
2057 for ( sal_Int32 nLine = 0;
2069 const sal_Int32 nEndPos =
pEditEngine->GetTextLen(nEndPara);
2075 aOverflowingTextSelection =
2076 ESelection(nOverflowingPara-1, nParaLen, nEndPara, nEndPos);
2079 aOverflowingTextSelection =
2080 ESelection(nOverflowingPara, nLen, nEndPara, nEndPos);
2085 bool bLastParaInterrupted =
2094 std::unique_ptr<EditTextObject> pEmptyText =
pEditEngine->GetEmptyTextObject();
2109 "[Overflowing] Ops, trying to retrieve para "
2110 <<
pEditEngine->GetOverflowingParaNum() <<
" when max index is "
2115 sal_Int32 nHeadPara =
pEditEngine->GetOverflowingParaNum();
2118 sal_uInt32 nLen = 0;
2119 for ( sal_Int32 nLine = 0;
2125 sal_uInt32 nOverflowingPara =
pEditEngine->GetOverflowingParaNum();
2127 sal_Int32 nLastPara = nParaCount-1;
2129 aOverflowingTextSel =
ESelection(nOverflowingPara, nLen,
2130 nLastPara, nLastParaLen);
2145 pWriter = xmlNewTextWriterFilename(
"outliner.xml", 0);
2146 xmlTextWriterSetIndent(pWriter,1);
2147 (void)xmlTextWriterSetIndentString(pWriter, BAD_CAST(
" "));
2148 (void)xmlTextWriterStartDocument(pWriter,
nullptr,
nullptr,
nullptr);
2152 (void)xmlTextWriterStartElement(pWriter, BAD_CAST(
"Outliner"));
2154 (void)xmlTextWriterEndElement(pWriter);
2158 (void)xmlTextWriterEndDocument(pWriter);
2159 xmlFreeTextWriter(pWriter);
static vcl::Font CreateFontFromItemSet(const SfxItemSet &rItemSet, SvtScriptType nScriptType)
std::optional< Color > const & GetFieldColor() const
void SetFieldColor(std::optional< Color > xCol)
std::optional< Color > const & GetTextColor() const
std::optional< FontLineStyle > const & GetFontLineStyle() const
const OUString & GetRepresentation() const
void HideCursor(bool bDeactivate=false)
tools::Long GetDescent() const
tools::Long GetAscent() const
bool Draw(OutputDevice &rOut, const Point &rPt, const Size &rSz, const GraphicAttr *pAttr=nullptr) const
const ParagraphData & GetParagraphData(sal_Int32 nIndex) const
void SetOutlinerMode(OutlinerMode nNew)
const EditTextObject & GetTextObject() const
OutlinerMode GetOutlinerMode() const
std::unique_ptr< EditView > pEditView
EDITENG_DLLPRIVATE sal_Int32 ImpCalcSelectedPages(bool bIncludeFirstSelected)
void DrawingText(const Point &rStartPos, const OUString &rText, sal_Int32 nTextStart, sal_Int32 nTextLen, o3tl::span< const sal_Int32 > pDXArray, o3tl::span< const sal_Bool > pKashidaArray, const SvxFont &rFont, sal_Int32 nPara, sal_uInt8 nRightToLeft, const EEngineData::WrongSpellVector *pWrongSpellVector, const SvxFieldData *pFieldData, bool bEndOfLine, bool bEndOfParagraph, bool bEndOfBullet, const css::lang::Locale *pLocale, const Color &rOverlineColor, const Color &rTextLineColor)
void Remove(Paragraph const *pPara, sal_Int32 nParaCount)
bool Expand(Paragraph const *)
void SetBeginDropHdl(const Link< EditView *, void > &rLink)
sets a link that is called at the beginning of a drag operation at an edit view
static bool HasParaFlag(const Paragraph *pPara, ParaFlag nFlag)
SfxStyleSheetPool * GetStyleSheetPool()
void SetMaxDepth(sal_Int16 nDepth)
void ImplCheckParagraphs(sal_Int32 nStart, sal_Int32 nEnd)
void SetCharAttribs(sal_Int32 nPara, const SfxItemSet &rSet)
Set attributes from rSet an all characters of nPara.
void SetText(const OutlinerParaObject &)
void ClearOverflowingParaNum()
OUString GetText(Paragraph const *pPara, sal_Int32 nParaCount=1) const
void ImplBlockInsertionCallbacks(bool b)
Link< OutlinerView *, bool > aRemovingPagesHdl
void SetLevelDependentStyleSheet(sal_Int32 nPara)
bool IsParaIsNumberingRestart(sal_Int32 nPara) const
void SetFlatMode(bool bFlat)
const Size & GetPaperSize() const
OutlinerMode GetOutlinerMode() const
friend class OutlinerEditEng
tools::Rectangle ImpCalcBulletArea(sal_Int32 nPara, bool bAdjust, bool bReturnPaperPos)
void ParagraphInsertedHdl(Paragraph *)
SfxUndoManager * SetUndoManager(SfxUndoManager *pNew)
void DrawingTab(const Point &rStartPos, tools::Long nWidth, const OUString &rChar, const SvxFont &rFont, sal_Int32 nPara, sal_uInt8 nRightToLeft, bool bEndOfLine, bool bEndOfParagraph, const Color &rOverlineColor, const Color &rTextLineColor)
void AddText(const OutlinerParaObject &, bool bAppend=false)
Paragraph * GetParagraph(sal_Int32 nAbsPos) const
OutlinerParaObject GetEmptyParaObject() const
const SvxNumberFormat * GetNumberFormat(sal_Int32 nPara) const
void PaintBullet(sal_Int32 nPara, const Point &rStartPos, const Point &rOrigin, Degree10 nOrientation, OutputDevice &rOutDev)
void getGlobalScale(double &rFontX, double &rFontY, double &rSpacingX, double &rSpacingY) const
std::optional< OutlinerParaObject > CreateParaObject(sal_Int32 nStartPara=0, sal_Int32 nParaCount=EE_PARA_ALL) const
sal_Int16 GetDepth(sal_Int32 nPara) const
void SetStyleSheet(sal_Int32 nPara, SfxStyleSheet *pStyle)
vcl::Font ImpCalcBulletFont(sal_Int32 nPara) const
std::unique_ptr< OutlinerEditEng > pEditEngine
bool ImplHasNumberFormat(sal_Int32 nPara) const
bool ImpConvertEdtToOut(sal_Int32 nPara)
void InsertUndo(std::unique_ptr< EditUndo > pUndo)
void SetDepth(Paragraph *pParagraph, sal_Int16 nNewDepth)
OutlinerView * GetView(size_t nIndex) const
Link< OutlinerView *, bool > aIndentingPagesHdl
void SetEndPasteOrDropHdl(const Link< PasteOrDropInfos *, void > &rLink)
sets a link that is called after a drop or paste operation.
void SetParaAttribs(sal_Int32 nPara, const SfxItemSet &)
void ParaAttribsChanged(sal_Int32 nParagraph)
void ImplCalcBulletText(sal_Int32 nPara, bool bRecalcLevel, bool bRecalcChildren)
void ImplCheckNumBulletItem(sal_Int32 nPara)
bool IsUndoEnabled() const
Size ImplGetBulletSize(sal_Int32 nPara)
void ImpTextPasted(sal_Int32 nStartPara, sal_Int32 nCount)
Link< ParagraphHdlParam, void > aParaRemovingHdl
sal_Int32 GetAbsPos(Paragraph const *pPara) const
sal_Int32 GetBulletsNumberingStatus() const
std::optional< NonOverflowingText > GetNonOverflowingText() const
void ImplCheckDepth(sal_Int16 &rnDepth) const
virtual OUString CalcFieldValue(const SvxFieldItem &rField, sal_Int32 nPara, sal_Int32 nPos, std::optional< Color > &rTxtColor, std::optional< Color > &rFldColor, std::optional< FontLineStyle > &rFldLineStyle)
bool Collapse(Paragraph const *)
SfxUndoManager & GetUndoManager()
void UndoActionStart(sal_uInt16 nId)
std::optional< OverflowingText > GetOverflowingText() const
Link< DepthChangeHdlParam, void > aDepthChangedHdl
std::unique_ptr< ParagraphList > pParaList
void RemoveView(OutlinerView const *pView)
OutlinerMode nOutlinerMode
static constexpr sal_Int16 gnMinDepth
size_t InsertView(OutlinerView *pView, size_t nIndex=size_t(-1))
EBulletInfo GetBulletInfo(sal_Int32 nPara)
OUString ImplGetBulletText(sal_Int32 nPara)
bool ImpCanDeleteSelectedPages(OutlinerView *pCurView)
sal_Int16 GetNumberingStartValue(sal_Int32 nPara) const
void SetEndDropHdl(const Link< EditView *, void > &rLink)
sets a link that is called at the end of a drag operation at an edit view
Link< ParagraphHdlParam, void > aParaInsertedHdl
void StyleSheetChanged(SfxStyleSheet const *pStyle)
Link< DrawPortionInfo *, void > aDrawPortionHdl
Link< PasteOrDropInfos *, void > maBeginPasteOrDropHdl
void dumpAsXml(xmlTextWriterPtr pWriter) const
sal_uInt16 ImplGetNumbering(sal_Int32 nPara, const SvxNumberFormat *pParaFmt)
void ImplSetLevelDependentStyleSheet(sal_Int32 nPara)
SfxItemSet const & GetParaAttribs(sal_Int32 nPara) const
Link< EditFieldInfo *, void > aCalcFieldValueHdl
void SetBeginPasteOrDropHdl(const Link< PasteOrDropInfos *, void > &rLink)
sets a link that is called before a drop or paste operation.
bool IndentingPagesHdl(OutlinerView *)
friend class OLUndoExpand
Outliner(SfxItemPool *pPool, OutlinerMode nMode)
void SetParaFlag(Paragraph *pPara, ParaFlag nFlag)
void DepthChangedHdl(Paragraph *, ParaFlag nPrevFlags)
void ImplInitDepth(sal_Int32 nPara, sal_Int16 nDepth, bool bCreateUndo)
void SetRefDevice(OutputDevice *pRefDev)
void ImpFilterIndents(sal_Int32 nFirstPara, sal_Int32 nLastPara)
void SetNumberingStartValue(sal_Int32 nPara, sal_Int16 nNumberingStartValue)
bool RemovingPagesHdl(OutlinerView *)
virtual ~Outliner() override
sal_Int32 nDepthChangedHdlPrevDepth
void ParagraphInserted(sal_Int32 nParagraph)
bool ImpCanIndentSelectedPages(OutlinerView *pCurView)
bool HasChildren(Paragraph const *pParagraph) const
ErrCode Read(SvStream &rInput, const OUString &rBaseURL, EETextFormat, SvKeyValueIterator *pHTTPHeaderAttrs=nullptr)
Paragraph * Insert(const OUString &rText, sal_Int32 nAbsPos=EE_PARA_APPEND, sal_Int16 nDepth=0)
Link< PasteOrDropInfos *, void > maEndPasteOrDropHdl
sal_Int32 GetLineLen(sal_Int32 nParagraph, sal_Int32 nLine) const
Link< DrawBulletInfo *, void > aDrawBulletHdl
sal_uInt8 nBlockInsCallback
void Init(OutlinerMode nMode)
size_t GetViewCount() const
SfxStyleSheet * GetStyleSheet(sal_Int32 nPara)
bool IsTopToBottom() const
void InvalidateBullet(sal_Int32 nPara)
void ParagraphDeleted(sal_Int32 nParagraph)
void EnableUndo(bool bEnable)
sal_Int32 GetParagraphCount() const
void SetParaIsNumberingRestart(sal_Int32 nPara, bool bParaIsNumberingRestart)
bool IsForceAutoColor() const
const vcl::Font & GetFont() const
void SetFont(const vcl::Font &rNewFont)
SAL_WARN_UNUSED_RESULT Point PixelToLogic(const Point &rDevicePt) const
void DrawLine(const Point &rStartPt, const Point &rEndPt)
SAL_WARN_UNUSED_RESULT Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
tools::Long GetTextWidth(const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, vcl::text::TextLayoutCache const *=nullptr, SalLayoutGlyphs const *const pLayoutCache=nullptr) const
tools::Long GetTextArray(const OUString &rStr, KernArray *pDXAry, sal_Int32 nIndex=0, sal_Int32 nLen=-1, bool bCaret=false, vcl::text::TextLayoutCache const *=nullptr, SalLayoutGlyphs const *const pLayoutCache=nullptr) const
vcl::text::ComplexTextLayoutFlags GetLayoutMode() const
FontMetric GetFontMetric() const
const Color & GetLineColor() const
tools::Long GetTextHeight() const
void DrawText(const Point &rStartPt, const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, std::vector< tools::Rectangle > *pVector=nullptr, OUString *pDisplayText=nullptr, const SalLayoutGlyphs *pLayoutCache=nullptr)
void SetLayoutMode(vcl::text::ComplexTextLayoutFlags nTextLayoutMode)
sal_Int16 GetDepth() const
void SetNumberingStartValue(sal_Int16 nNumberingStartValue)
bool IsParaIsNumberingRestart() const
sal_Int16 GetNumberingStartValue() const
bool HasFlag(ParaFlag nFlag) const
void SetFlag(ParaFlag nFlag)
const OUString & GetText() const
void SetDepth(sal_Int16 nNewDepth)
void SetText(const OUString &rText)
void SetParaIsNumberingRestart(bool bParaIsNumberingRestart)
constexpr tools::Long Y() const
void setX(tools::Long nX)
void RotateAround(tools::Long &rX, tools::Long &rY, Degree10 nOrientation) const
void setY(tools::Long nY)
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long X() const
sal_Int16 GetValue() const
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
virtual SfxStyleSheetBase * Find(const OUString &, SfxStyleFamily eFam, SfxStyleSearchBits n=SfxStyleSearchBits::All)
const OUString & GetName() const
SfxStyleFamily GetFamily() const
constexpr tools::Long Height() const
void setWidth(tools::Long nWidth)
void setHeight(tools::Long nHeight)
constexpr tools::Long Width() const
SvxAdjust GetAdjust() const
const GraphicObject * GetGraphicObject(OUString const &referer=OUString()) const
This item stores a field (SvxFieldData).
short GetTextFirstLineOffset() const
tools::Long GetTextLeft() const
const SvxNumRule & GetNumRule() const
sal_uInt16 GetLevelCount() const
const SvxNumberFormat * Get(sal_uInt16 nLevel) const
SvxNumType GetNumberingType() const
OUString GetNumStr(sal_Int32 nNo) const
Specialise std::optional template for the case where we are wrapping a o3tl::cow_wrapper type,...
void SetFontSize(const Size &)
void SetOrientation(Degree10 nLineOrientation)
void SetVertical(bool bVertical)
void SetColor(const Color &)
void SetUnderline(FontLineStyle)
const Size & GetFontSize() const
void SetAlignment(TextAlign)
void SetOverline(FontLineStyle)
rtl_TextEncoding GetCharSet() const
void SetRelief(FontRelief)
void SetEmphasisMark(FontEmphasisMark)
void SetStrikeout(FontStrikeout)
constexpr ::Color COL_AUTO(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
#define DBG_ASSERT(sCon, aError)
#define EDITUNDO_DRAGANDDROP
constexpr TypedWhichId< SfxBoolItem > EE_PARA_BULLETSTATE(EE_PARA_START+9)
constexpr TypedWhichId< SvxAdjustItem > EE_PARA_JUST(EE_PARA_START+16)
constexpr TypedWhichId< SvxLRSpaceItem > EE_PARA_LRSPACE(EE_PARA_START+13)
constexpr TypedWhichId< SfxInt16Item > EE_PARA_OUTLLEVEL(EE_PARA_START+11)
constexpr TypedWhichId< SvxLRSpaceItem > EE_PARA_OUTLLRSPACE(EE_PARA_START+10)
constexpr TypedWhichId< SvxNumBulletItem > EE_PARA_NUMBULLET(EE_PARA_START+5)
struct _xmlTextWriter * xmlTextWriterPtr
TOOLS_DLLPUBLIC OString convertLineEnd(const OString &rIn, LineEnd eLineEnd)
#define LINK(Instance, Class, Member)
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
std::vector< WrongSpellClass > WrongSpellVector
B2IRange fround(const B2DRange &rRange)
OString stripStart(const OString &rIn, char c)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix=10)
std::basic_string_view< charT, traits > getToken(std::basic_string_view< charT, traits > sv, charT delimiter, std::size_t &position)
constexpr T & temporary(T &&x)
IMPL_LINK(Outliner, ParaVisibleStateChangedHdl, Paragraph &, rPara, void)
static bool isSameNumbering(const SvxNumberFormat &rN1, const SvxNumberFormat &rN2)
IMPL_LINK_NOARG(Outliner, BeginMovingParagraphsHdl, MoveParagraphsInfo &, void)
::std::vector< ParagraphData > ParagraphDataVector
Sequence< Property > aInfos
sal_uInt16 nFirstLineMaxAscent