Killed Another instance of svarray.

This commit is contained in:
Kohei Yoshida
2012-04-08 13:30:09 -04:00
parent 6cb65d8db3
commit 5d2b0f25f1
4 changed files with 226 additions and 234 deletions

View File

@@ -85,12 +85,12 @@ public:
static EditTextObject* Create( SvStream& rIStream, static EditTextObject* Create( SvStream& rIStream,
SfxItemPool* pGlobalTextObjectPool = 0 ); SfxItemPool* pGlobalTextObjectPool = 0 );
virtual sal_uInt16 GetParagraphCount() const; virtual size_t GetParagraphCount() const;
virtual XubString GetText( sal_uInt16 nParagraph ) const; virtual String GetText(size_t nParagraph) const;
virtual void Insert( const EditTextObject& rObj, sal_uInt16 nPara ); virtual void Insert(const EditTextObject& rObj, size_t nPara);
virtual void RemoveParagraph( sal_uInt16 nPara ); virtual void RemoveParagraph(size_t nPara);
virtual EditTextObject* CreateTextObject( sal_uInt16 nPara, sal_uInt16 nParas = 1 ) const; virtual EditTextObject* CreateTextObject(size_t nPara, size_t nParas = 1) const;
virtual sal_Bool HasPortionInfo() const; virtual sal_Bool HasPortionInfo() const;
virtual void ClearPortionInfo(); virtual void ClearPortionInfo();
@@ -109,12 +109,12 @@ public:
virtual const SvxFieldItem* GetField() const; virtual const SvxFieldItem* GetField() const;
virtual sal_Bool HasField( TypeId aType = NULL ) const; virtual sal_Bool HasField( TypeId aType = NULL ) const;
virtual SfxItemSet GetParaAttribs( sal_uInt16 nPara ) const; virtual SfxItemSet GetParaAttribs(size_t nPara) const;
virtual void SetParaAttribs( sal_uInt16 nPara, const SfxItemSet& rAttribs ); virtual void SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs);
virtual sal_Bool HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const; virtual sal_Bool HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const;
virtual void GetStyleSheet( sal_uInt16 nPara, XubString& rName, SfxStyleFamily& eFamily ) const; virtual void GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& eFamily) const;
virtual void SetStyleSheet( sal_uInt16 nPara, const XubString& rName, const SfxStyleFamily& eFamily ); virtual void SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& eFamily);
virtual sal_Bool ChangeStyleSheets( const XubString& rOldName, SfxStyleFamily eOldFamily, virtual sal_Bool ChangeStyleSheets( const XubString& rOldName, SfxStyleFamily eOldFamily,
const XubString& rNewName, SfxStyleFamily eNewFamily ); const XubString& rNewName, SfxStyleFamily eNewFamily );
virtual void ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName ); virtual void ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName );

View File

