diff options
Diffstat (limited to 'editeng/inc/editdoc.hxx')
-rw-r--r-- | editeng/inc/editdoc.hxx | 725 |
1 files changed, 64 insertions, 661 deletions
diff --git a/editeng/inc/editdoc.hxx b/editeng/inc/editdoc.hxx index 4d4de9497b67..ede186b717a5 100644 --- a/editeng/inc/editdoc.hxx +++ b/editeng/inc/editdoc.hxx @@ -19,23 +19,32 @@ #pragma once +#include "ParagraphPortionList.hxx" #include "editattr.hxx" #include "edtspell.hxx" #include "eerdll2.hxx" #include <editeng/svxfont.hxx> +#include <editeng/EPaM.hxx> #include <svl/itemset.hxx> #include <svl/style.hxx> #include <svl/itempool.hxx> #include <svl/languageoptions.hxx> #include <tools/lineend.hxx> #include <o3tl/typed_flags_set.hxx> - +#include "TextPortion.hxx" +#include "TextPortionList.hxx" +#include "ItemList.hxx" +#include "ContentNode.hxx" +#include "EditLineList.hxx" +#include "EditPaM.hxx" +#include "EditSelection.hxx" + +#include <cstddef> #include <memory> #include <string_view> #include <vector> class ImpEditEngine; -class SvxTabStop; enum class TextRotation; @@ -48,65 +57,8 @@ bool IsScriptItemValid( sal_uInt16 nItemId, short nScriptType ); EditCharAttrib* MakeCharAttrib( SfxItemPool& rPool, const SfxPoolItem& rAttr, sal_Int32 nS, sal_Int32 nE ); -class ContentNode; class EditDoc; -struct EPaM -{ - sal_Int32 nPara; - sal_Int32 nIndex; - - EPaM() : nPara(0), nIndex(0) {} - EPaM( sal_Int32 nP, sal_Int32 nI ) : nPara(nP), nIndex(nI) {} - EPaM( const EPaM& r) : nPara(r.nPara), nIndex(r.nIndex) {} - EPaM& operator = ( const EPaM& r ) { nPara = r.nPara; nIndex = r.nIndex; return *this; } - inline bool operator == ( const EPaM& r ) const; - inline bool operator < ( const EPaM& r ) const; -}; - -inline bool EPaM::operator < ( const EPaM& r ) const -{ - return ( nPara < r.nPara ) || ( ( nPara == r.nPara ) && nIndex < r.nIndex ); -} - -inline bool EPaM::operator == ( const EPaM& r ) const -{ - return ( nPara == r.nPara ) && ( nIndex == r.nIndex ); -} - -struct ScriptTypePosInfo -{ - short nScriptType; - sal_Int32 nStartPos; - sal_Int32 nEndPos; - - ScriptTypePosInfo( short Type, sal_Int32 Start, sal_Int32 End ) - : nScriptType(Type) - , nStartPos(Start) - , nEndPos(End) - { - } -}; - -typedef std::vector<ScriptTypePosInfo> ScriptTypePosInfos; - -struct WritingDirectionInfo -{ - sal_uInt8 nType; - sal_Int32 nStartPos; - sal_Int32 nEndPos; - - WritingDirectionInfo( sal_uInt8 Type, sal_Int32 Start, sal_Int32 End ) - : nType(Type) - , nStartPos(Start) - , nEndPos(End) - { - } -}; - - -typedef std::vector<WritingDirectionInfo> WritingDirectionInfos; - class ContentAttribsInfo { private: @@ -116,585 +68,20 @@ private: CharAttribsType aPrevCharAttribs; public: - ContentAttribsInfo( const SfxItemSet& rParaAttribs ); + ContentAttribsInfo( SfxItemSet aParaAttribs ); const SfxItemSet& GetPrevParaAttribs() const { return aPrevParaAttribs; } const CharAttribsType& GetPrevCharAttribs() const { return aPrevCharAttribs; } - void RemoveAllCharAttribsFromPool(SfxItemPool& rPool) const; void AppendCharAttrib(EditCharAttrib* pNew); }; - - typedef std::vector<Color> SvxColorList; - - - -class ItemList -{ -private: - typedef std::vector<const SfxPoolItem*> DummyItemList; - DummyItemList aItemPool; - sal_Int32 CurrentItem; - -public: - ItemList(); - const SfxPoolItem* First(); - const SfxPoolItem* Next(); - sal_Int32 Count() const { return aItemPool.size(); }; - void Insert( const SfxPoolItem* pItem ); - void Clear() { aItemPool.clear(); }; -}; - - - -class ContentAttribs -{ -private: - SfxStyleSheet* pStyle; - SfxItemSetFixed<EE_PARA_START, EE_CHAR_END> aAttribSet; - -public: - ContentAttribs( SfxItemPool& rItemPool ); - - void dumpAsXml(xmlTextWriterPtr pWriter) const; - - SvxTabStop FindTabStop( sal_Int32 nCurPos, sal_uInt16 nDefTab ); - SfxItemSet& GetItems() { return aAttribSet; } - const SfxItemSet& GetItems() const { return aAttribSet; } - const SfxStyleSheet* GetStyleSheet() const { return pStyle; } - SfxStyleSheet* GetStyleSheet() { return pStyle; } - void SetStyleSheet( SfxStyleSheet* pS ); - - const SfxPoolItem& GetItem( sal_uInt16 nWhich ) const; - template<class T> - const T& GetItem( TypedWhichId<T> nWhich ) const - { - return static_cast<const T&>(GetItem(sal_uInt16(nWhich))); - } - bool HasItem( sal_uInt16 nWhich ) const; -}; - - - -class CharAttribList -{ -public: - typedef std::vector<std::unique_ptr<EditCharAttrib> > AttribsType; - -private: - AttribsType aAttribs; - SvxFont aDefFont; // faster than ever from the pool! - bool bHasEmptyAttribs; - -public: - CharAttribList(); - ~CharAttribList(); - - void dumpAsXml(xmlTextWriterPtr pWriter) const; - - void DeleteEmptyAttribs( SfxItemPool& rItemPool ); - - const EditCharAttrib* FindAttrib( sal_uInt16 nWhich, sal_Int32 nPos ) const; - EditCharAttrib* FindAttrib( sal_uInt16 nWhich, sal_Int32 nPos ); - const EditCharAttrib* FindNextAttrib( sal_uInt16 nWhich, sal_Int32 nFromPos ) const; - EditCharAttrib* FindEmptyAttrib( sal_uInt16 nWhich, sal_Int32 nPos ); - const EditCharAttrib* FindFeature( sal_Int32 nPos ) const; - - - void ResortAttribs(); - void OptimizeRanges( SfxItemPool& rItemPool ); - - sal_Int32 Count() const; - - void InsertAttrib( EditCharAttrib* pAttrib ); - - SvxFont& GetDefFont() { return aDefFont; } - - bool HasEmptyAttribs() const { return bHasEmptyAttribs; } - void SetHasEmptyAttribs(bool b); - bool HasBoundingAttrib( sal_Int32 nBound ) const; - bool HasAttrib( sal_Int32 nStartPos, sal_Int32 nEndPos ) const; - - AttribsType& GetAttribs() { return aAttribs;} - const AttribsType& GetAttribs() const { return aAttribs;} - - void Remove(const EditCharAttrib* p); - void Remove(sal_Int32 nPos); - -#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG - static void DbgCheckAttribs(CharAttribList const& rAttribs); -#endif -}; - - - -class ContentNode -{ -private: - OUString maString; - ContentAttribs aContentAttribs; - CharAttribList aCharAttribList; - std::unique_ptr<WrongList> mpWrongList; - - void UnExpandPosition( sal_Int32 &rStartPos, bool bBiasStart ); - -public: - ContentNode( SfxItemPool& rItemPool ); - ContentNode( const OUString& rStr, const ContentAttribs& rContentAttribs ); - ~ContentNode(); - ContentNode(const ContentNode&) = delete; - ContentNode& operator=(const ContentNode&) = delete; - - void dumpAsXml(xmlTextWriterPtr pWriter) const; - - ContentAttribs& GetContentAttribs() { return aContentAttribs; } - const ContentAttribs& GetContentAttribs() const { return aContentAttribs; } - CharAttribList& GetCharAttribs() { return aCharAttribList; } - const CharAttribList& GetCharAttribs() const { return aCharAttribList; } - - void ExpandAttribs( sal_Int32 nIndex, sal_Int32 nNewChars, SfxItemPool& rItemPool ); - void CollapseAttribs( sal_Int32 nIndex, sal_Int32 nDelChars, SfxItemPool& rItemPool ); - void AppendAttribs( ContentNode* pNextNode ); - void CopyAndCutAttribs( ContentNode* pPrevNode, SfxItemPool& rPool, bool bKeepEndingAttribs ); - - void SetStyleSheet( SfxStyleSheet* pS, bool bRecalcFont = true ); - void SetStyleSheet( SfxStyleSheet* pS, const SvxFont& rFontFromStyle ); - SfxStyleSheet* GetStyleSheet() { return aContentAttribs.GetStyleSheet(); } - - void CreateDefFont(); - - void EnsureWrongList(); - WrongList* GetWrongList(); - const WrongList* GetWrongList() const; - void SetWrongList( WrongList* p ); - - void CreateWrongList(); - void DestroyWrongList(); - - bool IsFeature( sal_Int32 nPos ) const; - - sal_Int32 Len() const; - const OUString& GetString() const { return maString;} - - /// return length including expanded fields - sal_Int32 GetExpandedLen() const; - /// return content including expanded fields - OUString GetExpandedText(sal_Int32 nStartPos = 0, sal_Int32 nEndPos = -1) const; - /// re-write offsets in the expanded text to string offsets - void UnExpandPositions( sal_Int32 &rStartPos, sal_Int32 &rEndPos ); - - void SetChar(sal_Int32 nPos, sal_Unicode c); - void Insert(std::u16string_view rStr, sal_Int32 nPos); - void Append(std::u16string_view rStr); - void Erase(sal_Int32 nPos); - void Erase(sal_Int32 nPos, sal_Int32 nCount); - OUString Copy(sal_Int32 nPos) const; - OUString Copy(sal_Int32 nPos, sal_Int32 nCount) const; - sal_Unicode GetChar(sal_Int32 nPos) const; -}; - - - -class EditPaM -{ -private: - ContentNode* pNode; - sal_Int32 nIndex; - -public: - EditPaM(); - EditPaM(ContentNode* p, sal_Int32 n); - - const ContentNode* GetNode() const { return pNode;} - ContentNode* GetNode() { return pNode;} - void SetNode(ContentNode* p); - - sal_Int32 GetIndex() const { return nIndex; } - void SetIndex( sal_Int32 n ) { nIndex = n; } - - bool DbgIsBuggy( EditDoc const & rDoc ) const; - - friend bool operator == ( const EditPaM& r1, const EditPaM& r2 ); - friend bool operator != ( const EditPaM& r1, const EditPaM& r2 ); - bool operator !() const { return !pNode && !nIndex; } -}; - -enum class PortionKind -{ - TEXT = 0, - TAB = 1, - LINEBREAK = 2, - FIELD = 3, - HYPHENATOR = 4 -}; - enum class DeleteMode { Simple, RestOfWord, RestOfContent }; -enum class AsianCompressionFlags { - Normal = 0x00, - Kana = 0x01, - PunctuationLeft = 0x02, - PunctuationRight = 0x04, -}; -namespace o3tl { - template<> struct typed_flags<AsianCompressionFlags> : is_typed_flags<AsianCompressionFlags, 0x07> {}; -} - - - -// struct ExtraPortionInfos - -struct ExtraPortionInfo -{ - tools::Long nOrgWidth; - tools::Long nWidthFullCompression; - - tools::Long nPortionOffsetX; - - sal_uInt16 nMaxCompression100thPercent; - - AsianCompressionFlags nAsianCompressionTypes; - bool bFirstCharIsRightPunktuation; - bool bCompressed; - - std::unique_ptr<sal_Int32[]> pOrgDXArray; - std::vector< sal_Int32 > lineBreaksList; - - - ExtraPortionInfo(); - ~ExtraPortionInfo(); - - void SaveOrgDXArray( const sal_Int32* pDXArray, sal_Int32 nLen ); -}; - - - -class TextPortion -{ -private: - std::unique_ptr<ExtraPortionInfo> xExtraInfos; - sal_Int32 nLen; - Size aOutSz; - PortionKind nKind; - sal_uInt8 nRightToLeftLevel; - sal_Unicode nExtraValue; - - -public: - TextPortion( sal_Int32 nL ) - : nLen( nL ) - , aOutSz( -1, -1 ) - , nKind( PortionKind::TEXT ) - , nRightToLeftLevel( 0 ) - , nExtraValue( 0 ) - { - } - - TextPortion( const TextPortion& r ) - : nLen( r.nLen ) - , aOutSz( r.aOutSz ) - , nKind( r.nKind ) - , nRightToLeftLevel( r.nRightToLeftLevel ) - , nExtraValue( r.nExtraValue ) - { - } - - - sal_Int32 GetLen() const { return nLen; } - void SetLen( sal_Int32 nL ) { nLen = nL; } - - Size& GetSize() { return aOutSz; } - const Size& GetSize() const { return aOutSz; } - - void SetKind(PortionKind n) { nKind = n; } - PortionKind GetKind() const { return nKind; } - - void SetRightToLeftLevel( sal_uInt8 n ) { nRightToLeftLevel = n; } - sal_uInt8 GetRightToLeftLevel() const { return nRightToLeftLevel; } - bool IsRightToLeft() const { return (nRightToLeftLevel&1); } - - sal_Unicode GetExtraValue() const { return nExtraValue; } - void SetExtraValue( sal_Unicode n ) { nExtraValue = n; } - - ExtraPortionInfo* GetExtraInfos() const { return xExtraInfos.get(); } - void SetExtraInfos( ExtraPortionInfo* p ) { xExtraInfos.reset(p); } -}; - - - -class TextPortionList -{ - typedef std::vector<std::unique_ptr<TextPortion> > PortionsType; - PortionsType maPortions; - -public: - TextPortionList(); - ~TextPortionList(); - TextPortionList(TextPortionList&&) = default; - TextPortionList& operator=(TextPortionList&&) = default; - - void Reset(); - sal_Int32 FindPortion( - sal_Int32 nCharPos, sal_Int32& rPortionStart, bool bPreferStartingPortion = false) const; - sal_Int32 GetStartPos(sal_Int32 nPortion); - void DeleteFromPortion(sal_Int32 nDelFrom); - sal_Int32 Count() const; - const TextPortion& operator[](sal_Int32 nPos) const; - TextPortion& operator[](sal_Int32 nPos); - - void Append(TextPortion* p); - void Insert(sal_Int32 nPos, TextPortion* p); - void Remove(sal_Int32 nPos); - sal_Int32 GetPos(const TextPortion* p) const; -}; - -class ParaPortion; - - - -class EditLine -{ -public: - typedef std::vector<sal_Int32> CharPosArrayType; - -private: - CharPosArrayType aPositions; - sal_Int32 nTxtWidth; - sal_Int32 nStartPosX; - sal_Int32 nStart; // could be replaced by nStartPortion - sal_Int32 nEnd; // could be replaced by nEndPortion - sal_Int32 nStartPortion; - sal_Int32 nEndPortion; - sal_uInt16 nHeight; // Total height of the line - sal_uInt16 nTxtHeight; // Pure Text height - sal_uInt16 nMaxAscent; - bool bHangingPunctuation:1; - bool bInvalid:1; // for skillful formatting - -public: - EditLine(); - - bool IsIn( sal_Int32 nIndex ) const - { return ( (nIndex >= nStart ) && ( nIndex < nEnd ) ); } - - bool IsIn( sal_Int32 nIndex, bool bInclEnd ) const - { return ( ( nIndex >= nStart ) && ( bInclEnd ? ( nIndex <= nEnd ) : ( nIndex < nEnd ) ) ); } - - void SetStart( sal_Int32 n ) { nStart = n; } - sal_Int32 GetStart() const { return nStart; } - sal_Int32& GetStart() { return nStart; } - - void SetEnd( sal_Int32 n ) { nEnd = n; } - sal_Int32 GetEnd() const { return nEnd; } - sal_Int32& GetEnd() { return nEnd; } - - void SetStartPortion( sal_Int32 n ) { nStartPortion = n; } - sal_Int32 GetStartPortion() const { return nStartPortion; } - sal_Int32& GetStartPortion() { return nStartPortion; } - - void SetEndPortion( sal_Int32 n ) { nEndPortion = n; } - sal_Int32 GetEndPortion() const { return nEndPortion; } - sal_Int32& GetEndPortion() { return nEndPortion; } - - void SetHeight( sal_uInt16 nH, sal_uInt16 nTxtH = 0 ); - sal_uInt16 GetHeight() const { return nHeight; } - sal_uInt16 GetTxtHeight() const { return nTxtHeight; } - - void SetTextWidth( sal_Int32 n ) { nTxtWidth = n; } - sal_Int32 GetTextWidth() const { return nTxtWidth; } - - void SetMaxAscent( sal_uInt16 n ) { nMaxAscent = n; } - sal_uInt16 GetMaxAscent() const { return nMaxAscent; } - - void SetHangingPunctuation( bool b ) { bHangingPunctuation = b; } - bool IsHangingPunctuation() const { return bHangingPunctuation; } - - sal_Int32 GetLen() const { return nEnd - nStart; } - - sal_Int32 GetStartPosX() const { return nStartPosX; } - void SetStartPosX( sal_Int32 start ); - Size CalcTextSize( ParaPortion& rParaPortion ); - - bool IsInvalid() const { return bInvalid; } - bool IsValid() const { return !bInvalid; } - void SetInvalid() { bInvalid = true; } - void SetValid() { bInvalid = false; } - - bool IsEmpty() const { return nEnd <= nStart; } - - CharPosArrayType& GetCharPosArray() { return aPositions;} - const CharPosArrayType& GetCharPosArray() const { return aPositions;} - - EditLine* Clone() const; - - friend bool operator == ( const EditLine& r1, const EditLine& r2 ); -}; - - - -class EditLineList -{ - typedef std::vector<std::unique_ptr<EditLine> > LinesType; - LinesType maLines; - -public: - EditLineList(); - ~EditLineList(); - EditLineList(EditLineList&&) = default; - EditLineList& operator=(EditLineList&&) = default; - - void Reset(); - void DeleteFromLine(sal_Int32 nDelFrom); - sal_Int32 FindLine(sal_Int32 nChar, bool bInclEnd); - sal_Int32 Count() const; - const EditLine& operator[](sal_Int32 nPos) const; - EditLine& operator[](sal_Int32 nPos); - - void Append(EditLine* p); - void Insert(sal_Int32 nPos, EditLine* p); -}; - - - -class ParaPortion -{ - friend class ImpEditEngine; // to adjust the height -private: - EditLineList aLineList; - TextPortionList aTextPortionList; - ContentNode* pNode; - tools::Long nHeight; - - ScriptTypePosInfos aScriptInfos; - WritingDirectionInfos aWritingDirectionInfos; - - sal_Int32 nInvalidPosStart; - sal_Int32 nFirstLineOffset; // For Writer-LineSpacing-Interpretation - sal_Int32 nBulletX; - sal_Int32 nInvalidDiff; - - bool bInvalid : 1; - bool bSimple : 1; // only linear Tap - bool bVisible : 1; // Belongs to the node! - bool bForceRepaint : 1; - -public: - ParaPortion( ContentNode* pNode ); - ~ParaPortion(); - ParaPortion( ParaPortion&& ) = default; - ParaPortion& operator=( ParaPortion&& ) = default; - - sal_Int32 GetLineNumber( sal_Int32 nIndex ) const; - - EditLineList& GetLines() { return aLineList; } - const EditLineList& GetLines() const { return aLineList; } - - bool IsInvalid() const { return bInvalid; } - bool IsSimpleInvalid() const { return bSimple; } - void SetValid() { bInvalid = false; bSimple = true;} - - bool MustRepaint() const { return bForceRepaint; } - void SetMustRepaint( bool bRP ) { bForceRepaint = bRP; } - - sal_Int32 GetBulletX() const { return nBulletX; } - void SetBulletX( sal_Int32 n ) { nBulletX = n; } - - void MarkInvalid( sal_Int32 nStart, sal_Int32 nDiff); - void MarkSelectionInvalid( sal_Int32 nStart ); - - void SetVisible( bool bVisible ); - bool IsVisible() const { return bVisible; } - - bool IsEmpty() { return GetTextPortions().Count() == 1 && GetTextPortions()[0].GetLen() == 0; } - - tools::Long GetHeight() const { return ( bVisible ? nHeight : 0 ); } - sal_Int32 GetFirstLineOffset() const { return ( bVisible ? nFirstLineOffset : 0 ); } - void ResetHeight() { nHeight = 0; nFirstLineOffset = 0; } - - ContentNode* GetNode() const { return pNode; } - TextPortionList& GetTextPortions() { return aTextPortionList; } - const TextPortionList& GetTextPortions() const { return aTextPortionList; } - - sal_Int32 GetInvalidPosStart() const { return nInvalidPosStart; } - short GetInvalidDiff() const { return nInvalidDiff; } - - void CorrectValuesBehindLastFormattedLine( sal_Int32 nLastFormattedLine ); -#if OSL_DEBUG_LEVEL > 0 - static bool DbgCheckTextPortions(ParaPortion const&); -#endif -}; - - - -class ParaPortionList -{ - mutable sal_Int32 nLastCache; - std::vector<ParaPortion> maPortions; -public: - ParaPortionList(); - ~ParaPortionList(); - - void Reset(); - tools::Long GetYOffset(const ParaPortion* pPPortion) const; - sal_Int32 FindParagraph(tools::Long nYOffset) const; - - const ParaPortion* SafeGetObject(sal_Int32 nPos) const; - ParaPortion* SafeGetObject(sal_Int32 nPos); - - sal_Int32 GetPos(const ParaPortion* p) const; - ParaPortion& operator[](sal_Int32 nPos); - const ParaPortion& operator[](sal_Int32 nPos) const; - - ParaPortion Remove(sal_Int32 nPos); - ParaPortion& Insert(sal_Int32 nPos, ParaPortion&& p); - void Append(ParaPortion&& p); - sal_Int32 Count() const; - -#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG - // temporary: - static void DbgCheck(ParaPortionList const&, EditDoc const& rDoc); -#endif -}; - - - -class EditSelection -{ -private: - EditPaM aStartPaM; - EditPaM aEndPaM; - -public: - EditSelection(); // No constructor and destructor - // are automatically executed correctly! - EditSelection( const EditPaM& rStartAndAnd ); - EditSelection( const EditPaM& rStart, const EditPaM& rEnd ); - - EditPaM& Min() { return aStartPaM; } - EditPaM& Max() { return aEndPaM; } - - const EditPaM& Min() const { return aStartPaM; } - const EditPaM& Max() const { return aEndPaM; } - - bool HasRange() const { return aStartPaM != aEndPaM; } - bool IsInvalid() const { return !aStartPaM || !aEndPaM; } - bool DbgIsBuggy( EditDoc const & rDoc ) const; - - void Adjust( const EditDoc& rNodes ); - - EditSelection& operator = ( const EditPaM& r ); - bool operator == ( const EditSelection& r ) const - { return ( aStartPaM == r.aStartPaM ) && ( aEndPaM == r.aEndPaM ); } - bool operator != ( const EditSelection& r ) const { return !( r == *this ); } -}; - - - class DeletedNodeInfo { private: @@ -713,27 +100,27 @@ public: }; - +/** Edit document + * + * Holder, responsible for the content nodes and the manipulation of those. + */ class EditDoc { private: - mutable sal_Int32 nLastCache; - std::vector<std::unique_ptr<ContentNode> > maContents; + mutable sal_Int32 mnLastCache; + std::vector<std::unique_ptr<ContentNode>> maContents; - rtl::Reference<SfxItemPool> pItemPool; - Link<LinkParamNone*,void> aModifyHdl; + rtl::Reference<SfxItemPool> mpItemPool; + Link<LinkParamNone*,void> maModifyHdl; - SvxFont aDefFont; //faster than ever from the pool!! - sal_uInt16 nDefTab; - bool bIsVertical:1; + SvxFont maDefFont; //faster than ever from the pool!! + sal_uInt16 mnDefTab; + bool mbIsVertical:1; TextRotation mnRotation; - bool bIsFixedCellHeight:1; + bool mbIsFixedCellHeight:1; - bool bModified:1; - bool bDisableAttributeExpanding:1; - -private: - void ImplDestroyContents(); + bool mbModified:1; + bool mbDisableAttributeExpanding:1; public: EditDoc( SfxItemPool* pItemPool ); @@ -742,33 +129,49 @@ public: void dumpAsXml(xmlTextWriterPtr pWriter) const; void ClearSpellErrors(); - bool IsModified() const { return bModified; } + bool IsModified() const { return mbModified; } void SetModified( bool b ); - void DisableAttributeExpanding() { bDisableAttributeExpanding = true; } + void DisableAttributeExpanding() { mbDisableAttributeExpanding = true; } - void SetModifyHdl( const Link<LinkParamNone*,void>& rLink ) { aModifyHdl = rLink; } + void SetModifyHdl(const Link<LinkParamNone*,void>& rLink) + { + maModifyHdl = rLink; + } void CreateDefFont( bool bUseStyles ); - const SvxFont& GetDefFont() const { return aDefFont; } + const SvxFont& GetDefFont() const { return maDefFont; } - void SetDefTab( sal_uInt16 nTab ) { nDefTab = nTab ? nTab : DEFTAB; } - sal_uInt16 GetDefTab() const { return nDefTab; } + void SetDefTab(sal_uInt16 nTab) + { + mnDefTab = nTab ? nTab : DEFTAB; + } + + sal_uInt16 GetDefTab() const + { + return mnDefTab; + } - void SetVertical( bool bVertical ) { bIsVertical = bVertical; } + void SetVertical( bool bVertical ) { mbIsVertical = bVertical; } bool IsEffectivelyVertical() const; bool IsTopToBottom() const; bool GetVertical() const; void SetRotation( TextRotation nRotation ) { mnRotation = nRotation; } TextRotation GetRotation() const { return mnRotation; } - void SetFixedCellHeight( bool bUseFixedCellHeight ) { bIsFixedCellHeight = bUseFixedCellHeight; } - bool IsFixedCellHeight() const { return bIsFixedCellHeight; } + void SetFixedCellHeight( bool bUseFixedCellHeight ) + { + mbIsFixedCellHeight = bUseFixedCellHeight; + } + bool IsFixedCellHeight() const + { + return mbIsFixedCellHeight; + } EditPaM Clear(); EditPaM RemoveText(); void RemoveChars( EditPaM aPaM, sal_Int32 nChars ); - EditPaM InsertText( EditPaM aPaM, const OUString& rStr ); + EditPaM InsertText( EditPaM aPaM, std::u16string_view rStr ); EditPaM InsertParaBreak( EditPaM aPaM, bool bKeepEndingAttribs ); EditPaM InsertFeature( EditPaM aPaM, const SfxPoolItem& rItem ); EditPaM ConnectParagraphs( ContentNode* pLeft, ContentNode* pRight ); @@ -782,10 +185,14 @@ public: EditPaM GetStartPaM() const; EditPaM GetEndPaM() const; - SfxItemPool& GetItemPool() { return *pItemPool; } - const SfxItemPool& GetItemPool() const { return *pItemPool; } - - void RemoveItemsFromPool(const ContentNode& rNode); + SfxItemPool& GetItemPool() + { + return *mpItemPool; + } + const SfxItemPool& GetItemPool() const + { + return *mpItemPool; + } void InsertAttrib( const SfxPoolItem& rItem, ContentNode* pNode, sal_Int32 nStart, sal_Int32 nEnd ); void InsertAttrib( ContentNode* pNode, sal_Int32 nStart, sal_Int32 nEnd, const SfxPoolItem& rPoolItem ); @@ -798,20 +205,18 @@ public: const ContentNode* GetObject(sal_Int32 nPos) const; ContentNode* GetObject(sal_Int32 nPos); sal_Int32 Count() const; - const ContentNode* operator[](sal_Int32 nPos) const; - ContentNode* operator[](sal_Int32 nPos); - void Insert(sal_Int32 nPos, ContentNode* p); + void Insert(sal_Int32 nPos, std::unique_ptr<ContentNode> p); /// deletes void Remove(sal_Int32 nPos); /// does not delete - void Release(sal_Int32 nPos); + std::unique_ptr<ContentNode> Release(sal_Int32 nPos); static OUString GetSepStr( LineEnd eEnd ); }; -inline EditCharAttrib* GetAttrib(CharAttribList::AttribsType& rAttribs, sal_Int32 nAttr) +inline EditCharAttrib* GetAttrib(CharAttribList::AttribsType& rAttribs, std::size_t nAttr) { - return (nAttr < static_cast<sal_Int32>(rAttribs.size())) ? rAttribs[nAttr].get() : nullptr; + return (nAttr < rAttribs.size()) ? rAttribs[nAttr].get() : nullptr; } #if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG @@ -820,8 +225,6 @@ void CheckOrderedList(const CharAttribList::AttribsType& rAttribs); class EditEngineItemPool final : public SfxItemPool { -private: - std::shared_ptr<DefItems> m_xDefItems; public: EditEngineItemPool(); private: |