| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef _EDITOBJ2_HXX |
| #define _EDITOBJ2_HXX |
| |
| #include <editeng/editobj.hxx> |
| #include <editdoc.hxx> |
| |
| #include <unotools/fontcvt.hxx> |
| |
| |
| class SfxStyleSheetPool; |
| |
| class XEditAttribute |
| { |
| friend class ContentInfo; // fuer DTOR |
| friend class BinTextObject; // fuer DTOR |
| |
| private: |
| const SfxPoolItem* pItem; |
| sal_uInt16 nStart; |
| sal_uInt16 nEnd; |
| |
| XEditAttribute(); |
| XEditAttribute( const XEditAttribute& rCopyFrom ); |
| |
| ~XEditAttribute(); |
| |
| public: |
| XEditAttribute( const SfxPoolItem& rAttr ); |
| XEditAttribute( const SfxPoolItem& rAttr, sal_uInt16 nStart, sal_uInt16 nEnd ); |
| |
| const SfxPoolItem* GetItem() const { return pItem; } |
| |
| sal_uInt16& GetStart() { return nStart; } |
| sal_uInt16& GetEnd() { return nEnd; } |
| |
| sal_uInt16 GetStart() const { return nStart; } |
| sal_uInt16 GetEnd() const { return nEnd; } |
| |
| sal_uInt16 GetLen() const { return nEnd-nStart; } |
| |
| inline sal_Bool IsFeature(); |
| |
| inline bool operator==( const XEditAttribute& rCompare ); |
| }; |
| |
| inline bool XEditAttribute::operator==( const XEditAttribute& rCompare ) |
| { |
| return (nStart == rCompare.nStart) && |
| (nEnd == rCompare.nEnd) && |
| ( (pItem == rCompare.pItem) || |
| ( pItem->Which() != rCompare.pItem->Which()) || |
| (*pItem == *rCompare.pItem)); |
| } |
| |
| inline sal_Bool XEditAttribute::IsFeature() |
| { |
| sal_uInt16 nWhich = pItem->Which(); |
| return ( ( nWhich >= EE_FEATURE_START ) && |
| ( nWhich <= EE_FEATURE_END ) ); |
| } |
| |
| typedef XEditAttribute* XEditAttributePtr; |
| SV_DECL_PTRARR( XEditAttributeListImpl, XEditAttributePtr, 0, 4 ) |
| |
| class XEditAttributeList : public XEditAttributeListImpl |
| { |
| public: |
| XEditAttribute* FindAttrib( sal_uInt16 nWhich, sal_uInt16 nChar ) const; |
| }; |
| |
| struct XParaPortion |
| { |
| long nHeight; |
| sal_uInt16 nFirstLineOffset; |
| |
| EditLineList aLines; |
| TextPortionList aTextPortions; |
| }; |
| |
| typedef XParaPortion* XParaPortionPtr; |
| SV_DECL_PTRARR( XBaseParaPortionList, XParaPortionPtr, 0, 4 ) |
| |
| class XParaPortionList : public XBaseParaPortionList |
| { |
| sal_uIntPtr nRefDevPtr; |
| OutDevType eRefDevType; |
| MapMode aRefMapMode; |
| sal_uLong nPaperWidth; |
| |
| |
| public: |
| XParaPortionList( OutputDevice* pRefDev, sal_uLong nPW ) : |
| aRefMapMode( pRefDev->GetMapMode() ) |
| { |
| nRefDevPtr = (sal_uIntPtr)pRefDev; nPaperWidth = nPW; |
| eRefDevType = pRefDev->GetOutDevType(); |
| } |
| |
| sal_uIntPtr GetRefDevPtr() const { return nRefDevPtr; } |
| sal_uLong GetPaperWidth() const { return nPaperWidth; } |
| OutDevType GetRefDevType() const { return eRefDevType; } |
| const MapMode& GetRefMapMode() const { return aRefMapMode; } |
| }; |
| |
| /* cl removed because not needed anymore since binfilter |
| struct LoadStoreTempInfos |
| { |
| ByteString aOrgString_Load; |
| |
| FontToSubsFontConverter hOldSymbolConv_Store; |
| sal_Bool bSymbolParagraph_Store; |
| |
| |
| LoadStoreTempInfos() { bSymbolParagraph_Store = sal_False; hOldSymbolConv_Store = NULL; } |
| }; |
| */ |
| |
| class ContentInfo |
| { |
| friend class BinTextObject; |
| |
| private: |
| String aText; |
| String aStyle; |
| XEditAttributeList aAttribs; |
| SfxStyleFamily eFamily; |
| SfxItemSet aParaAttribs; |
| WrongList* pWrongs; |
| |
| /* cl removed because not needed anymore since binfilter |
| LoadStoreTempInfos* pTempLoadStoreInfos; |
| */ |
| |
| ContentInfo( SfxItemPool& rPool ); |
| ContentInfo( const ContentInfo& rCopyFrom, SfxItemPool& rPoolToUse ); |
| |
| public: |
| ~ContentInfo(); |
| |
| const String& GetText() const { return aText; } |
| const String& GetStyle() const { return aStyle; } |
| const XEditAttributeList& GetAttribs() const { return aAttribs; } |
| const SfxItemSet& GetParaAttribs() const { return aParaAttribs; } |
| SfxStyleFamily GetFamily() const { return eFamily; } |
| |
| String& GetText() { return aText; } |
| String& GetStyle() { return aStyle; } |
| XEditAttributeList& GetAttribs() { return aAttribs; } |
| SfxItemSet& GetParaAttribs() { return aParaAttribs; } |
| SfxStyleFamily& GetFamily() { return eFamily; } |
| |
| WrongList* GetWrongList() const { return pWrongs; } |
| void SetWrongList( WrongList* p ) { pWrongs = p; } |
| bool operator==( const ContentInfo& rCompare ) const; |
| |
| // #i102062# |
| bool isWrongListEqual(const ContentInfo& rCompare) const; |
| }; |
| |
| typedef ContentInfo* ContentInfoPtr; |
| SV_DECL_PTRARR( ContentInfoList, ContentInfoPtr, 1, 4 ) |
| |
| // MT 05/00: Sollte mal direkt EditTextObjekt werden => keine virtuellen Methoden mehr. |
| |
| class BinTextObject : public EditTextObject, public SfxItemPoolUser |
| { |
| using EditTextObject::operator==; |
| using EditTextObject::isWrongListEqual; |
| |
| private: |
| ContentInfoList aContents; |
| SfxItemPool* pPool; |
| sal_Bool bOwnerOfPool; |
| XParaPortionList* pPortionInfo; |
| |
| sal_uInt32 nObjSettings; |
| sal_uInt16 nMetric; |
| sal_uInt16 nVersion; |
| sal_uInt16 nUserType; |
| sal_uInt16 nScriptType; |
| |
| sal_Bool bVertical; |
| sal_Bool bStoreUnicodeStrings; |
| |
| protected: |
| void DeleteContents(); |
| virtual void StoreData( SvStream& rOStream ) const; |
| virtual void CreateData( SvStream& rIStream ); |
| sal_Bool ImpChangeStyleSheets( const String& rOldName, SfxStyleFamily eOldFamily, |
| const String& rNewName, SfxStyleFamily eNewFamily ); |
| |
| public: |
| BinTextObject( SfxItemPool* pPool ); |
| BinTextObject( const BinTextObject& ); |
| virtual ~BinTextObject(); |
| |
| virtual EditTextObject* Clone() const; |
| |
| sal_uInt16 GetUserType() const; |
| void SetUserType( sal_uInt16 n ); |
| |
| sal_uLong GetObjectSettings() const; |
| void SetObjectSettings( sal_uLong n ); |
| |
| sal_Bool IsVertical() const; |
| void SetVertical( sal_Bool b ); |
| |
| sal_uInt16 GetScriptType() const; |
| void SetScriptType( sal_uInt16 nType ); |
| |
| sal_uInt16 GetVersion() const; // Solange der Outliner keine Recordlaenge speichert |
| |
| ContentInfo* CreateAndInsertContent(); |
| XEditAttribute* CreateAttrib( const SfxPoolItem& rItem, sal_uInt16 nStart, sal_uInt16 nEnd ); |
| void DestroyAttrib( XEditAttribute* pAttr ); |
| |
| ContentInfoList& GetContents() { return aContents; } |
| const ContentInfoList& GetContents() const { return aContents; } |
| SfxItemPool* GetPool() const { return pPool; } |
| XParaPortionList* GetPortionInfo() const { return pPortionInfo; } |
| void SetPortionInfo( XParaPortionList* pP ) |
| { pPortionInfo = pP; } |
| |
| virtual sal_uInt16 GetParagraphCount() const; |
| virtual String GetText( sal_uInt16 nParagraph ) const; |
| virtual void Insert( const EditTextObject& rObj, sal_uInt16 nPara ); |
| virtual EditTextObject* CreateTextObject( sal_uInt16 nPara, sal_uInt16 nParas = 1 ) const; |
| virtual void RemoveParagraph( sal_uInt16 nPara ); |
| |
| virtual sal_Bool HasPortionInfo() const; |
| virtual void ClearPortionInfo(); |
| |
| virtual sal_Bool HasOnlineSpellErrors() const; |
| |
| virtual sal_Bool HasCharAttribs( sal_uInt16 nWhich = 0 ) const; |
| virtual void GetCharAttribs( sal_uInt16 nPara, EECharAttribArray& rLst ) const; |
| |
| virtual sal_Bool RemoveCharAttribs( sal_uInt16 nWhich = 0 ); |
| virtual sal_Bool RemoveParaAttribs( sal_uInt16 nWhich = 0 ); |
| |
| virtual void MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd ); |
| |
| virtual sal_Bool IsFieldObject() const; |
| virtual const SvxFieldItem* GetField() const; |
| virtual sal_Bool HasField( TypeId Type = NULL ) const; |
| |
| SfxItemSet GetParaAttribs( sal_uInt16 nPara ) const; |
| void SetParaAttribs( sal_uInt16 nPara, const SfxItemSet& rAttribs ); |
| |
| virtual sal_Bool HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const; |
| virtual void GetStyleSheet( sal_uInt16 nPara, XubString& rName, SfxStyleFamily& eFamily ) const; |
| virtual void SetStyleSheet( sal_uInt16 nPara, const XubString& rName, const SfxStyleFamily& eFamily ); |
| virtual sal_Bool ChangeStyleSheets( const XubString& rOldName, SfxStyleFamily eOldFamily, |
| const String& rNewName, SfxStyleFamily eNewFamily ); |
| virtual void ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName ); |
| |
| void CreateData300( SvStream& rIStream ); |
| |
| sal_Bool HasMetric() const { return nMetric != 0xFFFF; } |
| sal_uInt16 GetMetric() const { return nMetric; } |
| void SetMetric( sal_uInt16 n ) { nMetric = n; } |
| |
| sal_Bool IsOwnerOfPool() const { return bOwnerOfPool; } |
| void StoreUnicodeStrings( sal_Bool b ) { bStoreUnicodeStrings = b; } |
| |
| /* cl removed because not needed anymore since binfilter |
| void PrepareStore( SfxStyleSheetPool* pStyleSheetPool ); |
| void FinishStore(); |
| void FinishLoad( SfxStyleSheetPool* pStyleSheetPool ); |
| */ |
| |
| bool operator==( const BinTextObject& rCompare ) const; |
| |
| // #i102062# |
| bool isWrongListEqual(const BinTextObject& rCompare) const; |
| |
| // from SfxItemPoolUser |
| virtual void ObjectInDestruction(const SfxItemPool& rSfxItemPool); |
| }; |
| |
| #endif // _EDITOBJ2_HXX |
| |