diff options
author | Kohei Yoshida <kohei.yoshida@gmail.com> | 2013-01-08 15:33:56 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@gmail.com> | 2013-01-08 21:03:51 -0500 |
commit | 4da3a0108468a3e7fd4aae32129b9c0fbe4635a4 (patch) | |
tree | 5ca80448d1228875c0a3c71d0d6fe39153e7792e /editeng/source | |
parent | 678de8255795e7f3b654bf2022da26a4fdb48775 (diff) |
Turn EditTextObjectImpl into a real impl class.
Change-Id: I0f0bba62da60a3397b733253dbc0891c69bd5b9c
Diffstat (limited to 'editeng/source')
-rw-r--r-- | editeng/source/editeng/editobj.cxx | 249 | ||||
-rw-r--r-- | editeng/source/editeng/editobj2.hxx | 82 | ||||
-rw-r--r-- | editeng/source/editeng/fieldupdater.cxx | 2 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.hxx | 4 | ||||
-rw-r--r-- | editeng/source/editeng/impedit4.cxx | 42 |
5 files changed, 183 insertions, 196 deletions
diff --git a/editeng/source/editeng/editobj.cxx b/editeng/source/editeng/editobj.cxx index e4fa4cb61e25..06a2d34f94e5 100644 --- a/editeng/source/editeng/editobj.cxx +++ b/editeng/source/editeng/editobj.cxx @@ -179,188 +179,180 @@ bool ContentInfo::operator!=(const ContentInfo& rCompare) const return !operator==(rCompare); } -EditTextObject::EditTextObject() +EditTextObject::EditTextObject( SfxItemPool* pPool ) : + mpImpl(new EditTextObjectImpl(this, pPool)) { - DBG_CTOR( EE_EditTextObject, 0 ); } -EditTextObject::EditTextObject( const EditTextObject& ) +EditTextObject::EditTextObject( const EditTextObject& r ) : + mpImpl(new EditTextObjectImpl(this, *r.mpImpl)) { - DBG_CTOR( EE_EditTextObject, 0 ); } EditTextObject::~EditTextObject() { - DBG_DTOR( EE_EditTextObject, 0 ); + delete mpImpl; } size_t EditTextObject::GetParagraphCount() const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return 0; + return mpImpl->GetParagraphCount(); } -String EditTextObject::GetText(size_t /* nParagraph */) const +String EditTextObject::GetText(size_t nPara) const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return String(); + return mpImpl->GetText(nPara); } -void EditTextObject::Insert(const EditTextObject& /* rObj */, size_t /* nPara */) +void EditTextObject::Insert(const EditTextObject& rObj, size_t nPara) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + mpImpl->Insert(rObj, nPara); } -EditTextObject* EditTextObject::CreateTextObject(size_t /*nPara*/, size_t /*nParas*/) const +EditTextObject* EditTextObject::CreateTextObject(size_t nPara, size_t nParas) const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return 0; + return mpImpl->CreateTextObject(nPara, nParas); } -void EditTextObject::RemoveParagraph(size_t /*nPara*/) +void EditTextObject::RemoveParagraph(size_t nPara) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + mpImpl->RemoveParagraph(nPara); } -sal_Bool EditTextObject::HasPortionInfo() const +bool EditTextObject::HasPortionInfo() const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return false; + return mpImpl->HasPortionInfo(); } void EditTextObject::ClearPortionInfo() { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + mpImpl->ClearPortionInfo(); } -sal_Bool EditTextObject::HasOnlineSpellErrors() const +bool EditTextObject::HasOnlineSpellErrors() const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return false; + return mpImpl->HasOnlineSpellErrors(); } -sal_Bool EditTextObject::HasCharAttribs( sal_uInt16 ) const +bool EditTextObject::HasCharAttribs( sal_uInt16 nWhich ) const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return false; + return mpImpl->HasCharAttribs(nWhich); } -void EditTextObject::GetCharAttribs( sal_uInt16 /*nPara*/, std::vector<EECharAttrib>& /*rLst*/ ) const +void EditTextObject::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + mpImpl->GetCharAttribs(nPara, rLst); } -void EditTextObject::MergeParaAttribs( const SfxItemSet& /*rAttribs*/, sal_uInt16 /*nStart*/, sal_uInt16 /*nEnd*/ ) +void EditTextObject::MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd ) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + mpImpl->MergeParaAttribs(rAttribs, nStart, nEnd); } -sal_Bool EditTextObject::IsFieldObject() const +bool EditTextObject::IsFieldObject() const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return false; + return mpImpl->IsFieldObject(); } const SvxFieldItem* EditTextObject::GetField() const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return 0; + return mpImpl->GetField(); } -SfxItemSet EditTextObject::GetParaAttribs(size_t /*nPara*/) const +bool EditTextObject::HasField( sal_Int32 nType ) const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return SfxItemSet( *(SfxItemPool*)NULL ); + return mpImpl->HasField(nType); } -void EditTextObject::SetParaAttribs(size_t /*nPara*/, const SfxItemSet& /*rAttribs*/) +const SfxItemSet& EditTextObject::GetParaAttribs(size_t nPara) const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + return mpImpl->GetParaAttribs(nPara); } -sal_Bool EditTextObject::RemoveCharAttribs( sal_uInt16 /*nWhich*/ ) +void EditTextObject::SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return false; + mpImpl->SetParaAttribs(nPara, rAttribs); } -sal_Bool EditTextObject::RemoveParaAttribs( sal_uInt16 /*nWhich*/ ) +bool EditTextObject::RemoveCharAttribs( sal_uInt16 nWhich ) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return false; + return mpImpl->RemoveCharAttribs(nWhich); } -sal_Bool EditTextObject::HasStyleSheet( const XubString& /*rName*/, SfxStyleFamily /*eFamily*/ ) const +bool EditTextObject::RemoveParaAttribs( sal_uInt16 nWhich ) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return false; + return mpImpl->RemoveParaAttribs(nWhich); } -void EditTextObject::GetStyleSheet(size_t /*nPara*/, String& /*rName*/, SfxStyleFamily& /*eFamily*/) const +bool EditTextObject::HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + return mpImpl->HasStyleSheet(rName, eFamily); } -void EditTextObject::SetStyleSheet(size_t /*nPara*/, const String& /*rName*/, const SfxStyleFamily& /*eFamily*/) +void EditTextObject::GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& eFamily) const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + mpImpl->GetStyleSheet(nPara, rName, eFamily); } -sal_Bool EditTextObject::ChangeStyleSheets( const XubString&, SfxStyleFamily, - const XubString&, SfxStyleFamily ) +void EditTextObject::SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& eFamily) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return false; + mpImpl->SetStyleSheet(nPara, rName, eFamily); } -void EditTextObject::ChangeStyleSheetName( SfxStyleFamily /*eFamily*/, - const XubString& /*rOldName*/, const XubString& /*rNewName*/ ) +bool EditTextObject::ChangeStyleSheets( + const XubString& rOldName, SfxStyleFamily eOldFamily, const XubString& rNewName, SfxStyleFamily eNewFamily ) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + return mpImpl->ChangeStyleSheets(rOldName, eOldFamily, rNewName, eNewFamily); +} + +void EditTextObject::ChangeStyleSheetName( + SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName ) +{ + mpImpl->ChangeStyleSheetName(eFamily, rOldName, rNewName); +} + +editeng::FieldUpdater EditTextObject::GetFieldUpdater() +{ + return mpImpl->GetFieldUpdater(); } sal_uInt16 EditTextObject::GetUserType() const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return 0; + return mpImpl->GetUserType(); } -void EditTextObject::SetUserType( sal_uInt16 ) +void EditTextObject::SetUserType( sal_uInt16 n ) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + mpImpl->SetUserType(n); } sal_uLong EditTextObject::GetObjectSettings() const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return 0; + return mpImpl->GetObjectSettings(); } -void EditTextObject::SetObjectSettings( sal_uLong ) +void EditTextObject::SetObjectSettings( sal_uLong n ) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); + mpImpl->SetObjectSettings(n); } bool EditTextObject::IsVertical() const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return false; + return mpImpl->IsVertical(); } void EditTextObject::SetVertical( bool bVertical ) { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - ((EditTextObjectImpl*)this)->SetVertical( bVertical ); + return mpImpl->SetVertical(bVertical); } sal_uInt16 EditTextObject::GetScriptType() const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return ((const EditTextObjectImpl*)this)->GetScriptType(); + return mpImpl->GetScriptType(); } -sal_Bool EditTextObject::Store( SvStream& rOStream ) const +bool EditTextObject::Store( SvStream& rOStream ) const { if ( rOStream.GetError() ) return false; @@ -395,26 +387,18 @@ EditTextObject* EditTextObject::Create( SvStream& rIStream, SfxItemPool* pGlobal sal_uInt32 nStructSz; rIStream >> nStructSz; - DBG_ASSERT( ( nWhich == 0x22 /*EE_FORMAT_BIN300*/ ) || ( nWhich == EE_FORMAT_BIN ), "CreateTextObject: Unknown Object!" ); + if (nWhich != EE_FORMAT_BIN) + { + // Unknown object we no longer support. + rIStream.SetError(EE_READWRITE_WRONGFORMAT); + return NULL; + } if ( rIStream.GetError() ) return NULL; - EditTextObject* pTxtObj = NULL; - switch ( nWhich ) - { - case 0x22 /*BIN300*/: pTxtObj = new EditTextObjectImpl( 0 ); - ((EditTextObjectImpl*)pTxtObj)->CreateData300( rIStream ); - break; - case EE_FORMAT_BIN: pTxtObj = new EditTextObjectImpl( pGlobalTextObjectPool ); - pTxtObj->CreateData( rIStream ); - break; - default: - { - // If I do not know the format, I overwrite the contents: - rIStream.SetError( EE_READWRITE_WRONGFORMAT ); - } - } + EditTextObject* pTxtObj = new EditTextObject(pGlobalTextObjectPool);; + pTxtObj->CreateData(rIStream); // Make sure that the stream is left at the correct place. sal_Size nFullSz = sizeof( nWhich ) + sizeof( nStructSz ) + nStructSz; @@ -422,31 +406,40 @@ EditTextObject* EditTextObject::Create( SvStream& rIStream, SfxItemPool* pGlobal return pTxtObj; } -void EditTextObject::StoreData( SvStream& ) const +void EditTextObject::StoreData( SvStream& rStrm ) const { - OSL_FAIL( "StoreData: Base class!" ); + mpImpl->StoreData(rStrm); } -void EditTextObject::CreateData( SvStream& ) +void EditTextObject::CreateData( SvStream& rStrm ) { - OSL_FAIL( "CreateData: Base class!" ); + mpImpl->CreateData(rStrm); } sal_uInt16 EditTextObject::GetVersion() const { - OSL_FAIL( "Virtual method direct from EditTextObject!" ); - return 0; + return mpImpl->GetVersion(); +} + +EditTextObject* EditTextObject::Clone() const +{ + return new EditTextObject(*this); } bool EditTextObject::operator==( const EditTextObject& rCompare ) const { - return static_cast< const EditTextObjectImpl* >( this )->operator==( static_cast< const EditTextObjectImpl& >( rCompare ) ); + return mpImpl->operator==(*rCompare.mpImpl); } // #i102062# bool EditTextObject::isWrongListEqual(const EditTextObject& rCompare) const { - return static_cast< const EditTextObjectImpl* >(this)->isWrongListEqual(static_cast< const EditTextObjectImpl& >(rCompare)); + return mpImpl->isWrongListEqual(*rCompare.mpImpl); +} + +void EditTextObject::ObjectInDestruction(const SfxItemPool& rSfxItemPool) +{ + mpImpl->ObjectInDestruction(rSfxItemPool); } // from SfxItemPoolUser @@ -495,7 +488,8 @@ EditEngineItemPool* getEditEngineItemPool(SfxItemPool* pPool) return pRetval; } -EditTextObjectImpl::EditTextObjectImpl( SfxItemPool* pP ) +EditTextObjectImpl::EditTextObjectImpl( EditTextObject* pFront, SfxItemPool* pP ) : + mpFront(pFront) { nVersion = 0; nMetric = 0xFFFF; @@ -524,7 +518,7 @@ EditTextObjectImpl::EditTextObjectImpl( SfxItemPool* pP ) if(!bOwnerOfPool && pPool) { // it is sure now that the pool is an EditEngineItemPool - pPool->AddSfxItemPoolUser(*this); + pPool->AddSfxItemPoolUser(*mpFront); } bVertical = false; @@ -532,8 +526,8 @@ EditTextObjectImpl::EditTextObjectImpl( SfxItemPool* pP ) nScriptType = 0; } -EditTextObjectImpl::EditTextObjectImpl( const EditTextObjectImpl& r ) : - EditTextObject( r ) +EditTextObjectImpl::EditTextObjectImpl( EditTextObject* pFront, const EditTextObjectImpl& r ) : + mpFront(pFront) { nVersion = r.nVersion; nMetric = r.nMetric; @@ -562,7 +556,7 @@ EditTextObjectImpl::EditTextObjectImpl( const EditTextObjectImpl& r ) : if(!bOwnerOfPool && pPool) { // it is sure now that the pool is an EditEngineItemPool - pPool->AddSfxItemPoolUser(*this); + pPool->AddSfxItemPoolUser(*mpFront); } if ( bOwnerOfPool && pPool && r.pPool ) @@ -578,7 +572,7 @@ EditTextObjectImpl::~EditTextObjectImpl() { if(!bOwnerOfPool && pPool) { - pPool->RemoveSfxItemPoolUser(*this); + pPool->RemoveSfxItemPoolUser(*mpFront); } ClearPortionInfo(); @@ -636,11 +630,6 @@ void EditTextObjectImpl::SetScriptType( sal_uInt16 nType ) nScriptType = nType; } -EditTextObject* EditTextObjectImpl::Clone() const -{ - return new EditTextObjectImpl( *this ); -} - XEditAttribute* EditTextObjectImpl::CreateAttrib( const SfxPoolItem& rItem, sal_uInt16 nStart, sal_uInt16 nEnd ) { return MakeXEditAttribute( *pPool, rItem, nStart, nEnd ); @@ -683,7 +672,7 @@ String EditTextObjectImpl::GetText(size_t nPara) const void EditTextObjectImpl::Insert(const EditTextObject& rObj, size_t nDestPara) { - const EditTextObjectImpl& rBinObj = (const EditTextObjectImpl&)rObj; + const EditTextObjectImpl& rBinObj = *rObj.mpImpl; if (nDestPara > aContents.size()) nDestPara = aContents.size(); @@ -706,20 +695,20 @@ EditTextObject* EditTextObjectImpl::CreateTextObject(size_t nPara, size_t nParas return NULL; // Only split the Pool, when a the Pool is set externally. - EditTextObjectImpl* pObj = new EditTextObjectImpl( bOwnerOfPool ? 0 : pPool ); + EditTextObject* pObj = new EditTextObject( bOwnerOfPool ? 0 : pPool ); if ( bOwnerOfPool && pPool ) - pObj->GetPool()->SetDefaultMetric( pPool->GetMetric( DEF_METRIC ) ); + pObj->mpImpl->GetPool()->SetDefaultMetric( pPool->GetMetric( DEF_METRIC ) ); // If complete text is only one ScriptType, this is valid. // If text contains different ScriptTypes, this shouldn't be a problem... - pObj->nScriptType = nScriptType; + pObj->mpImpl->nScriptType = nScriptType; const size_t nEndPara = nPara+nParas-1; for (size_t i = nPara; i <= nEndPara; ++i) { const ContentInfo& rC = aContents[i]; - ContentInfo* pNew = new ContentInfo(rC, *pObj->GetPool()); - pObj->aContents.push_back(pNew); + ContentInfo* pNew = new ContentInfo(rC, *pObj->mpImpl->GetPool()); + pObj->mpImpl->aContents.push_back(pNew); } return pObj; } @@ -736,7 +725,7 @@ void EditTextObjectImpl::RemoveParagraph(size_t nPara) ClearPortionInfo(); } -sal_Bool EditTextObjectImpl::HasPortionInfo() const +bool EditTextObjectImpl::HasPortionInfo() const { return pPortionInfo ? true : false; } @@ -750,7 +739,7 @@ void EditTextObjectImpl::ClearPortionInfo() } } -sal_Bool EditTextObjectImpl::HasOnlineSpellErrors() const +bool EditTextObjectImpl::HasOnlineSpellErrors() const { ContentInfosType::const_iterator it = aContents.begin(), itEnd = aContents.end(); for (; it != itEnd; ++it) @@ -761,7 +750,7 @@ sal_Bool EditTextObjectImpl::HasOnlineSpellErrors() const return false; } -sal_Bool EditTextObjectImpl::HasCharAttribs( sal_uInt16 _nWhich ) const +bool EditTextObjectImpl::HasCharAttribs( sal_uInt16 _nWhich ) const { for (size_t nPara = aContents.size(); nPara; ) { @@ -820,9 +809,9 @@ void EditTextObjectImpl::MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt1 ClearPortionInfo(); } -sal_Bool EditTextObjectImpl::IsFieldObject() const +bool EditTextObjectImpl::IsFieldObject() const { - return EditTextObjectImpl::GetField() ? true : false; + return GetField() ? true : false; } const SvxFieldItem* EditTextObjectImpl::GetField() const @@ -869,7 +858,7 @@ bool EditTextObjectImpl::HasField( sal_Int32 nType ) const return false; } -SfxItemSet EditTextObjectImpl::GetParaAttribs(size_t nPara) const +const SfxItemSet& EditTextObjectImpl::GetParaAttribs(size_t nPara) const { const ContentInfo& rC = aContents[nPara]; return rC.GetParaAttribs(); @@ -882,9 +871,9 @@ void EditTextObjectImpl::SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs ClearPortionInfo(); } -sal_Bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich ) +bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich ) { - sal_Bool bChanged = false; + bool bChanged = false; for ( sal_uInt16 nPara = aContents.size(); nPara; ) { @@ -908,7 +897,7 @@ sal_Bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich ) return bChanged; } -sal_Bool EditTextObjectImpl::RemoveParaAttribs( sal_uInt16 _nWhich ) +bool EditTextObjectImpl::RemoveParaAttribs( sal_uInt16 _nWhich ) { bool bChanged = false; @@ -938,7 +927,7 @@ sal_Bool EditTextObjectImpl::RemoveParaAttribs( sal_uInt16 _nWhich ) return bChanged; } -sal_Bool EditTextObjectImpl::HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const +bool EditTextObjectImpl::HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const { size_t nParagraphs = aContents.size(); for (size_t nPara = 0; nPara < nParagraphs; ++nPara) @@ -970,7 +959,7 @@ void EditTextObjectImpl::SetStyleSheet(size_t nPara, const String& rName, const rC.GetFamily() = rFamily; } -sal_Bool EditTextObjectImpl::ImpChangeStyleSheets( +bool EditTextObjectImpl::ImpChangeStyleSheets( const XubString& rOldName, SfxStyleFamily eOldFamily, const XubString& rNewName, SfxStyleFamily eNewFamily ) { @@ -993,7 +982,7 @@ sal_Bool EditTextObjectImpl::ImpChangeStyleSheets( return bChanges; } -sal_Bool EditTextObjectImpl::ChangeStyleSheets( +bool EditTextObjectImpl::ChangeStyleSheets( const XubString& rOldName, SfxStyleFamily eOldFamily, const XubString& rNewName, SfxStyleFamily eNewFamily ) { @@ -1012,7 +1001,7 @@ void EditTextObjectImpl::ChangeStyleSheetName( SfxStyleFamily eFamily, editeng::FieldUpdater EditTextObjectImpl::GetFieldUpdater() { - return editeng::FieldUpdater(*this); + return editeng::FieldUpdater(*mpFront); } namespace { diff --git a/editeng/source/editeng/editobj2.hxx b/editeng/source/editeng/editobj2.hxx index 0a3c5204e9b7..04b6ba1319cd 100644 --- a/editeng/source/editeng/editobj2.hxx +++ b/editeng/source/editeng/editobj2.hxx @@ -26,6 +26,7 @@ #include <unotools/fontcvt.hxx> #include <boost/ptr_container/ptr_vector.hpp> +#include <boost/noncopyable.hpp> class XEditAttribute { @@ -150,15 +151,14 @@ public: bool isWrongListEqual(const ContentInfo& rCompare) const; }; -class EditTextObjectImpl : public EditTextObject +class EditTextObjectImpl : boost::noncopyable { - using EditTextObject::operator==; - using EditTextObject::isWrongListEqual; - public: typedef boost::ptr_vector<ContentInfo> ContentInfosType; private: + EditTextObject* mpFront; + ContentInfosType aContents; SfxItemPool* pPool; XParaPortionList* pPortionInfo; @@ -173,21 +173,19 @@ private: bool bVertical:1; bool bStoreUnicodeStrings:1; -protected: - virtual void StoreData( SvStream& rOStream ) const; - virtual void CreateData( SvStream& rIStream ); - sal_Bool ImpChangeStyleSheets( const String& rOldName, SfxStyleFamily eOldFamily, - const String& rNewName, SfxStyleFamily eNewFamily ); + bool ImpChangeStyleSheets( const String& rOldName, SfxStyleFamily eOldFamily, + const String& rNewName, SfxStyleFamily eNewFamily ); public: - EditTextObjectImpl( SfxItemPool* pPool ); - EditTextObjectImpl( const EditTextObjectImpl& ); - virtual ~EditTextObjectImpl(); + void StoreData( SvStream& rOStream ) const; + void CreateData( SvStream& rIStream ); - virtual EditTextObject* Clone() const; + EditTextObjectImpl( EditTextObject* pFront, SfxItemPool* pPool ); + EditTextObjectImpl( EditTextObject* pFront, const EditTextObjectImpl& r ); + ~EditTextObjectImpl(); - sal_uInt16 GetUserType() const; - void SetUserType( sal_uInt16 n ); + sal_uInt16 GetUserType() const; + void SetUserType( sal_uInt16 n ); sal_uLong GetObjectSettings() const; void SetObjectSettings( sal_uLong n ); @@ -211,57 +209,57 @@ public: void SetPortionInfo( XParaPortionList* pP ) { pPortionInfo = pP; } - virtual size_t GetParagraphCount() const; - virtual String GetText(size_t nParagraph) const; - virtual void Insert(const EditTextObject& rObj, size_t nPara); - virtual EditTextObject* CreateTextObject(size_t nPara, size_t nParas = 1) const; + size_t GetParagraphCount() const; + String GetText(size_t nParagraph) const; + void Insert(const EditTextObject& rObj, size_t nPara); + EditTextObject* CreateTextObject(size_t nPara, size_t nParas = 1) const; virtual void RemoveParagraph(size_t nPara); - virtual sal_Bool HasPortionInfo() const; - virtual void ClearPortionInfo(); + bool HasPortionInfo() const; + void ClearPortionInfo(); - virtual sal_Bool HasOnlineSpellErrors() const; + bool HasOnlineSpellErrors() const; - virtual sal_Bool HasCharAttribs( sal_uInt16 nWhich = 0 ) const; - virtual void GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const; + bool HasCharAttribs( sal_uInt16 nWhich = 0 ) const; + void GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const; - virtual sal_Bool RemoveCharAttribs( sal_uInt16 nWhich = 0 ); - virtual sal_Bool RemoveParaAttribs( sal_uInt16 nWhich = 0 ); + bool RemoveCharAttribs( sal_uInt16 nWhich = 0 ); + bool RemoveParaAttribs( sal_uInt16 nWhich = 0 ); - virtual void MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd ); + void MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd ); - virtual sal_Bool IsFieldObject() const; - virtual const SvxFieldItem* GetField() const; - virtual bool HasField( sal_Int32 nType = com::sun::star::text::textfield::Type::UNSPECIFIED ) const; + bool IsFieldObject() const; + const SvxFieldItem* GetField() const; + bool HasField( sal_Int32 nType = com::sun::star::text::textfield::Type::UNSPECIFIED ) const; - virtual SfxItemSet GetParaAttribs(size_t nPara) const; - virtual void SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs); + const SfxItemSet& GetParaAttribs(size_t nPara) const; + void SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs); - virtual sal_Bool HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const; - virtual void GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& eFamily) const; - virtual void SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& eFamily); - virtual sal_Bool ChangeStyleSheets( const XubString& rOldName, SfxStyleFamily eOldFamily, - const String& rNewName, SfxStyleFamily eNewFamily ); + bool HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const; + void GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& eFamily) const; + void SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& eFamily); + bool ChangeStyleSheets( + const XubString& rOldName, SfxStyleFamily eOldFamily, const String& rNewName, SfxStyleFamily eNewFamily ); virtual void ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName ); - virtual editeng::FieldUpdater GetFieldUpdater(); + editeng::FieldUpdater GetFieldUpdater(); void CreateData300( SvStream& rIStream ); - sal_Bool HasMetric() const { return nMetric != 0xFFFF; } + bool HasMetric() const { return nMetric != 0xFFFF; } sal_uInt16 GetMetric() const { return nMetric; } void SetMetric( sal_uInt16 n ) { nMetric = n; } bool IsOwnerOfPool() const { return bOwnerOfPool; } - void StoreUnicodeStrings( sal_Bool b ) { bStoreUnicodeStrings = b; } + void StoreUnicodeStrings( bool b ) { bStoreUnicodeStrings = b; } - bool operator==( const EditTextObjectImpl& rCompare ) const; + bool operator==( const EditTextObjectImpl& rCompare ) const; // #i102062# bool isWrongListEqual(const EditTextObjectImpl& rCompare) const; // from SfxItemPoolUser - virtual void ObjectInDestruction(const SfxItemPool& rSfxItemPool); + void ObjectInDestruction(const SfxItemPool& rSfxItemPool); }; #endif // _EDITOBJ2_HXX diff --git a/editeng/source/editeng/fieldupdater.cxx b/editeng/source/editeng/fieldupdater.cxx index 2a383f818e8f..95dfc8d0dc18 100644 --- a/editeng/source/editeng/fieldupdater.cxx +++ b/editeng/source/editeng/fieldupdater.cxx @@ -40,7 +40,7 @@ class FieldUpdaterImpl { EditTextObjectImpl& mrObj; public: - FieldUpdaterImpl(EditTextObject& rObj) : mrObj(static_cast<EditTextObjectImpl&>(rObj)) {} + FieldUpdaterImpl(EditTextObject& rObj) : mrObj(*rObj.mpImpl) {} FieldUpdaterImpl(const FieldUpdaterImpl& r) : mrObj(r.mrObj) {} void updateTableFields(int nTab) diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 271f231153a4..1d762b023b58 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -522,7 +522,7 @@ private: void GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const; EditTextObject* CreateBinTextObject( EditSelection aSelection, SfxItemPool*, sal_Bool bAllowBigObjects = sal_False, sal_uInt16 nBigObjStart = 0 ); - EditSelection InsertBinTextObject( EditTextObjectImpl&, EditPaM aPaM ); + EditSelection InsertBinTextObject( const EditTextObject&, EditPaM aPaM ); EditSelection InsertText( ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxDataObj, const String& rBaseURL, const EditPaM& rPaM, sal_Bool bUseSpecial ); EditPaM Clear(); @@ -609,7 +609,7 @@ private: sal_uInt32 WriteRTF( SvStream& rOutput, EditSelection aSel ); sal_uInt32 WriteXML( SvStream& rOutput, EditSelection aSel ); sal_uInt32 WriteHTML( SvStream& rOutput, EditSelection aSel ); - sal_uInt32 WriteBin( SvStream& rOutput, EditSelection aSel, sal_Bool bStoreUnicode = sal_False ); + sal_uInt32 WriteBin( SvStream& rOutput, EditSelection aSel, bool bStoreUnicode = false ); void WriteItemAsRTF( const SfxPoolItem& rItem, SvStream& rOutput, sal_uInt16 nPara, sal_uInt16 nPos, std::vector<SvxFontItem*>& rFontTable, SvxColorList& rColorList ); diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx index 0209f09eb3a0..a869e18d9514 100644 --- a/editeng/source/editeng/impedit4.cxx +++ b/editeng/source/editeng/impedit4.cxx @@ -77,6 +77,7 @@ #include <editeng/edtdlg.hxx> #include <vector> +#include <boost/scoped_ptr.hpp> using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -298,12 +299,11 @@ static void lcl_FindValidAttribs( ItemList& rLst, ContentNode* pNode, sal_uInt16 } } -sal_uInt32 ImpEditEngine::WriteBin( SvStream& rOutput, EditSelection aSel, sal_Bool bStoreUnicodeStrings ) +sal_uInt32 ImpEditEngine::WriteBin( SvStream& rOutput, EditSelection aSel, bool bStoreUnicodeStrings ) { - EditTextObjectImpl* pObj = (EditTextObjectImpl*)CreateBinTextObject( aSel, NULL ); - pObj->StoreUnicodeStrings( bStoreUnicodeStrings ); - pObj->Store( rOutput ); - delete pObj; + boost::scoped_ptr<EditTextObject> pObj(CreateBinTextObject(aSel, NULL)); + pObj->mpImpl->StoreUnicodeStrings(bStoreUnicodeStrings); + pObj->Store(rOutput); return 0; } @@ -1022,12 +1022,12 @@ EditTextObject* ImpEditEngine::CreateTextObject( EditSelection aSel ) EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemPool* pPool, sal_Bool bAllowBigObjects, sal_uInt16 nBigObjectStart ) { - EditTextObjectImpl* pTxtObj = new EditTextObjectImpl( pPool ); + EditTextObject* pTxtObj = new EditTextObject(pPool); pTxtObj->SetVertical( IsVertical() ); MapUnit eMapUnit = (MapUnit)aEditDoc.GetItemPool().GetMetric( DEF_METRIC ); - pTxtObj->SetMetric( (sal_uInt16) eMapUnit ); - if ( pTxtObj->IsOwnerOfPool() ) - pTxtObj->GetPool()->SetDefaultMetric( (SfxMapUnit) eMapUnit ); + pTxtObj->mpImpl->SetMetric( (sal_uInt16) eMapUnit ); + if ( pTxtObj->mpImpl->IsOwnerOfPool() ) + pTxtObj->mpImpl->GetPool()->SetDefaultMetric( (SfxMapUnit) eMapUnit ); sal_uInt16 nStartNode, nEndNode; sal_uInt32 nTextPortions = 0; @@ -1042,7 +1042,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP // Templates are not saved! // (Only the name and family, template itself must be in App!) - pTxtObj->SetScriptType( GetScriptType( aSel ) ); + pTxtObj->mpImpl->SetScriptType(GetScriptType(aSel)); // iterate over the paragraphs ... sal_uInt16 nNode; @@ -1068,7 +1068,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP nEndPos = aSel.Max().GetIndex(); - ContentInfo* pC = pTxtObj->CreateAndInsertContent(); + ContentInfo *pC = pTxtObj->mpImpl->CreateAndInsertContent(); // The paragraph attributes ... pC->GetParaAttribs().Set( pNode->GetContentAttribs().GetItems() ); @@ -1092,7 +1092,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP if ( bEmptyPara || ( ( pAttr->GetEnd() > nStartPos ) && ( pAttr->GetStart() < nEndPos ) ) ) { - XEditAttribute* pX = pTxtObj->CreateAttrib( *pAttr->GetItem(), pAttr->GetStart(), pAttr->GetEnd() ); + XEditAttribute* pX = pTxtObj->mpImpl->CreateAttrib(*pAttr->GetItem(), pAttr->GetStart(), pAttr->GetEnd()); // Possibly Correct ... if ( ( nNode == nStartNode ) && ( nStartPos != 0 ) ) { @@ -1107,7 +1107,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP } DBG_ASSERT( pX->GetEnd() <= (nEndPos-nStartPos), "CreateBinTextObject: Attribute too long!" ); if ( !pX->GetLen() && !bEmptyPara ) - pTxtObj->DestroyAttrib( pX ); + pTxtObj->mpImpl->DestroyAttrib(pX); else pC->GetAttribs().push_back(pX); } @@ -1126,7 +1126,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP if ( bAllowBigObjects && bOnlyFullParagraphs && IsFormatted() && GetUpdateMode() && ( nTextPortions >= nBigObjectStart ) ) { XParaPortionList* pXList = new XParaPortionList( GetRefDevice(), aPaperSize.Width(), nStretchX, nStretchY ); - pTxtObj->SetPortionInfo( pXList ); + pTxtObj->mpImpl->SetPortionInfo(pXList); for ( nNode = nStartNode; nNode <= nEndNode; nNode++ ) { const ParaPortion* pParaPortion = GetParaPortions()[nNode]; @@ -1195,19 +1195,19 @@ EditSelection ImpEditEngine::InsertText( const EditTextObject& rTextObject, Edit aSel.Adjust( aEditDoc ); if ( aSel.HasRange() ) aSel = ImpDeleteSelection( aSel ); - EditSelection aNewSel = InsertBinTextObject( (EditTextObjectImpl&)rTextObject, aSel.Max() ); + EditSelection aNewSel = InsertBinTextObject( rTextObject, aSel.Max() ); LeaveBlockNotifications(); return aNewSel; } -EditSelection ImpEditEngine::InsertBinTextObject( EditTextObjectImpl& rTextObject, EditPaM aPaM ) +EditSelection ImpEditEngine::InsertBinTextObject( const EditTextObject& rTextObject, EditPaM aPaM ) { // Optimize: No getPos undFindParaportion, instead calculate index! EditSelection aSel( aPaM, aPaM ); DBG_ASSERT( !aSel.DbgIsBuggy( aEditDoc ), "InsertBibTextObject: Selection broken!(1)" ); sal_Bool bUsePortionInfo = sal_False; - XParaPortionList* pPortionInfo = rTextObject.GetPortionInfo(); + XParaPortionList* pPortionInfo = rTextObject.mpImpl->GetPortionInfo(); if ( pPortionInfo && ( (long)pPortionInfo->GetPaperWidth() == aPaperSize.Width() ) && ( pPortionInfo->GetRefMapMode() == GetRefDevice()->GetMapMode() ) @@ -1222,20 +1222,20 @@ EditSelection ImpEditEngine::InsertBinTextObject( EditTextObjectImpl& rTextObjec sal_Bool bConvertItems = sal_False; MapUnit eSourceUnit = MapUnit(), eDestUnit = MapUnit(); - if ( rTextObject.HasMetric() ) + if (rTextObject.mpImpl->HasMetric()) { - eSourceUnit = (MapUnit)rTextObject.GetMetric(); + eSourceUnit = (MapUnit)rTextObject.mpImpl->GetMetric(); eDestUnit = (MapUnit)aEditDoc.GetItemPool().GetMetric( DEF_METRIC ); if ( eSourceUnit != eDestUnit ) bConvertItems = sal_True; } - size_t nContents = rTextObject.GetContents().size(); + size_t nContents = rTextObject.mpImpl->GetContents().size(); sal_uInt16 nPara = aEditDoc.GetPos( aPaM.GetNode() ); for (size_t n = 0; n < nContents; ++n, ++nPara) { - ContentInfo* pC = &rTextObject.GetContents()[n]; + const ContentInfo* pC = &rTextObject.mpImpl->GetContents()[n]; sal_Bool bNewContent = aPaM.GetNode()->Len() ? sal_False: sal_True; sal_uInt16 nStartPos = aPaM.GetIndex(); |