diff options
Diffstat (limited to 'editeng/source/editeng/editdoc.hxx')
-rw-r--r-- | editeng/source/editeng/editdoc.hxx | 827 |
1 files changed, 0 insertions, 827 deletions
diff --git a/editeng/source/editeng/editdoc.hxx b/editeng/source/editeng/editdoc.hxx deleted file mode 100644 index 055c48d3f5..0000000000 --- a/editeng/source/editeng/editdoc.hxx +++ /dev/null @@ -1,827 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _EDITDOC_HXX -#define _EDITDOC_HXX - -#include <com/sun/star/i18n/XExtendedInputSequenceChecker.hpp> - -#include <editattr.hxx> -#include <edtspell.hxx> -#include <editeng/svxfont.hxx> -#include <svl/itemset.hxx> -#include <svl/style.hxx> -#include <svl/itempool.hxx> -#include <tools/table.hxx> -#include <vector> - -#include <deque> - -class ImpEditEngine; -class SvxTabStop; -class SvtCTLOptions; - -DBG_NAMEEX( EE_TextPortion ) - -#define CHARPOSGROW 16 -#define DEFTAB 720 - -void CreateFont( SvxFont& rFont, const SfxItemSet& rSet, bool bSearchInParent = true, short nScriptType = 0 ); -sal_uInt16 GetScriptItemId( sal_uInt16 nItemId, short nScriptType ); -sal_Bool IsScriptItemValid( sal_uInt16 nItemId, short nScriptType ); - -EditCharAttrib* MakeCharAttrib( SfxItemPool& rPool, const SfxPoolItem& rAttr, sal_uInt16 nS, sal_uInt16 nE ); - -class ContentNode; -class EditDoc; - -struct EPaM -{ - sal_uInt16 nPara; - sal_uInt16 nIndex; - - EPaM() { nPara = 0; nIndex = 0; } - EPaM( sal_uInt16 nP, sal_uInt16 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 sal_Bool operator == ( const EPaM& r ) const; - inline sal_Bool operator < ( const EPaM& r ) const; -}; - -inline sal_Bool EPaM::operator < ( const EPaM& r ) const -{ - return ( ( nPara < r.nPara ) || - ( ( nPara == r.nPara ) && nIndex < r.nIndex ) ) ? sal_True : sal_False; -} - -inline sal_Bool EPaM::operator == ( const EPaM& r ) const -{ - return ( ( nPara == r.nPara ) && ( nIndex == r.nIndex ) ) ? sal_True : sal_False; -} - -struct ScriptTypePosInfo -{ - short nScriptType; - sal_uInt16 nStartPos; - sal_uInt16 nEndPos; - - ScriptTypePosInfo( short _Type, sal_uInt16 _Start, sal_uInt16 _End ) - { - nScriptType = _Type; - nStartPos = _Start; - nEndPos = _End; - } -}; - -typedef std::deque< ScriptTypePosInfo > ScriptTypePosInfos; - -struct WritingDirectionInfo -{ - sal_uInt8 nType; - sal_uInt16 nStartPos; - sal_uInt16 nEndPos; - - WritingDirectionInfo( sal_uInt8 _Type, sal_uInt16 _Start, sal_uInt16 _End ) - { - nType = _Type; - nStartPos = _Start; - nEndPos = _End; - } -}; - - -typedef std::deque< WritingDirectionInfo > WritingDirectionInfos; - -typedef EditCharAttrib* EditCharAttribPtr; -SV_DECL_PTRARR( CharAttribArray, EditCharAttribPtr, 0, 4 ) - -class ContentAttribsInfo -{ -private: - SfxItemSet aPrevParaAttribs; - CharAttribArray aPrevCharAttribs; - -public: - ContentAttribsInfo( const SfxItemSet& rParaAttribs ); - - const SfxItemSet& GetPrevParaAttribs() const { return aPrevParaAttribs; } - const CharAttribArray& GetPrevCharAttribs() const { return aPrevCharAttribs; } - - CharAttribArray& GetPrevCharAttribs() { return aPrevCharAttribs; } -}; - -typedef ContentAttribsInfo* ContentAttribsInfoPtr; -SV_DECL_PTRARR( ContentInfoArray, ContentAttribsInfoPtr, 1, 1 ) - -// ---------------------------------------------------------------------- -// class SvxFontTable -// ---------------------------------------------------------------------- -DECLARE_TABLE( DummyFontTable, SvxFontItem* ) - -class SvxFontTable : public DummyFontTable -{ -public: - SvxFontTable(); - ~SvxFontTable(); - - sal_uLong GetId( const SvxFontItem& rFont ); -}; - -// ---------------------------------------------------------------------- -// class SvxColorList -// ---------------------------------------------------------------------- -typedef ContentNode* ContentNodePtr; -typedef ::std::vector< SvxColorItem* > DummyColorList; - -class SvxColorList -{ -private: - DummyColorList aColorList; - -public: - SvxColorList(); - ~SvxColorList(); - - size_t GetId( const SvxColorItem& rColor ); - size_t Count() { return aColorList.size(); }; - void Insert( SvxColorItem* pItem, size_t nIndex ); - SvxColorItem* GetObject( size_t nIndex ); -}; - -// ---------------------------------------------------------------------- -// class ItemList -// ---------------------------------------------------------------------- -typedef const SfxPoolItem* ConstPoolItemPtr; -typedef ::std::vector< ConstPoolItemPtr > DummyItemList; - -class ItemList -{ -private: - DummyItemList aItemPool; - size_t CurrentItem; - -public: - ItemList(); - const SfxPoolItem* FindAttrib( sal_uInt16 nWhich ); - const SfxPoolItem* First(); - const SfxPoolItem* Next(); - size_t Count() { return aItemPool.size(); }; - void Insert( const SfxPoolItem* pItem ); - void Clear() { aItemPool.clear(); }; -}; - -// ------------------------------------------------------------------------- -// class ContentAttribs -// ------------------------------------------------------------------------- -class ContentAttribs -{ -private: - SfxStyleSheet* pStyle; - SfxItemSet aAttribSet; - -public: - ContentAttribs( SfxItemPool& rItemPool ); - ContentAttribs( const ContentAttribs& ); - ~ContentAttribs(); // only for larger Tabs - - SvxTabStop FindTabStop( long nCurPos, sal_uInt16 nDefTab ); - SfxItemSet& GetItems() { return aAttribSet; } - SfxStyleSheet* GetStyleSheet() const { return pStyle; } - void SetStyleSheet( SfxStyleSheet* pS ); - - const SfxPoolItem& GetItem( sal_uInt16 nWhich ); - sal_Bool HasItem( sal_uInt16 nWhich ); -}; - -// ------------------------------------------------------------------------- -// class CharAttribList -// ------------------------------------------------------------------------- -class CharAttribList -{ -private: - CharAttribArray aAttribs; - SvxFont aDefFont; // faster than ever from the pool! - sal_Bool bHasEmptyAttribs; - - CharAttribList( const CharAttribList& ) {;} - -public: - CharAttribList(); - ~CharAttribList(); - - void DeleteEmptyAttribs( SfxItemPool& rItemPool ); - void RemoveItemsFromPool( SfxItemPool* pItemPool ); - - EditCharAttrib* FindAttrib( sal_uInt16 nWhich, sal_uInt16 nPos ); - EditCharAttrib* FindNextAttrib( sal_uInt16 nWhich, sal_uInt16 nFromPos ) const; - EditCharAttrib* FindEmptyAttrib( sal_uInt16 nWhich, sal_uInt16 nPos ); - EditCharAttrib* FindFeature( sal_uInt16 nPos ) const; - - - void ResortAttribs(); - void OptimizeRanges( SfxItemPool& rItemPool ); - - sal_uInt16 Count() { return aAttribs.Count(); } - void Clear() { aAttribs.Remove( 0, aAttribs.Count()); } - void InsertAttrib( EditCharAttrib* pAttrib ); - - SvxFont& GetDefFont() { return aDefFont; } - - sal_Bool HasEmptyAttribs() const { return bHasEmptyAttribs; } - sal_Bool& HasEmptyAttribs() { return bHasEmptyAttribs; } - sal_Bool HasBoundingAttrib( sal_uInt16 nBound ); - sal_Bool HasAttrib( sal_uInt16 nWhich ) const; - sal_Bool HasAttrib( sal_uInt16 nStartPos, sal_uInt16 nEndPos ) const; - - CharAttribArray& GetAttribs() { return aAttribs; } - const CharAttribArray& GetAttribs() const { return aAttribs; } - - // Debug: - sal_Bool DbgCheckAttribs(); -}; - -// ------------------------------------------------------------------------- -// class ContentNode -// ------------------------------------------------------------------------- -class ContentNode : public XubString -{ -private: - ContentAttribs aContentAttribs; - CharAttribList aCharAttribList; - WrongList* pWrongList; - -public: - ContentNode( SfxItemPool& rItemPool ); - ContentNode( const XubString& rStr, const ContentAttribs& rContentAttribs ); - ~ContentNode(); - - ContentAttribs& GetContentAttribs() { return aContentAttribs; } - CharAttribList& GetCharAttribs() { return aCharAttribList; } - - void ExpandAttribs( sal_uInt16 nIndex, sal_uInt16 nNewChars, SfxItemPool& rItemPool ); - void CollapsAttribs( sal_uInt16 nIndex, sal_uInt16 nDelChars, SfxItemPool& rItemPool ); - void AppendAttribs( ContentNode* pNextNode ); - void CopyAndCutAttribs( ContentNode* pPrevNode, SfxItemPool& rPool, sal_Bool bKeepEndingAttribs ); - - void SetStyleSheet( SfxStyleSheet* pS, sal_Bool bRecalcFont = sal_True ); - void SetStyleSheet( SfxStyleSheet* pS, const SvxFont& rFontFromStyle ); - SfxStyleSheet* GetStyleSheet() { return aContentAttribs.GetStyleSheet(); } - - void CreateDefFont(); - - WrongList* GetWrongList() { return pWrongList; } - void SetWrongList( WrongList* p ); - - void CreateWrongList(); - void DestroyWrongList(); - - sal_Bool IsFeature( sal_uInt16 nPos ) const { return ( GetChar( nPos ) == CH_FEATURE ); } -}; - -typedef ContentNode* ContentNodePtr; -SV_DECL_PTRARR( DummyContentList, ContentNodePtr, 0, 4 ) - -class ContentList : public DummyContentList -{ - sal_uInt16 nLastCache; -public: - ContentList() : DummyContentList( 0, 4 ), nLastCache(0) {} - sal_uInt16 GetPos( const ContentNodePtr &rPtr ) const; -}; - -// ------------------------------------------------------------------------- -// class EditPaM -// ------------------------------------------------------------------------- -class EditPaM -{ -private: - ContentNode* pNode; - sal_uInt16 nIndex; - -public: - EditPaM() { pNode = NULL; nIndex = 0; } - EditPaM( ContentNode* p, sal_uInt16 n ) { pNode = p; nIndex = n; } - - ContentNode* GetNode() const { return pNode; } - void SetNode( ContentNode* p) { pNode = p; } - - sal_uInt16 GetIndex() const { return nIndex; } - sal_uInt16& GetIndex() { return nIndex; } - void SetIndex( sal_uInt16 n ) { nIndex = n; } - - sal_Bool IsParaStart() const { return nIndex == 0; } - sal_Bool IsParaEnd() const { return nIndex == pNode->Len(); } - - sal_Bool DbgIsBuggy( EditDoc& rDoc ); - - EditPaM& operator = ( const EditPaM& rPaM ); - friend sal_Bool operator == ( const EditPaM& r1, const EditPaM& r2 ); - friend sal_Bool operator != ( const EditPaM& r1, const EditPaM& r2 ); -}; - -#define PORTIONKIND_TEXT 0 -#define PORTIONKIND_TAB 1 -#define PORTIONKIND_LINEBREAK 2 -#define PORTIONKIND_FIELD 3 -#define PORTIONKIND_HYPHENATOR 4 - -#define DELMODE_SIMPLE 0 -#define DELMODE_RESTOFWORD 1 -#define DELMODE_RESTOFCONTENT 2 - -#define CHAR_NORMAL 0x00 -#define CHAR_KANA 0x01 -#define CHAR_PUNCTUATIONLEFT 0x02 -#define CHAR_PUNCTUATIONRIGHT 0x04 - -// ------------------------------------------------------------------------- -// struct ExtraPortionInfos -// ------------------------------------------------------------------------- -struct ExtraPortionInfo -{ - long nOrgWidth; - long nWidthFullCompression; - - long nPortionOffsetX; - - sal_uInt16 nMaxCompression100thPercent; - - sal_uInt8 nAsianCompressionTypes; - sal_Bool bFirstCharIsRightPunktuation; - sal_Bool bCompressed; - - sal_Int32* pOrgDXArray; - - - ExtraPortionInfo(); - ~ExtraPortionInfo(); - - void SaveOrgDXArray( const sal_Int32* pDXArray, sal_uInt16 nLen ); -}; - - -// ------------------------------------------------------------------------- -// class TextPortion -// ------------------------------------------------------------------------- -class TextPortion -{ -private: - ExtraPortionInfo* pExtraInfos; - sal_uInt16 nLen; - Size aOutSz; - sal_uInt8 nKind; - sal_uInt8 nRightToLeft; - sal_Unicode nExtraValue; - - - TextPortion() { DBG_CTOR( EE_TextPortion, 0 ); - pExtraInfos = NULL; nLen = 0; nKind = PORTIONKIND_TEXT; nExtraValue = 0; nRightToLeft = sal_False;} - -public: - TextPortion( sal_uInt16 nL ) : aOutSz( -1, -1 ) - { DBG_CTOR( EE_TextPortion, 0 ); - pExtraInfos = NULL; nLen = nL; nKind = PORTIONKIND_TEXT; nExtraValue = 0; nRightToLeft = sal_False;} - TextPortion( const TextPortion& r ) : aOutSz( r.aOutSz ) - { DBG_CTOR( EE_TextPortion, 0 ); - pExtraInfos = NULL; nLen = r.nLen; nKind = r.nKind; nExtraValue = r.nExtraValue; nRightToLeft = r.nRightToLeft; } - - ~TextPortion() { DBG_DTOR( EE_TextPortion, 0 ); delete pExtraInfos; } - - sal_uInt16 GetLen() const { return nLen; } - sal_uInt16& GetLen() { return nLen; } - void SetLen( sal_uInt16 nL ) { nLen = nL; } - - Size& GetSize() { return aOutSz; } - Size GetSize() const { return aOutSz; } - - sal_uInt8& GetKind() { return nKind; } - sal_uInt8 GetKind() const { return nKind; } - - void SetRightToLeft( sal_uInt8 b ) { nRightToLeft = b; } - sal_uInt8 GetRightToLeft() const { return nRightToLeft; } - sal_Bool IsRightToLeft() const { return (nRightToLeft&1); } - - sal_Unicode GetExtraValue() const { return nExtraValue; } - void SetExtraValue( sal_Unicode n ) { nExtraValue = n; } - - sal_Bool HasValidSize() const { return aOutSz.Width() != (-1); } - - ExtraPortionInfo* GetExtraInfos() const { return pExtraInfos; } - void SetExtraInfos( ExtraPortionInfo* p ) { delete pExtraInfos; pExtraInfos = p; } -}; - -// ------------------------------------------------------------------------- -// class TextPortionList -// ------------------------------------------------------------------------- -typedef TextPortion* TextPortionPtr; -SV_DECL_PTRARR( TextPortionArray, TextPortionPtr, 0, 8 ) - -class TextPortionList : public TextPortionArray -{ -public: - TextPortionList(); - ~TextPortionList(); - - void Reset(); - sal_uInt16 FindPortion( sal_uInt16 nCharPos, sal_uInt16& rPortionStart, sal_Bool bPreferStartingPortion = sal_False ); - sal_uInt16 GetStartPos( sal_uInt16 nPortion ); - void DeleteFromPortion( sal_uInt16 nDelFrom ); -}; - -class ParaPortion; - -SV_DECL_VARARR( CharPosArray, sal_Int32, 0, CHARPOSGROW ) - -// ------------------------------------------------------------------------ -// class EditLine -// ------------------------------------------------------------------------- -class EditLine -{ -private: - CharPosArray aPositions; - long nTxtWidth; - sal_uInt16 nStartPosX; - sal_uInt16 nStart; // could be replaced by nStartPortion - sal_uInt16 nEnd; // could be replaced by nEndPortion - sal_uInt16 nStartPortion; - sal_uInt16 nEndPortion; - sal_uInt16 nHeight; // Total height of the line - sal_uInt16 nTxtHeight; // Pure Text height - sal_uInt16 nCrsrHeight; // For contour flow high lines => cursor is large. - sal_uInt16 nMaxAscent; - sal_Bool bHangingPunctuation; - sal_Bool bInvalid; // for skillful formatting - -public: - EditLine(); - EditLine( const EditLine& ); - ~EditLine(); - - sal_Bool IsIn( sal_uInt16 nIndex ) const - { return ( (nIndex >= nStart ) && ( nIndex < nEnd ) ); } - - sal_Bool IsIn( sal_uInt16 nIndex, sal_Bool bInclEnd ) const - { return ( ( nIndex >= nStart ) && ( bInclEnd ? ( nIndex <= nEnd ) : ( nIndex < nEnd ) ) ); } - - void SetStart( sal_uInt16 n ) { nStart = n; } - sal_uInt16 GetStart() const { return nStart; } - sal_uInt16& GetStart() { return nStart; } - - void SetEnd( sal_uInt16 n ) { nEnd = n; } - sal_uInt16 GetEnd() const { return nEnd; } - sal_uInt16& GetEnd() { return nEnd; } - - void SetStartPortion( sal_uInt16 n ) { nStartPortion = n; } - sal_uInt16 GetStartPortion() const { return nStartPortion; } - sal_uInt16& GetStartPortion() { return nStartPortion; } - - void SetEndPortion( sal_uInt16 n ) { nEndPortion = n; } - sal_uInt16 GetEndPortion() const { return nEndPortion; } - sal_uInt16& GetEndPortion() { return nEndPortion; } - - void SetHeight( sal_uInt16 nH, sal_uInt16 nTxtH = 0, sal_uInt16 nCrsrH = 0 ) - { nHeight = nH; - nTxtHeight = ( nTxtH ? nTxtH : nH ); - nCrsrHeight = ( nCrsrH ? nCrsrH : nTxtHeight ); - } - sal_uInt16 GetHeight() const { return nHeight; } - sal_uInt16 GetTxtHeight() const { return nTxtHeight; } - sal_uInt16 GetCrsrHeight() const { return nCrsrHeight; } - - void SetTextWidth( long n ) { nTxtWidth = n; } - long GetTextWidth() const { return nTxtWidth; } - - void SetMaxAscent( sal_uInt16 n ) { nMaxAscent = n; } - sal_uInt16 GetMaxAscent() const { return nMaxAscent; } - - void SetHangingPunctuation( sal_Bool b ) { bHangingPunctuation = b; } - sal_Bool IsHangingPunctuation() const { return bHangingPunctuation; } - - sal_uInt16 GetLen() const { return nEnd - nStart; } - - sal_uInt16 GetStartPosX() const { return nStartPosX; } - void SetStartPosX( sal_uInt16 start ) { nStartPosX = start; } - - Size CalcTextSize( ParaPortion& rParaPortion ); - - sal_Bool IsInvalid() const { return bInvalid; } - sal_Bool IsValid() const { return !bInvalid; } - void SetInvalid() { bInvalid = sal_True; } - void SetValid() { bInvalid = sal_False; } - - sal_Bool IsEmpty() const { return (nEnd > nStart) ? sal_False : sal_True; } - - CharPosArray& GetCharPosArray() { return aPositions; } - - EditLine* Clone() const; - - EditLine& operator = ( const EditLine& rLine ); - friend sal_Bool operator == ( const EditLine& r1, const EditLine& r2 ); - friend sal_Bool operator != ( const EditLine& r1, const EditLine& r2 ); -}; - - -// ------------------------------------------------------------------------- -// class LineList -// ------------------------------------------------------------------------- -typedef EditLine* EditLinePtr; -SV_DECL_PTRARR( LineArray, EditLinePtr, 0, 4 ) - -class EditLineList : public LineArray -{ -public: - EditLineList(); - ~EditLineList(); - - void Reset(); - void DeleteFromLine( sal_uInt16 nDelFrom ); - sal_uInt16 FindLine( sal_uInt16 nChar, sal_Bool bInclEnd ); -}; - -// ------------------------------------------------------------------------- -// class ParaPortion -// ------------------------------------------------------------------------- -class ParaPortion -{ - friend class ImpEditEngine; // to adjust the height -private: - EditLineList aLineList; - TextPortionList aTextPortionList; - ContentNode* pNode; - long nHeight; - - ScriptTypePosInfos aScriptInfos; - WritingDirectionInfos aWritingDirectionInfos; - - sal_uInt16 nInvalidPosStart; - sal_uInt16 nFirstLineOffset; // For Writer-LineSpacing-Interpretation - sal_uInt16 nBulletX; - short nInvalidDiff; - - sal_Bool bInvalid : 1; - sal_Bool bSimple : 1; // only linear Tap - sal_Bool bVisible : 1; // Belongs to the node! - sal_Bool bForceRepaint : 1; - - ParaPortion( const ParaPortion& ); - -public: - ParaPortion( ContentNode* pNode ); - ~ParaPortion(); - - sal_uInt16 GetLineNumber( sal_uInt16 nIndex ); - - EditLineList& GetLines() { return aLineList; } - - sal_Bool IsInvalid() const { return bInvalid; } - sal_Bool IsSimpleInvalid() const { return bSimple; } - void SetValid() { bInvalid = sal_False; bSimple = sal_True;} - - sal_Bool MustRepaint() const { return bForceRepaint; } - void SetMustRepaint( sal_Bool bRP ) { bForceRepaint = bRP; } - - sal_uInt16 GetBulletX() const { return nBulletX; } - void SetBulletX( sal_uInt16 n ) { nBulletX = n; } - - void MarkInvalid( sal_uInt16 nStart, short nDiff); - void MarkSelectionInvalid( sal_uInt16 nStart, sal_uInt16 nEnd ); - - void SetVisible( sal_Bool bVisible ); - sal_Bool IsVisible() { return bVisible; } - - sal_Bool IsEmpty() { return GetTextPortions().Count() == 1 && GetTextPortions()[0]->GetLen() == 0; } - - long GetHeight() const { return ( bVisible ? nHeight : 0 ); } - sal_uInt16 GetFirstLineOffset() const { return ( bVisible ? nFirstLineOffset : 0 ); } - void ResetHeight() { nHeight = 0; nFirstLineOffset = 0; } - - ContentNode* GetNode() const { return pNode; } - TextPortionList& GetTextPortions() { return aTextPortionList; } - - sal_uInt16 GetInvalidPosStart() const { return nInvalidPosStart; } - short GetInvalidDiff() const { return nInvalidDiff; } - - void CorrectValuesBehindLastFormattedLine( sal_uInt16 nLastFormattedLine ); - - sal_Bool DbgCheckTextPortions(); -}; - -typedef ParaPortion* ParaPortionPtr; -SV_DECL_PTRARR( DummyParaPortionList, ParaPortionPtr, 0, 4 ) - -// ------------------------------------------------------------------------- -// class ParaPortionList -// ------------------------------------------------------------------------- -class ParaPortionList : public DummyParaPortionList -{ - sal_uInt16 nLastCache; -public: - ParaPortionList(); - ~ParaPortionList(); - - void Reset(); - long GetYOffset( ParaPortion* pPPortion ); - sal_uInt16 FindParagraph( long nYOffset ); - - inline ParaPortion* SaveGetObject( sal_uInt16 nPos ) const - { return ( nPos < Count() ) ? GetObject( nPos ) : 0; } - - sal_uInt16 GetPos( const ParaPortionPtr &rPtr ) const; - - // temporary: - void DbgCheck( EditDoc& rDoc ); -}; - -// ------------------------------------------------------------------------- -// class EditSelection -// ------------------------------------------------------------------------- -class EditSelection -{ -private: - EditPaM aStartPaM; - EditPaM aEndPaM; - -public: - EditSelection(); // No constructor and destructor - // are automtically excecuted 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; } - - sal_Bool HasRange() const { return aStartPaM != aEndPaM; } - sal_Bool IsInvalid() const; - sal_Bool DbgIsBuggy( EditDoc& rDoc ); - - sal_Bool Adjust( const ContentList& rNodes ); - - EditSelection& operator = ( const EditPaM& r ); - sal_Bool operator == ( const EditSelection& r ) const - { return ( ( aStartPaM == r.aStartPaM ) && ( aEndPaM == r.aEndPaM ) ) - ? sal_True : sal_False; } - sal_Bool operator != ( const EditSelection& r ) const { return !( r == *this ); } -}; - -// ------------------------------------------------------------------------- -// class DeletedNodeInfo -// ------------------------------------------------------------------------- -class DeletedNodeInfo -{ -private: - sal_uIntPtr nInvalidAdressPtr; - sal_uInt16 nInvalidParagraph; - -public: - DeletedNodeInfo( sal_uIntPtr nInvAdr, sal_uInt16 nPos ) - { nInvalidAdressPtr = nInvAdr; - nInvalidParagraph = nPos; } - - sal_uIntPtr GetInvalidAdress() { return nInvalidAdressPtr; } - sal_uInt16 GetPosition() { return nInvalidParagraph; } -}; - -typedef DeletedNodeInfo* DeletedNodeInfoPtr; -SV_DECL_PTRARR( DeletedNodesList, DeletedNodeInfoPtr, 0, 4 ) - -// ------------------------------------------------------------------------- -// class EditDoc -// ------------------------------------------------------------------------- -class EditDoc : public ContentList -{ -private: - SfxItemPool* pItemPool; - Link aModifyHdl; - - SvxFont aDefFont; //faster than ever from the pool!! - sal_uInt16 nDefTab; - sal_Bool bIsVertical; - sal_Bool bIsFixedCellHeight; - - sal_Bool bOwnerOfPool; - sal_Bool bModified; - -protected: - void ImplDestroyContents(); - -public: - EditDoc( SfxItemPool* pItemPool ); - ~EditDoc(); - - sal_Bool IsModified() const { return bModified; } - void SetModified( sal_Bool b ); - - void SetModifyHdl( const Link& rLink ) { aModifyHdl = rLink; } - Link GetModifyHdl() const { return aModifyHdl; } - - void CreateDefFont( sal_Bool bUseStyles ); - const SvxFont& GetDefFont() { return aDefFont; } - - void SetDefTab( sal_uInt16 nTab ) { nDefTab = nTab ? nTab : DEFTAB; } - sal_uInt16 GetDefTab() const { return nDefTab; } - - void SetVertical( sal_Bool bVertical ) { bIsVertical = bVertical; } - sal_Bool IsVertical() const { return bIsVertical; } - - void SetFixedCellHeight( sal_Bool bUseFixedCellHeight ) { bIsFixedCellHeight = bUseFixedCellHeight; } - sal_Bool IsFixedCellHeight() const { return bIsFixedCellHeight; } - - EditPaM Clear(); - EditPaM RemoveText(); - EditPaM RemoveChars( EditPaM aPaM, sal_uInt16 nChars ); - void InsertText( const EditPaM& rPaM, xub_Unicode c ); - EditPaM InsertText( EditPaM aPaM, const XubString& rStr ); - EditPaM InsertParaBreak( EditPaM aPaM, sal_Bool bKeepEndingAttribs ); - EditPaM InsertFeature( EditPaM aPaM, const SfxPoolItem& rItem ); - EditPaM ConnectParagraphs( ContentNode* pLeft, ContentNode* pRight ); - - String GetText( LineEnd eEnd ) const; - sal_uLong GetTextLen() const; - - XubString GetParaAsString( sal_uInt16 nNode ) const; - XubString GetParaAsString( ContentNode* pNode, sal_uInt16 nStartPos = 0, sal_uInt16 nEndPos = 0xFFFF, sal_Bool bResolveFields = sal_True ) const; - - inline EditPaM GetStartPaM() const; - inline EditPaM GetEndPaM() const; - - SfxItemPool& GetItemPool() { return *pItemPool; } - const SfxItemPool& GetItemPool() const { return *pItemPool; } - - void RemoveItemsFromPool( ContentNode* pNode ); - - void InsertAttrib( const SfxPoolItem& rItem, ContentNode* pNode, sal_uInt16 nStart, sal_uInt16 nEnd ); - void InsertAttrib( ContentNode* pNode, sal_uInt16 nStart, sal_uInt16 nEnd, const SfxPoolItem& rPoolItem ); - void InsertAttribInSelection( ContentNode* pNode, sal_uInt16 nStart, sal_uInt16 nEnd, const SfxPoolItem& rPoolItem ); - sal_Bool RemoveAttribs( ContentNode* pNode, sal_uInt16 nStart, sal_uInt16 nEnd, sal_uInt16 nWhich = 0 ); - sal_Bool RemoveAttribs( ContentNode* pNode, sal_uInt16 nStart, sal_uInt16 nEnd, EditCharAttrib*& rpStarting, EditCharAttrib*& rpEnding, sal_uInt16 nWhich = 0 ); - void FindAttribs( ContentNode* pNode, sal_uInt16 nStartPos, sal_uInt16 nEndPos, SfxItemSet& rCurSet ); - - sal_uInt16 GetPos( ContentNode* pNode ) const { return ContentList::GetPos(pNode); } - ContentNode* SaveGetObject( sal_uInt16 nPos ) const { return ( nPos < Count() ) ? GetObject( nPos ) : 0; } - - static XubString GetSepStr( LineEnd eEnd ); -}; - -inline EditPaM EditDoc::GetStartPaM() const -{ - return EditPaM( GetObject( 0 ), 0 ); -} - -inline EditPaM EditDoc::GetEndPaM() const -{ - ContentNode* pLastNode = GetObject( Count()-1 ); - return EditPaM( pLastNode, pLastNode->Len() ); -} - -inline EditCharAttrib* GetAttrib( const CharAttribArray& rAttribs, sal_uInt16 nAttr ) -{ - return ( nAttr < rAttribs.Count() ) ? rAttribs[nAttr] : 0; -} - -sal_Bool CheckOrderedList( CharAttribArray& rAttribs, sal_Bool bStart ); - -// ------------------------------------------------------------------------- -// class EditEngineItemPool -// ------------------------------------------------------------------------- -class EditEngineItemPool : public SfxItemPool -{ -public: - EditEngineItemPool( sal_Bool bPersistenRefCounts ); -protected: - virtual ~EditEngineItemPool(); -public: - - virtual SvStream& Store( SvStream& rStream ) const; -}; - -#endif // _EDITDOC_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |