summaryrefslogtreecommitdiff
path: root/editeng
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2013-01-08 15:33:56 -0500
committerKohei Yoshida <kohei.yoshida@gmail.com>2013-01-08 21:03:51 -0500
commit4da3a0108468a3e7fd4aae32129b9c0fbe4635a4 (patch)
tree5ca80448d1228875c0a3c71d0d6fe39153e7792e /editeng
parent678de8255795e7f3b654bf2022da26a4fdb48775 (diff)
Turn EditTextObjectImpl into a real impl class.
Change-Id: I0f0bba62da60a3397b733253dbc0891c69bd5b9c
Diffstat (limited to 'editeng')
-rw-r--r--editeng/inc/editeng/editobj.hxx100
-rw-r--r--editeng/source/editeng/editobj.cxx249
-rw-r--r--editeng/source/editeng/editobj2.hxx82
-rw-r--r--editeng/source/editeng/fieldupdater.cxx2
-rw-r--r--editeng/source/editeng/impedit.hxx4
-rw-r--r--editeng/source/editeng/impedit4.cxx42
6 files changed, 238 insertions, 241 deletions
diff --git a/editeng/inc/editeng/editobj.hxx b/editeng/inc/editeng/editobj.hxx
index 393892c4d6c5..12984967cf1d 100644
--- a/editeng/inc/editeng/editobj.hxx
+++ b/editeng/inc/editeng/editobj.hxx
@@ -42,85 +42,95 @@ class SvxFieldItem;
namespace editeng {
class FieldUpdater;
+class FieldUpdaterImpl;
}
+class EditTextObjectImpl;
+
class EDITENG_DLLPUBLIC EditTextObject : public SfxItemPoolUser
{
-private:
+ friend class EditTextObjectImpl;
+ friend class editeng::FieldUpdaterImpl;
+ friend class ImpEditEngine;
+
+ EditTextObjectImpl* mpImpl;
+
EDITENG_DLLPRIVATE EditTextObject& operator=( const EditTextObject& );
-protected:
- EditTextObject();
+ EditTextObject(); // disabled
+
+ EditTextObject( SfxItemPool* pPool );
EditTextObject( const EditTextObject& r );
- virtual void StoreData( SvStream& rOStream ) const;
- virtual void CreateData( SvStream& rIStream );
+ void StoreData( SvStream& rStrm ) const;
+ void CreateData( SvStream& rStrm );
public:
- virtual ~EditTextObject();
+ virtual ~EditTextObject();
+
+ sal_uInt16 GetUserType() const; // For OutlinerMode, it can however not save in compatible format
+ void SetUserType( sal_uInt16 n );
- virtual sal_uInt16 GetUserType() const; // For OutlinerMode, it can however not save in compatible format
- virtual void SetUserType( sal_uInt16 n );
+ sal_uLong GetObjectSettings() const;
+ void SetObjectSettings( sal_uLong n );
- virtual sal_uLong GetObjectSettings() const;
- virtual void SetObjectSettings( sal_uLong n );
+ bool IsVertical() const;
+ void SetVertical( bool bVertical );
- virtual bool IsVertical() const;
- virtual void SetVertical( bool bVertical );
+ sal_uInt16 GetScriptType() const;
- virtual sal_uInt16 GetScriptType() const;
+ sal_uInt16 GetVersion() const; // As long as the outliner does not store any record length.
- virtual sal_uInt16 GetVersion() const; // As long as the outliner does not store any record length.
+ EditTextObject* Clone() const;
- virtual EditTextObject* Clone() const = 0;
+ bool Store( SvStream& rOStream ) const;
- sal_Bool Store( SvStream& rOStream ) const;
- static EditTextObject* Create( SvStream& rIStream,
- SfxItemPool* pGlobalTextObjectPool = 0 );
+ static EditTextObject* Create(
+ SvStream& rIStream, SfxItemPool* pGlobalTextObjectPool = NULL );
- virtual size_t GetParagraphCount() const;
+ size_t GetParagraphCount() const;
- virtual String GetText(size_t nParagraph) const;
- virtual void Insert(const EditTextObject& rObj, size_t nPara);
- virtual void RemoveParagraph(size_t nPara);
- virtual EditTextObject* CreateTextObject(size_t nPara, size_t nParas = 1) const;
+ String GetText(size_t nPara) const;
+ void Insert(const EditTextObject& rObj, size_t nPara);
+ void RemoveParagraph(size_t nPara);
+ EditTextObject* CreateTextObject(size_t nPara, size_t nParas = 1) const;
- 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 = EE_CHAR_START, sal_uInt16 nEnd = EE_CHAR_END );
+ void MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart = EE_CHAR_START, sal_uInt16 nEnd = EE_CHAR_END );
- virtual sal_Bool IsFieldObject() const;
- virtual const SvxFieldItem* GetField() const;
- virtual bool HasField( sal_Int32 nType = com::sun::star::text::textfield::Type::UNSPECIFIED ) const = 0;
+ 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 XubString& rNewName, SfxStyleFamily eNewFamily );
- virtual void ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName );
+ 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 XubString& rNewName, SfxStyleFamily eNewFamily );
+ void ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName );
- virtual editeng::FieldUpdater GetFieldUpdater() = 0;
+ editeng::FieldUpdater GetFieldUpdater();
- bool operator==( const EditTextObject& rCompare ) const;
+ bool operator==( const EditTextObject& rCompare ) const;
// #i102062#
bool isWrongListEqual(const EditTextObject& rCompare) const;
- virtual void ObjectInDestruction(const SfxItemPool& rSfxItemPool) = 0;
+ virtual void ObjectInDestruction(const SfxItemPool& rSfxItemPool);
};
#endif // _EDITOBJ_HXX
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();