@@ -168,6 +168,11 @@ bool ContentInfo::operator==( const ContentInfo& rCompare ) const
return false; return false;
} }
bool ContentInfo::operator!=(const ContentInfo& rCompare) const
{
return !operator==(rCompare);
}
EditTextObject::EditTextObject( sal_uInt16 n) EditTextObject::EditTextObject( sal_uInt16 n)
{ {
DBG_CTOR( EE_EditTextObject, 0 ); DBG_CTOR( EE_EditTextObject, 0 );
@@ -185,30 +190,30 @@ EditTextObject::~EditTextObject()
DBG_DTOR( EE_EditTextObject, 0 ); DBG_DTOR( EE_EditTextObject, 0 );
} }
sal_uInt16 EditTextObject::GetParagraphCount() const size_t EditTextObject::GetParagraphCount() const
{ {
OSL_FAIL( "Virtual method direct from EditTextObject!" ); OSL_FAIL( "Virtual method direct from EditTextObject!" );
return 0; return 0;
} }
XubString EditTextObject::GetText( sal_uInt16 /* nParagraph */ ) const String EditTextObject::GetText(size_t /* nParagraph */) const
{ {
OSL_FAIL( "Virtual method direct from EditTextObject!" ); OSL_FAIL( "Virtual method direct from EditTextObject!" );
return XubString(); return String();
} }
void EditTextObject::Insert( const EditTextObject& /* rObj */, sal_uInt16 /* nPara */) void EditTextObject::Insert(const EditTextObject& /* rObj */, size_t /* nPara */)
{ {
OSL_FAIL( "Virtual method direct from EditTextObject!" ); OSL_FAIL( "Virtual method direct from EditTextObject!" );
} }
EditTextObject* EditTextObject::CreateTextObject( sal_uInt16 /*nPara*/, sal_uInt16 /*nParas*/ ) const EditTextObject* EditTextObject::CreateTextObject(size_t /*nPara*/, size_t /*nParas*/) const
{ {
OSL_FAIL( "Virtual method direct from EditTextObject!" ); OSL_FAIL( "Virtual method direct from EditTextObject!" );
return 0; return 0;
} }
void EditTextObject::RemoveParagraph( sal_uInt16 /*nPara*/ ) void EditTextObject::RemoveParagraph(size_t /*nPara*/)
{ {
OSL_FAIL( "Virtual method direct from EditTextObject!" ); OSL_FAIL( "Virtual method direct from EditTextObject!" );
} }
@@ -264,13 +269,13 @@ sal_Bool EditTextObject::HasField( TypeId /*aType*/ ) const
return false; return false;
} }
SfxItemSet EditTextObject::GetParaAttribs( sal_uInt16 /*nPara*/ ) const SfxItemSet EditTextObject::GetParaAttribs(size_t /*nPara*/) const
{ {
OSL_FAIL( "Virtual method direct from EditTextObject!" ); OSL_FAIL( "Virtual method direct from EditTextObject!" );
return SfxItemSet( *(SfxItemPool*)NULL ); return SfxItemSet( *(SfxItemPool*)NULL );
} }
void EditTextObject::SetParaAttribs( sal_uInt16 /*nPara*/, const SfxItemSet& /*rAttribs*/ ) void EditTextObject::SetParaAttribs(size_t /*nPara*/, const SfxItemSet& /*rAttribs*/)
{ {
OSL_FAIL( "Virtual method direct from EditTextObject!" ); OSL_FAIL( "Virtual method direct from EditTextObject!" );
} }
@@ -293,12 +298,12 @@ sal_Bool EditTextObject::HasStyleSheet( const XubString& /*rName*/, SfxStyleFami
return false; return false;
} }
void EditTextObject::GetStyleSheet( sal_uInt16 /*nPara*/, XubString& /*rName*/, SfxStyleFamily& /*eFamily*/ ) const void EditTextObject::GetStyleSheet(size_t /*nPara*/, String& /*rName*/, SfxStyleFamily& /*eFamily*/) const
{ {
OSL_FAIL( "Virtual method direct from EditTextObject!" ); OSL_FAIL( "Virtual method direct from EditTextObject!" );
} }
void EditTextObject::SetStyleSheet( sal_uInt16 /*nPara*/, const XubString& /*rName*/, const SfxStyleFamily& /*eFamily*/ ) void EditTextObject::SetStyleSheet(size_t /*nPara*/, const String& /*rName*/, const SfxStyleFamily& /*eFamily*/)
{ {
OSL_FAIL( "Virtual method direct from EditTextObject!" ); OSL_FAIL( "Virtual method direct from EditTextObject!" );
} }
@@ -461,16 +466,12 @@ void BinTextObject::ObjectInDestruction(const SfxItemPool& rSfxItemPool)
pNewPool->SetDefaultMetric(pPool->GetMetric(DEF_METRIC)); pNewPool->SetDefaultMetric(pPool->GetMetric(DEF_METRIC));
} }
for(sal_uInt16 n(0); n < aContents.Count(); n++) ContentInfosType aReplaced;
{ aReplaced.reserve(aContents.size());
// clone ContentInfos for new pool ContentInfosType::const_iterator it = aContents.begin(), itEnd = aContents.end();
ContentInfo* pOrg = aContents.GetObject(n); for (; it != itEnd; ++it)
DBG_ASSERT(pOrg, "NULL-Pointer in ContentList!"); aReplaced.push_back(new ContentInfo(*it, *pNewPool));
aReplaced.swap(aContents);
ContentInfo* pNew = new ContentInfo(*pOrg, *pNewPool);
aContents.Replace(pNew, n);
delete pOrg;
}
// set local variables // set local variables
pPool = pNewPool; pPool = pNewPool;
@@ -571,13 +572,10 @@ BinTextObject::BinTextObject( const BinTextObject& r ) :
if ( bOwnerOfPool && pPool && r.pPool ) if ( bOwnerOfPool && pPool && r.pPool )
pPool->SetDefaultMetric( r.pPool->GetMetric( DEF_METRIC ) ); pPool->SetDefaultMetric( r.pPool->GetMetric( DEF_METRIC ) );
for ( sal_uInt16 n = 0; n < r.aContents.Count(); n++ ) aContents.reserve(r.aContents.size());
{ ContentInfosType::const_iterator it = r.aContents.begin(), itEnd = r.aContents.end();
ContentInfo* pOrg = r.aContents.GetObject( n ); for (; it != itEnd; ++it)
DBG_ASSERT( pOrg, "NULL-Pointer in ContentList!" ); aContents.push_back(new ContentInfo(*it, *pPool));
ContentInfo* pNew = new ContentInfo( *pOrg, *pPool );
aContents.Insert( pNew, aContents.Count() );
}
} }
BinTextObject::~BinTextObject() BinTextObject::~BinTextObject()
@@ -588,7 +586,10 @@ BinTextObject::~BinTextObject()
} }
ClearPortionInfo(); ClearPortionInfo();
DeleteContents();
// Remove contents before deleting the pool instance since each content
// has to access the pool instance in its destructor.
aContents.clear();
if ( bOwnerOfPool ) if ( bOwnerOfPool )
{ {
SfxItemPool::Free(pPool); SfxItemPool::Free(pPool);
@@ -639,18 +640,6 @@ void BinTextObject::SetScriptType( sal_uInt16 nType )
nScriptType = nType; nScriptType = nType;
} }
void BinTextObject::DeleteContents()
{
for ( sal_uInt16 n = 0; n < aContents.Count(); n++ )
{
ContentInfo* p = aContents.GetObject( n );
DBG_ASSERT( p, "NULL-Pointer in ContentList!" );
delete p;
}
aContents.Remove( 0, aContents.Count() );
}
EditTextObject* BinTextObject::Clone() const EditTextObject* BinTextObject::Clone() const
{ {
return new BinTextObject( *this ); return new BinTextObject( *this );
@@ -667,51 +656,59 @@ void BinTextObject::DestroyAttrib( XEditAttribute* pAttr )
delete pAttr; delete pAttr;
} }
BinTextObject::ContentInfosType& BinTextObject::GetContents()
{
return aContents;
}
const BinTextObject::ContentInfosType& BinTextObject::GetContents() const
{
return aContents;
}
ContentInfo* BinTextObject::CreateAndInsertContent() ContentInfo* BinTextObject::CreateAndInsertContent()
{ {
ContentInfo* pC = new ContentInfo( *pPool ); aContents.push_back(new ContentInfo(*pPool));
aContents.Insert( pC, aContents.Count() ); return &aContents.back();
return pC;
} }
sal_uInt16 BinTextObject::GetParagraphCount() const size_t BinTextObject::GetParagraphCount() const
{ {
return aContents.Count(); return aContents.size();
} }
XubString BinTextObject::GetText( sal_uInt16 nPara ) const String BinTextObject::GetText(size_t nPara) const
{ {
DBG_ASSERT( nPara < aContents.Count(), "BinTextObject::GetText: Paragraph does not exist!" ); if (nPara >= aContents.size())
if ( nPara < aContents.Count() ) return String();
{
ContentInfo* pC = aContents[ nPara ]; return aContents[nPara].GetText();
return pC->GetText();
}
return XubString();
} }
void BinTextObject::Insert( const EditTextObject& rObj, sal_uInt16 nDestPara ) void BinTextObject::Insert(const EditTextObject& rObj, size_t nDestPara)
{ {
DBG_ASSERT( rObj.Which() == EE_FORMAT_BIN, "UTO: unknown Textobjekt" ); DBG_ASSERT( rObj.Which() == EE_FORMAT_BIN, "UTO: unknown Textobjekt" );
const BinTextObject& rBinObj = (const BinTextObject&)rObj; const BinTextObject& rBinObj = (const BinTextObject&)rObj;
if ( nDestPara > aContents.Count() ) if (nDestPara > aContents.size())
nDestPara = aContents.Count(); nDestPara = aContents.size();
const sal_uInt16 nParas = rBinObj.GetContents().Count(); const ContentInfosType& rCIs = rBinObj.aContents;
for ( sal_uInt16 nP = 0; nP < nParas; nP++ ) for (size_t i = 0, n = rCIs.size(); i < n; ++i)
{ {
ContentInfo* pC = rBinObj.GetContents()[ nP ]; const ContentInfo& rC = rCIs[i];
ContentInfo* pNew = new ContentInfo( *pC, *GetPool() ); size_t nPos = nDestPara + i;
aContents.Insert( pNew, nDestPara+nP ); aContents.insert(
aContents.begin()+nPos, new ContentInfo(rC, *GetPool()));
} }
ClearPortionInfo(); ClearPortionInfo();
} }
EditTextObject* BinTextObject::CreateTextObject( sal_uInt16 nPara, sal_uInt16 nParas ) const EditTextObject* BinTextObject::CreateTextObject(size_t nPara, size_t nParas) const
{ {
if ( ( nPara >= aContents.Count() ) || !nParas ) if (nPara >= aContents.size() || !nParas)
return NULL; return NULL;
// Only split the Pool, when a the Pool is set externally. // Only split the Pool, when a the Pool is set externally.
@@ -723,26 +720,26 @@ EditTextObject* BinTextObject::CreateTextObject( sal_uInt16 nPara, sal_uInt16 nP
// If text contains different ScriptTypes, this shouldn't be a problem... // If text contains different ScriptTypes, this shouldn't be a problem...
pObj->nScriptType = nScriptType; pObj->nScriptType = nScriptType;
const sal_uInt16 nEndPara = nPara+nParas-1; const size_t nEndPara = nPara+nParas-1;
for ( sal_uInt16 nP = nPara; nP <= nEndPara; nP++ ) for (size_t i = nPara; i <= nEndPara; ++i)
{ {
ContentInfo* pC = aContents[ nP ]; const ContentInfo& rC = aContents[i];
ContentInfo* pNew = new ContentInfo( *pC, *pObj->GetPool() ); ContentInfo* pNew = new ContentInfo(rC, *pObj->GetPool());
pObj->GetContents().Insert( pNew, pObj->GetContents().Count() ); pObj->aContents.push_back(pNew);
} }
return pObj; return pObj;
} }
void BinTextObject::RemoveParagraph( sal_uInt16 nPara ) void BinTextObject::RemoveParagraph(size_t nPara)
{ {
DBG_ASSERT( nPara < aContents.Count(), "BinTextObject::GetText: Paragraph does not exist!" ); DBG_ASSERT( nPara < aContents.size(), "BinTextObject::GetText: Paragraph does not exist!" );
if ( nPara < aContents.Count() ) if (nPara >= aContents.size())
{ return;
ContentInfo* pC = aContents[ nPara ];
aContents.Remove( nPara ); ContentInfosType::iterator it = aContents.begin();
delete pC; std::advance(it, nPara);
ClearPortionInfo(); aContents.erase(it);
} ClearPortionInfo();
} }
sal_Bool BinTextObject::HasPortionInfo() const sal_Bool BinTextObject::HasPortionInfo() const
@@ -763,29 +760,28 @@ void BinTextObject::ClearPortionInfo()
sal_Bool BinTextObject::HasOnlineSpellErrors() const sal_Bool BinTextObject::HasOnlineSpellErrors() const
{ {
for ( sal_uInt16 n = 0; n < aContents.Count(); n++ ) ContentInfosType::const_iterator it = aContents.begin(), itEnd = aContents.end();
for (; it != itEnd; ++it)
{ {
ContentInfo* p = aContents.GetObject( n ); if ( it->GetWrongList() && !it->GetWrongList()->empty() )
if ( p->GetWrongList() && !p->GetWrongList()->empty() )
return true; return true;
} }
return false; return false;
} }
sal_Bool BinTextObject::HasCharAttribs( sal_uInt16 _nWhich ) const sal_Bool BinTextObject::HasCharAttribs( sal_uInt16 _nWhich ) const
{ {
for ( sal_uInt16 nPara = GetContents().Count(); nPara; ) for (size_t nPara = aContents.size(); nPara; )
{ {
ContentInfo* pC = GetContents().GetObject( --nPara ); const ContentInfo& rC = aContents[--nPara];
sal_uInt16 nAttribs = pC->GetAttribs().Count(); sal_uInt16 nAttribs = rC.GetAttribs().Count();
if ( nAttribs && !_nWhich ) if ( nAttribs && !_nWhich )
return true; return true;
for ( sal_uInt16 nAttr = nAttribs; nAttr; ) for ( sal_uInt16 nAttr = nAttribs; nAttr; )
{ {
XEditAttribute* pX = pC->GetAttribs().GetObject( --nAttr ); XEditAttribute* pX = rC.GetAttribs().GetObject( --nAttr );
if ( pX->GetItem()->Which() == _nWhich ) if ( pX->GetItem()->Which() == _nWhich )
return true; return true;
} }
@@ -796,36 +792,33 @@ sal_Bool BinTextObject::HasCharAttribs( sal_uInt16 _nWhich ) const
void BinTextObject::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const void BinTextObject::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const
{ {
rLst.clear(); rLst.clear();
ContentInfo* pC = GetContents().GetObject( nPara ); const ContentInfo& rC = aContents[nPara];
if ( pC ) for ( sal_uInt16 nAttr = 0; nAttr < rC.GetAttribs().Count(); nAttr++ )
{ {
for ( sal_uInt16 nAttr = 0; nAttr < pC->GetAttribs().Count(); nAttr++ ) XEditAttribute* pAttr = rC.GetAttribs().GetObject( nAttr );
{ EECharAttrib aEEAttr;
XEditAttribute* pAttr = pC->GetAttribs().GetObject( nAttr ); aEEAttr.pAttr = pAttr->GetItem();
EECharAttrib aEEAttr; aEEAttr.nPara = nPara;
aEEAttr.pAttr = pAttr->GetItem(); aEEAttr.nStart = pAttr->GetStart();
aEEAttr.nPara = nPara; aEEAttr.nEnd = pAttr->GetEnd();
aEEAttr.nStart = pAttr->GetStart(); rLst.push_back(aEEAttr);
aEEAttr.nEnd = pAttr->GetEnd();
rLst.push_back(aEEAttr);
}
} }
} }
void BinTextObject::MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd ) void BinTextObject::MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd )
{ {
sal_Bool bChanged = false; bool bChanged = false;
for ( sal_uInt16 nPara = GetContents().Count(); nPara; ) for (size_t nPara = aContents.size(); nPara; )
{ {
ContentInfo* pC = GetContents().GetObject( --nPara ); ContentInfo& rC = aContents[--nPara];
for ( sal_uInt16 nW = nStart; nW <= nEnd; nW++ ) for ( sal_uInt16 nW = nStart; nW <= nEnd; nW++ )
{ {
if ( ( pC->GetParaAttribs().GetItemState( nW, false ) != SFX_ITEM_ON ) if ( ( rC.GetParaAttribs().GetItemState( nW, false ) != SFX_ITEM_ON )
&& ( rAttribs.GetItemState( nW, false ) == SFX_ITEM_ON ) ) && ( rAttribs.GetItemState( nW, false ) == SFX_ITEM_ON ) )
{ {
pC->GetParaAttribs().Put( rAttribs.Get( nW ) ); rC.GetParaAttribs().Put( rAttribs.Get( nW ) );
bChanged = true; bChanged = true;
} }
} }
@@ -842,15 +835,15 @@ sal_Bool BinTextObject::IsFieldObject() const
const SvxFieldItem* BinTextObject::GetField() const const SvxFieldItem* BinTextObject::GetField() const
{ {
if ( GetContents().Count() == 1 ) if (aContents.size() == 1)
{ {
ContentInfo* pC = GetContents()[0]; const ContentInfo& rC = aContents[0];
if ( pC->GetText().Len() == 1 ) if (rC.GetText().Len() == 1)
{ {
sal_uInt16 nAttribs = pC->GetAttribs().Count(); sal_uInt16 nAttribs = rC.GetAttribs().Count();
for ( sal_uInt16 nAttr = nAttribs; nAttr; ) for ( sal_uInt16 nAttr = nAttribs; nAttr; )
{ {
XEditAttribute* pX = pC->GetAttribs().GetObject( --nAttr ); XEditAttribute* pX = rC.GetAttribs().GetObject( --nAttr );
if ( pX->GetItem()->Which() == EE_FEATURE_FIELD ) if ( pX->GetItem()->Which() == EE_FEATURE_FIELD )
return (const SvxFieldItem*)pX->GetItem(); return (const SvxFieldItem*)pX->GetItem();
} }
@@ -861,14 +854,14 @@ const SvxFieldItem* BinTextObject::GetField() const
sal_Bool BinTextObject::HasField( TypeId aType ) const sal_Bool BinTextObject::HasField( TypeId aType ) const
{ {
sal_uInt16 nParagraphs = GetContents().Count(); size_t nParagraphs = aContents.size();
for ( sal_uInt16 nPara = 0; nPara < nParagraphs; nPara++ ) for (size_t nPara = 0; nPara < nParagraphs; ++nPara)
{ {
ContentInfo* pC = GetContents().GetObject( nPara ); const ContentInfo& rC = aContents[nPara];
sal_uInt16 nAttrs = pC->GetAttribs().Count(); sal_uInt16 nAttrs = rC.GetAttribs().Count();
for ( sal_uInt16 nAttr = 0; nAttr < nAttrs; nAttr++ ) for ( sal_uInt16 nAttr = 0; nAttr < nAttrs; nAttr++ )
{ {
XEditAttribute* pAttr = pC->GetAttribs()[nAttr]; XEditAttribute* pAttr = rC.GetAttribs()[nAttr];
if ( pAttr->GetItem()->Which() == EE_FEATURE_FIELD ) if ( pAttr->GetItem()->Which() == EE_FEATURE_FIELD )
{ {
if ( !aType ) if ( !aType )
@@ -883,16 +876,16 @@ sal_Bool BinTextObject::HasField( TypeId aType ) const
return false; return false;
} }
SfxItemSet BinTextObject::GetParaAttribs( sal_uInt16 nPara ) const SfxItemSet BinTextObject::GetParaAttribs(size_t nPara) const
{ {
ContentInfo* pC = GetContents().GetObject( nPara ); const ContentInfo& rC = aContents[nPara];
return pC->GetParaAttribs(); return rC.GetParaAttribs();
} }
void BinTextObject::SetParaAttribs( sal_uInt16 nPara, const SfxItemSet& rAttribs ) void BinTextObject::SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs)
{ {
ContentInfo* pC = GetContents().GetObject( nPara ); ContentInfo& rC = aContents[nPara];
pC->GetParaAttribs().Set( rAttribs ); rC.GetParaAttribs().Set(rAttribs);
ClearPortionInfo(); ClearPortionInfo();
} }
@@ -900,16 +893,16 @@ sal_Bool BinTextObject::RemoveCharAttribs( sal_uInt16 _nWhich )
{ {
sal_Bool bChanged = false; sal_Bool bChanged = false;
for ( sal_uInt16 nPara = GetContents().Count(); nPara; ) for ( sal_uInt16 nPara = aContents.size(); nPara; )
{ {
ContentInfo* pC = GetContents().GetObject( --nPara ); ContentInfo& rC = aContents[--nPara];
for ( sal_uInt16 nAttr = pC->GetAttribs().Count(); nAttr; ) for ( sal_uInt16 nAttr = rC.GetAttribs().Count(); nAttr; )
{ {
XEditAttribute* pAttr = pC->GetAttribs().GetObject( --nAttr ); XEditAttribute* pAttr = rC.GetAttribs().GetObject( --nAttr );
if ( !_nWhich || ( pAttr->GetItem()->Which() == _nWhich ) ) if ( !_nWhich || ( pAttr->GetItem()->Which() == _nWhich ) )
{ {
pC->GetAttribs().Remove( nAttr ); rC.GetAttribs().Remove( nAttr );
DestroyAttrib( pAttr ); DestroyAttrib( pAttr );
bChanged = true; bChanged = true;
} }
@@ -924,23 +917,23 @@ sal_Bool BinTextObject::RemoveCharAttribs( sal_uInt16 _nWhich )
sal_Bool BinTextObject::RemoveParaAttribs( sal_uInt16 _nWhich ) sal_Bool BinTextObject::RemoveParaAttribs( sal_uInt16 _nWhich )
{ {
sal_Bool bChanged = false; bool bChanged = false;
for ( sal_uInt16 nPara = GetContents().Count(); nPara; ) for (size_t nPara = aContents.size(); nPara; )
{ {
ContentInfo* pC = GetContents().GetObject( --nPara ); ContentInfo& rC = aContents[--nPara];
if ( !_nWhich ) if ( !_nWhich )
{ {
if( pC->GetParaAttribs().Count() ) if (rC.GetParaAttribs().Count())
bChanged = true; bChanged = true;
pC->GetParaAttribs().ClearItem(); rC.GetParaAttribs().ClearItem();
} }
else else
{ {
if ( pC->GetParaAttribs().GetItemState( _nWhich ) == SFX_ITEM_ON ) if (rC.GetParaAttribs().GetItemState(_nWhich) == SFX_ITEM_ON)
{ {
pC->GetParaAttribs().ClearItem( _nWhich ); rC.GetParaAttribs().ClearItem(_nWhich);
bChanged = true; bChanged = true;
} }
} }
@@ -954,52 +947,52 @@ sal_Bool BinTextObject::RemoveParaAttribs( sal_uInt16 _nWhich )
sal_Bool BinTextObject::HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const sal_Bool BinTextObject::HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const
{ {
sal_uInt16 nParagraphs = GetContents().Count(); size_t nParagraphs = aContents.size();
for ( sal_uInt16 nPara = 0; nPara < nParagraphs; nPara++ ) for (size_t nPara = 0; nPara < nParagraphs; ++nPara)
{ {
ContentInfo* pC = GetContents().GetObject( nPara ); const ContentInfo& rC = aContents[nPara];
if ( ( pC->GetFamily() == eFamily ) && ( pC->GetStyle() == rName ) ) if (rC.GetFamily() == eFamily && rC.GetStyle() == rName)
return true; return true;
} }
return false; return false;
} }
void BinTextObject::GetStyleSheet( sal_uInt16 nPara, XubString& rName, SfxStyleFamily& rFamily ) const void BinTextObject::GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& rFamily) const
{ {
if ( nPara < aContents.Count() ) if (nPara >= aContents.size())
{ return;
ContentInfo* pC = aContents[ nPara ];
rName = pC->GetStyle(); const ContentInfo& rC = aContents[nPara];
rFamily = pC->GetFamily(); rName = rC.GetStyle();
} rFamily = rC.GetFamily();
} }
void BinTextObject::SetStyleSheet( sal_uInt16 nPara, const XubString& rName, const SfxStyleFamily& rFamily ) void BinTextObject::SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& rFamily)
{ {
if ( nPara < aContents.Count() ) if (nPara >= aContents.size())
{ return;
ContentInfo* pC = aContents[ nPara ];
pC->GetStyle() = rName; ContentInfo& rC = aContents[nPara];
pC->GetFamily() = rFamily; rC.GetStyle() = rName;
} rC.GetFamily() = rFamily;
} }
sal_Bool BinTextObject::ImpChangeStyleSheets( sal_Bool BinTextObject::ImpChangeStyleSheets(
const XubString& rOldName, SfxStyleFamily eOldFamily, const XubString& rOldName, SfxStyleFamily eOldFamily,
const XubString& rNewName, SfxStyleFamily eNewFamily ) const XubString& rNewName, SfxStyleFamily eNewFamily )
{ {
const sal_uInt16 nParagraphs = GetContents().Count(); const size_t nParagraphs = aContents.size();
sal_Bool bChanges = false; bool bChanges = false;
for ( sal_uInt16 nPara = 0; nPara < nParagraphs; nPara++ ) for (size_t nPara = 0; nPara < nParagraphs; ++nPara)
{ {
ContentInfo* pC = GetContents().GetObject( nPara ); ContentInfo& rC = aContents[nPara];
if ( pC->GetFamily() == eOldFamily ) if ( rC.GetFamily() == eOldFamily )
{ {
if ( pC->GetStyle() == rOldName ) if ( rC.GetStyle() == rOldName )
{ {
pC->GetStyle() = rNewName; rC.GetStyle() = rNewName;
pC->GetFamily() = eNewFamily; rC.GetFamily() = eNewFamily;
bChanges = true; bChanges = true;
} }
} }
@@ -1043,34 +1036,34 @@ void BinTextObject::StoreData( SvStream& rOStream ) const
rOStream << (sal_uInt16) eEncoding; rOStream << (sal_uInt16) eEncoding;
// The number of paragraphs ... // The number of paragraphs ...
sal_uInt16 nParagraphs = GetContents().Count(); size_t nParagraphs = aContents.size();
rOStream << nParagraphs; rOStream << static_cast<sal_uInt16>(nParagraphs);
sal_Unicode nUniChar = CH_FEATURE; sal_Unicode nUniChar = CH_FEATURE;
char cFeatureConverted = rtl::OString(&nUniChar, 1, eEncoding).toChar(); char cFeatureConverted = rtl::OString(&nUniChar, 1, eEncoding).toChar();
// The individual paragraphs ... // The individual paragraphs ...
for ( sal_uInt16 nPara = 0; nPara < nParagraphs; nPara++ ) for (size_t nPara = 0; nPara < nParagraphs; ++nPara)
{ {
ContentInfo* pC = GetContents().GetObject( nPara ); const ContentInfo& rC = aContents[nPara];
// Text... // Text...
rtl::OStringBuffer aBuffer(rtl::OUStringToOString(pC->GetText(), eEncoding)); rtl::OStringBuffer aBuffer(rtl::OUStringToOString(rC.GetText(), eEncoding));
// Symbols? // Symbols?
sal_Bool bSymbolPara = false; bool bSymbolPara = false;
if ( pC->GetParaAttribs().GetItemState( EE_CHAR_FONTINFO ) == SFX_ITEM_ON ) if (rC.GetParaAttribs().GetItemState( EE_CHAR_FONTINFO ) == SFX_ITEM_ON)
{ {
const SvxFontItem& rFontItem = (const SvxFontItem&)pC->GetParaAttribs().Get( EE_CHAR_FONTINFO ); const SvxFontItem& rFontItem = (const SvxFontItem&)rC.GetParaAttribs().Get(EE_CHAR_FONTINFO);
if ( rFontItem.GetCharSet() == RTL_TEXTENCODING_SYMBOL ) if ( rFontItem.GetCharSet() == RTL_TEXTENCODING_SYMBOL )
{ {
aBuffer = rtl::OStringBuffer(rtl::OUStringToOString(pC->GetText(), RTL_TEXTENCODING_SYMBOL)); aBuffer = rtl::OStringBuffer(rtl::OUStringToOString(rC.GetText(), RTL_TEXTENCODING_SYMBOL));
bSymbolPara = true; bSymbolPara = true;
} }
} }
for ( sal_uInt16 nA = 0; nA < pC->GetAttribs().Count(); nA++ ) for ( sal_uInt16 nA = 0; nA < rC.GetAttribs().Count(); nA++ )
{ {
XEditAttribute* pAttr = pC->GetAttribs().GetObject( nA ); XEditAttribute* pAttr = rC.GetAttribs().GetObject( nA );
if ( pAttr->GetItem()->Which() == EE_CHAR_FONTINFO ) if ( pAttr->GetItem()->Which() == EE_CHAR_FONTINFO )
{ {
@@ -1079,7 +1072,7 @@ void BinTextObject::StoreData( SvStream& rOStream ) const
|| ( bSymbolPara && ( rFontItem.GetCharSet() != RTL_TEXTENCODING_SYMBOL ) ) ) || ( bSymbolPara && ( rFontItem.GetCharSet() != RTL_TEXTENCODING_SYMBOL ) ) )
{ {
// Not correctly converted // Not correctly converted
String aPart( pC->GetText(), pAttr->GetStart(), pAttr->GetEnd() - pAttr->GetStart() ); String aPart( rC.GetText(), pAttr->GetStart(), pAttr->GetEnd() - pAttr->GetStart() );
rtl::OString aNew(rtl::OUStringToOString(aPart, rFontItem.GetCharSet())); rtl::OString aNew(rtl::OUStringToOString(aPart, rFontItem.GetCharSet()));
aBuffer.remove(pAttr->GetStart(), pAttr->GetEnd() - pAttr->GetStart()); aBuffer.remove(pAttr->GetStart(), pAttr->GetEnd() - pAttr->GetStart());
aBuffer.insert(pAttr->GetStart(), aNew); aBuffer.insert(pAttr->GetStart(), aNew);
@@ -1093,7 +1086,7 @@ void BinTextObject::StoreData( SvStream& rOStream ) const
// SvxFontItem::Store() to store StarBats instead of StarSymbol! // SvxFontItem::Store() to store StarBats instead of StarSymbol!
for ( sal_uInt16 nChar = pAttr->GetStart(); nChar < pAttr->GetEnd(); nChar++ ) for ( sal_uInt16 nChar = pAttr->GetStart(); nChar < pAttr->GetEnd(); nChar++ )
{ {
sal_Unicode cOld = pC->GetText().GetChar( nChar ); sal_Unicode cOld = rC.GetText().GetChar( nChar );
char cConv = rtl::OUStringToOString(rtl::OUString(ConvertFontToSubsFontChar(hConv, cOld)), RTL_TEXTENCODING_SYMBOL).toChar(); char cConv = rtl::OUStringToOString(rtl::OUString(ConvertFontToSubsFontChar(hConv, cOld)), RTL_TEXTENCODING_SYMBOL).toChar();
if ( cConv ) if ( cConv )
aBuffer[nChar] = cConv; aBuffer[nChar] = cConv;
@@ -1108,17 +1101,17 @@ void BinTextObject::StoreData( SvStream& rOStream ) const
// StarSymbol as paragraph attribute or in StyleSheet? // StarSymbol as paragraph attribute or in StyleSheet?
FontToSubsFontConverter hConv = NULL; FontToSubsFontConverter hConv = NULL;
if ( pC->GetParaAttribs().GetItemState( EE_CHAR_FONTINFO ) == SFX_ITEM_ON ) if (rC.GetParaAttribs().GetItemState( EE_CHAR_FONTINFO ) == SFX_ITEM_ON)
{ {
hConv = CreateFontToSubsFontConverter( ((const SvxFontItem&)pC->GetParaAttribs().Get( EE_CHAR_FONTINFO )).GetFamilyName(), FONTTOSUBSFONT_EXPORT | FONTTOSUBSFONT_ONLYOLDSOSYMBOLFONTS ); hConv = CreateFontToSubsFontConverter( ((const SvxFontItem&)rC.GetParaAttribs().Get( EE_CHAR_FONTINFO )).GetFamilyName(), FONTTOSUBSFONT_EXPORT | FONTTOSUBSFONT_ONLYOLDSOSYMBOLFONTS );
} }
if ( hConv ) if ( hConv )
{ {
for ( sal_uInt16 nChar = 0; nChar < pC->GetText().Len(); nChar++ ) for ( sal_uInt16 nChar = 0; nChar < rC.GetText().Len(); nChar++ )
{ {
if ( !pC->GetAttribs().FindAttrib( EE_CHAR_FONTINFO, nChar ) ) if ( !rC.GetAttribs().FindAttrib( EE_CHAR_FONTINFO, nChar ) )
{ {
sal_Unicode cOld = pC->GetText().GetChar( nChar ); sal_Unicode cOld = rC.GetText().GetChar( nChar );
char cConv = rtl::OUStringToOString(rtl::OUString(ConvertFontToSubsFontChar(hConv, cOld)), RTL_TEXTENCODING_SYMBOL).toChar(); char cConv = rtl::OUStringToOString(rtl::OUString(ConvertFontToSubsFontChar(hConv, cOld)), RTL_TEXTENCODING_SYMBOL).toChar();
if ( cConv ) if ( cConv )
aBuffer[nChar] = cConv; aBuffer[nChar] = cConv;
@@ -1135,14 +1128,14 @@ void BinTextObject::StoreData( SvStream& rOStream ) const
write_lenPrefixed_uInt8s_FromOString<sal_uInt16>(rOStream, aText); write_lenPrefixed_uInt8s_FromOString<sal_uInt16>(rOStream, aText);
// StyleName and Family... // StyleName and Family...
write_lenPrefixed_uInt8s_FromOUString<sal_uInt16>(rOStream, pC->GetStyle(), eEncoding); write_lenPrefixed_uInt8s_FromOUString<sal_uInt16>(rOStream, rC.GetStyle(), eEncoding);
rOStream << (sal_uInt16)pC->GetFamily(); rOStream << static_cast<sal_uInt16>(rC.GetFamily());
// Paragraph attributes ... // Paragraph attributes ...
pC->GetParaAttribs().Store( rOStream ); rC.GetParaAttribs().Store( rOStream );
// The number of attributes ... // The number of attributes ...
sal_uInt16 nAttribs = pC->GetAttribs().Count(); sal_uInt16 nAttribs = rC.GetAttribs().Count();
rOStream << nAttribs; rOStream << nAttribs;
// And the individual attributes // And the individual attributes
@@ -1150,7 +1143,7 @@ void BinTextObject::StoreData( SvStream& rOStream ) const
// Which = 2; Surregat = 2; Start = 2; End = 2; // Which = 2; Surregat = 2; Start = 2; End = 2;
for ( sal_uInt16 nAttr = 0; nAttr < nAttribs; nAttr++ ) for ( sal_uInt16 nAttr = 0; nAttr < nAttribs; nAttr++ )
{ {
XEditAttribute* pX = pC->GetAttribs().GetObject( nAttr ); XEditAttribute* pX = rC.GetAttribs().GetObject( nAttr );
rOStream << pX->GetItem()->Which(); rOStream << pX->GetItem()->Which();
GetPool()->StoreSurrogate( rOStream, pX->GetItem() ); GetPool()->StoreSurrogate( rOStream, pX->GetItem() );
@@ -1172,17 +1165,17 @@ void BinTextObject::StoreData( SvStream& rOStream ) const
{ {
for ( sal_uInt16 nPara = 0; nPara < nParagraphs; nPara++ ) for ( sal_uInt16 nPara = 0; nPara < nParagraphs; nPara++ )
{ {
ContentInfo* pC = GetContents().GetObject( nPara ); const ContentInfo& rC = aContents[nPara];
sal_uInt16 nL = pC->GetText().Len(); sal_uInt16 nL = rC.GetText().Len();
rOStream << nL; rOStream << nL;
rOStream.Write( pC->GetText().GetBuffer(), nL*sizeof(sal_Unicode) ); rOStream.Write(rC.GetText().GetBuffer(), nL*sizeof(sal_Unicode));
// StyleSheetName must be Unicode too! // StyleSheetName must be Unicode too!
// Copy/Paste from EA3 to BETA or from BETA to EA3 not possible, not needed... // Copy/Paste from EA3 to BETA or from BETA to EA3 not possible, not needed...
// If needed, change nL back to sal_uLong and increase version... // If needed, change nL back to sal_uLong and increase version...
nL = pC->GetStyle().Len(); nL = rC.GetStyle().Len();
rOStream << nL; rOStream << nL;
rOStream.Write( pC->GetStyle().GetBuffer(), nL*sizeof(sal_Unicode) ); rOStream.Write(rC.GetStyle().GetBuffer(), nL*sizeof(sal_Unicode));
} }
} }
} }
@@ -1408,25 +1401,25 @@ void BinTextObject::CreateData( SvStream& rIStream )
{ {
for ( sal_uInt16 nPara = 0; nPara < nParagraphs; nPara++ ) for ( sal_uInt16 nPara = 0; nPara < nParagraphs; nPara++ )
{ {
ContentInfo* pC = GetContents().GetObject( nPara ); ContentInfo& rC = aContents[nPara];
sal_uInt16 nL; sal_uInt16 nL;
// Text // Text
rIStream >> nL; rIStream >> nL;
if ( nL ) if ( nL )
{ {
pC->GetText().AllocBuffer( nL ); rC.GetText().AllocBuffer( nL );
rIStream.Read( pC->GetText().GetBufferAccess(), nL*sizeof(sal_Unicode) ); rIStream.Read(rC.GetText().GetBufferAccess(), nL*sizeof(sal_Unicode));
pC->GetText().ReleaseBufferAccess( (sal_uInt16)nL ); rC.GetText().ReleaseBufferAccess(nL);
} }
// StyleSheetName // StyleSheetName
rIStream >> nL; rIStream >> nL;
if ( nL ) if ( nL )
{ {
pC->GetStyle().AllocBuffer( nL ); rC.GetStyle().AllocBuffer(nL);
rIStream.Read( pC->GetStyle().GetBufferAccess(), nL*sizeof(sal_Unicode) ); rIStream.Read(rC.GetStyle().GetBufferAccess(), nL*sizeof(sal_Unicode) );
pC->GetStyle().ReleaseBufferAccess( (sal_uInt16)nL ); rC.GetStyle().ReleaseBufferAccess(nL);
} }
} }
} }
@@ -1437,13 +1430,13 @@ void BinTextObject::CreateData( SvStream& rIStream )
// Works only if tab positions are set, not when DefTab. // Works only if tab positions are set, not when DefTab.
if ( nVersion < 500 ) if ( nVersion < 500 )
{ {
for ( sal_uInt16 n = 0; n < aContents.Count(); n++ ) for (size_t i = 0, n = aContents.size(); i < n; ++i)
{ {
ContentInfo* pC = aContents.GetObject( n ); ContentInfo& rC = aContents[i];
const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&) pC->GetParaAttribs().Get( EE_PARA_LRSPACE ); const SvxLRSpaceItem& rLRSpace = static_cast<const SvxLRSpaceItem&>(rC.GetParaAttribs().Get(EE_PARA_LRSPACE));
if ( rLRSpace.GetTxtLeft() && ( pC->GetParaAttribs().GetItemState( EE_PARA_TABS ) == SFX_ITEM_ON ) ) if ( rLRSpace.GetTxtLeft() && ( rC.GetParaAttribs().GetItemState( EE_PARA_TABS ) == SFX_ITEM_ON ) )
{ {
const SvxTabStopItem& rTabs = (const SvxTabStopItem&) pC->GetParaAttribs().Get( EE_PARA_TABS ); const SvxTabStopItem& rTabs = static_cast<const SvxTabStopItem&>(rC.GetParaAttribs().Get(EE_PARA_TABS));
SvxTabStopItem aNewTabs( 0, 0, SVX_TAB_ADJUST_LEFT, EE_PARA_TABS ); SvxTabStopItem aNewTabs( 0, 0, SVX_TAB_ADJUST_LEFT, EE_PARA_TABS );
for ( sal_uInt16 t = 0; t < rTabs.Count(); t++ ) for ( sal_uInt16 t = 0; t < rTabs.Count(); t++ )
{ {
@@ -1451,7 +1444,7 @@ void BinTextObject::CreateData( SvStream& rIStream )
aNewTabs.Insert( SvxTabStop( rT.GetTabPos() - rLRSpace.GetTxtLeft(), aNewTabs.Insert( SvxTabStop( rT.GetTabPos() - rLRSpace.GetTxtLeft(),
rT.GetAdjustment(), rT.GetDecimal(), rT.GetFill() ) ); rT.GetAdjustment(), rT.GetDecimal(), rT.GetFill() ) );
} }
pC->GetParaAttribs().Put( aNewTabs ); rC.GetParaAttribs().Put( aNewTabs );
} }
} }
} }
@@ -1467,7 +1460,7 @@ bool BinTextObject::operator==( const BinTextObject& rCompare ) const
if( this == &rCompare ) if( this == &rCompare )
return true; return true;
if( ( aContents.Count() != rCompare.aContents.Count() ) || if( ( aContents.size() != rCompare.aContents.size() ) ||
( pPool != rCompare.pPool ) || ( pPool != rCompare.pPool ) ||
( nMetric != rCompare.nMetric ) || ( nMetric != rCompare.nMetric ) ||
( nUserType!= rCompare.nUserType ) || ( nUserType!= rCompare.nUserType ) ||
@@ -1475,10 +1468,9 @@ bool BinTextObject::operator==( const BinTextObject& rCompare ) const
( bVertical != rCompare.bVertical ) ) ( bVertical != rCompare.bVertical ) )
return false; return false;
sal_uInt16 n; for (size_t i = 0, n = aContents.size(); i < n; ++i)
for( n = 0; n < aContents.Count(); n++ )
{ {
if( !( *aContents.GetObject( n ) == *rCompare.aContents.GetObject( n ) ) ) if (aContents[i] != rCompare.aContents[i])
return false; return false;
} }
@@ -1488,15 +1480,15 @@ bool BinTextObject::operator==( const BinTextObject& rCompare ) const
// #i102062# // #i102062#
bool BinTextObject::isWrongListEqual(const BinTextObject& rCompare) const bool BinTextObject::isWrongListEqual(const BinTextObject& rCompare) const
{ {
if(GetContents().Count() != rCompare.GetContents().Count()) if (aContents.size() != rCompare.aContents.size())
{ {
return false; return false;
} }
for(sal_uInt16 a(0); a < GetContents().Count(); a++) for (size_t i = 0, n = aContents.size(); i < n; ++i)
{ {
const ContentInfo& rCandA(*GetContents().GetObject(a)); const ContentInfo& rCandA = aContents[i];
const ContentInfo& rCandB(*rCompare.GetContents().GetObject(a)); const ContentInfo& rCandB = rCompare.aContents[i];
if(!rCandA.isWrongListEqual(rCandB)) if(!rCandA.isWrongListEqual(rCandB))
{ {

View File

@@ -167,22 +167,23 @@ public:
WrongList* GetWrongList() const { return pWrongs; } WrongList* GetWrongList() const { return pWrongs; }
void SetWrongList( WrongList* p ) { pWrongs = p; } void SetWrongList( WrongList* p ) { pWrongs = p; }
bool operator==( const ContentInfo& rCompare ) const; bool operator==( const ContentInfo& rCompare ) const;
bool operator!=( const ContentInfo& rCompare ) const;
// #i102062# // #i102062#
bool isWrongListEqual(const ContentInfo& rCompare) const; bool isWrongListEqual(const ContentInfo& rCompare) const;
}; };
typedef ContentInfo* ContentInfoPtr;
SV_DECL_PTRARR( ContentInfoList, ContentInfoPtr, 1 )
class BinTextObject : public EditTextObject, public SfxItemPoolUser class BinTextObject : public EditTextObject, public SfxItemPoolUser
{ {
using EditTextObject::operator==; using EditTextObject::operator==;
using EditTextObject::isWrongListEqual; using EditTextObject::isWrongListEqual;
public:
typedef boost::ptr_vector<ContentInfo> ContentInfosType;
private: private:
ContentInfoList aContents; ContentInfosType aContents;
SfxItemPool* pPool; SfxItemPool* pPool;
XParaPortionList* pPortionInfo; XParaPortionList* pPortionInfo;
@@ -197,7 +198,6 @@ private:
bool bStoreUnicodeStrings:1; bool bStoreUnicodeStrings:1;
protected: protected:
void DeleteContents();
virtual void StoreData( SvStream& rOStream ) const; virtual void StoreData( SvStream& rOStream ) const;
virtual void CreateData( SvStream& rIStream ); virtual void CreateData( SvStream& rIStream );
sal_Bool ImpChangeStyleSheets( const String& rOldName, SfxStyleFamily eOldFamily, sal_Bool ImpChangeStyleSheets( const String& rOldName, SfxStyleFamily eOldFamily,
@@ -228,18 +228,18 @@ public:
XEditAttribute* CreateAttrib( const SfxPoolItem& rItem, sal_uInt16 nStart, sal_uInt16 nEnd ); XEditAttribute* CreateAttrib( const SfxPoolItem& rItem, sal_uInt16 nStart, sal_uInt16 nEnd );
void DestroyAttrib( XEditAttribute* pAttr ); void DestroyAttrib( XEditAttribute* pAttr );
ContentInfoList& GetContents() { return aContents; } ContentInfosType& GetContents();
const ContentInfoList& GetContents() const { return aContents; } const ContentInfosType& GetContents() const;
SfxItemPool* GetPool() const { return pPool; } SfxItemPool* GetPool() const { return pPool; }
XParaPortionList* GetPortionInfo() const { return pPortionInfo; } XParaPortionList* GetPortionInfo() const { return pPortionInfo; }
void SetPortionInfo( XParaPortionList* pP ) void SetPortionInfo( XParaPortionList* pP )
{ pPortionInfo = pP; } { pPortionInfo = pP; }
virtual sal_uInt16 GetParagraphCount() const; virtual size_t GetParagraphCount() const;
virtual String GetText( sal_uInt16 nParagraph ) const; virtual String GetText(size_t nParagraph) const;
virtual void Insert( const EditTextObject& rObj, sal_uInt16 nPara ); virtual void Insert(const EditTextObject& rObj, size_t nPara);
virtual EditTextObject* CreateTextObject( sal_uInt16 nPara, sal_uInt16 nParas = 1 ) const; virtual EditTextObject* CreateTextObject(size_t nPara, size_t nParas = 1) const;
virtual void RemoveParagraph( sal_uInt16 nPara ); virtual void RemoveParagraph(size_t nPara);
virtual sal_Bool HasPortionInfo() const; virtual sal_Bool HasPortionInfo() const;
virtual void ClearPortionInfo(); virtual void ClearPortionInfo();
@@ -258,12 +258,12 @@ public:
virtual const SvxFieldItem* GetField() const; virtual const SvxFieldItem* GetField() const;
virtual sal_Bool HasField( TypeId Type = NULL ) const; virtual sal_Bool HasField( TypeId Type = NULL ) const;
SfxItemSet GetParaAttribs( sal_uInt16 nPara ) const; virtual SfxItemSet GetParaAttribs(size_t nPara) const;
void SetParaAttribs( sal_uInt16 nPara, const SfxItemSet& rAttribs ); virtual void SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs);
virtual sal_Bool HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const; virtual sal_Bool HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const;
virtual void GetStyleSheet( sal_uInt16 nPara, XubString& rName, SfxStyleFamily& eFamily ) const; virtual void GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& eFamily) const;
virtual void SetStyleSheet( sal_uInt16 nPara, const XubString& rName, const SfxStyleFamily& eFamily ); virtual void SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& eFamily);
virtual sal_Bool ChangeStyleSheets( const XubString& rOldName, SfxStyleFamily eOldFamily, virtual sal_Bool ChangeStyleSheets( const XubString& rOldName, SfxStyleFamily eOldFamily,
const String& rNewName, SfxStyleFamily eNewFamily ); const String& rNewName, SfxStyleFamily eNewFamily );
virtual void ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName ); virtual void ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName );

View File

@@ -1239,12 +1239,12 @@ EditSelection ImpEditEngine::InsertBinTextObject( BinTextObject& rTextObject, Ed
bConvertItems = sal_True; bConvertItems = sal_True;
} }
sal_uInt16 nContents = rTextObject.GetContents().Count(); size_t nContents = rTextObject.GetContents().size();
sal_uInt16 nPara = aEditDoc.GetPos( aPaM.GetNode() ); sal_uInt16 nPara = aEditDoc.GetPos( aPaM.GetNode() );
for ( sal_uInt16 n = 0; n < nContents; n++, nPara++ ) for (size_t n = 0; n < nContents; ++n, ++nPara)
{ {
ContentInfo* pC = rTextObject.GetContents().GetObject( n ); ContentInfo* pC = &rTextObject.GetContents()[n];
sal_Bool bNewContent = aPaM.GetNode()->Len() ? sal_False: sal_True; sal_Bool bNewContent = aPaM.GetNode()->Len() ? sal_False: sal_True;
sal_uInt16 nStartPos = aPaM.GetIndex(); sal_uInt16 nStartPos = aPaM.GetIndex();