[Libreoffice-commits] .: sc/inc sc/source
Kohei Yoshida
kohei at kemper.freedesktop.org
Sat May 28 17:44:22 PDT 2011
sc/inc/chartarr.hxx | 36 ++++++++-------
sc/source/core/data/documen5.cxx | 9 +--
sc/source/core/tool/chartarr.cxx | 79 +++++++++++++++++++----------------
sc/source/filter/starcalc/scfobj.cxx | 2
4 files changed, 69 insertions(+), 57 deletions(-)
New commits:
commit 3c471f8d816e173a322b114aea1d52d32b4c5959
Author: Kohei Yoshida <kyoshida at novell.com>
Date: Sat May 28 20:43:16 2011 -0400
Removed dependency on ScCollection from ScChartCollection.
diff --git a/sc/inc/chartarr.hxx b/sc/inc/chartarr.hxx
index 8fe2480..d288d88 100644
--- a/sc/inc/chartarr.hxx
+++ b/sc/inc/chartarr.hxx
@@ -35,6 +35,8 @@
#include "rangelst.hxx"
#include "chartpos.hxx"
+#include <boost/ptr_container/ptr_vector.hpp>
+
class ScAddress;
class Table;
class ScDocument;
@@ -69,7 +71,7 @@ public:
};
-class SC_DLLPUBLIC ScChartArray : public ScDataObject // only parameter-struct
+class SC_DLLPUBLIC ScChartArray // only parameter-struct
{
::rtl::OUString aName;
ScDocument* pDocument;
@@ -81,15 +83,13 @@ private:
ScMemChart* CreateMemChartMulti();
public:
ScChartArray( ScDocument* pDoc, SCTAB nTab,
- SCCOL nStartColP, SCROW nStartRowP,
- SCCOL nEndColP, SCROW nEndRowP,
- const ::rtl::OUString& rChartName );
+ SCCOL nStartColP, SCROW nStartRowP,
+ SCCOL nEndColP, SCROW nEndRowP,
+ const ::rtl::OUString& rChartName );
ScChartArray( ScDocument* pDoc, const ScRangeListRef& rRangeList,
- const ::rtl::OUString& rChartName );
+ const ::rtl::OUString& rChartName );
ScChartArray( const ScChartArray& rArr );
-
- virtual ~ScChartArray();
- virtual ScDataObject* Clone() const;
+ ~ScChartArray();
const ScRangeListRef& GetRangeList() const { return aPositioner.GetRangeList(); }
void SetRangeList( const ScRangeListRef& rNew ) { aPositioner.SetRangeList(rNew); }
@@ -108,16 +108,20 @@ public:
ScMemChart* CreateMemChart();
};
-class ScChartCollection : public ScCollection
+class ScChartCollection
{
+ typedef ::boost::ptr_vector<ScChartArray> DataType;
+ DataType maData;
public:
- ScChartCollection() : ScCollection( 4,4 ) {}
- ScChartCollection( const ScChartCollection& rColl ):
- ScCollection( rColl ) {}
-
- virtual ScDataObject* Clone() const;
- ScChartArray* operator[](sal_uInt16 nIndex) const
- { return (ScChartArray*)At(nIndex); }
+ ScChartCollection();
+ ScChartCollection(const ScChartCollection& rColl);
+
+ SC_DLLPUBLIC void push_back(ScChartArray* p);
+ void clear();
+ size_t size() const;
+ bool empty() const;
+ ScChartArray* operator[](size_t nIndex);
+ const ScChartArray* operator[](size_t nIndex) const;
bool operator==(const ScChartCollection& rCmp) const;
};
diff --git a/sc/source/core/data/documen5.cxx b/sc/source/core/data/documen5.cxx
index fad0033..a983a24 100644
--- a/sc/source/core/data/documen5.cxx
+++ b/sc/source/core/data/documen5.cxx
@@ -130,11 +130,10 @@ void ScDocument::UpdateAllCharts()
if ( !pDrawLayer || !pShell )
return;
- sal_uInt16 nDataCount = pChartCollection->GetCount();
- if ( !nDataCount )
+ if (pChartCollection->empty())
return ; // nothing to do
- sal_uInt16 nPos;
+ size_t nDataCount = pChartCollection->size();
for (SCTAB nTab=0; nTab<=MAXTAB; nTab++)
{
@@ -155,7 +154,7 @@ void ScDocument::UpdateAllCharts()
{
::rtl::OUString aIPName = ((SdrOle2Obj*)pObject)->GetPersistName();
- for (nPos=0; nPos<nDataCount; nPos++)
+ for (size_t nPos = 0; nPos < nDataCount; ++nPos)
{
ScChartArray* pChartObj = (*pChartCollection)[nPos];
if (pChartObj->GetName() == aIPName)
@@ -201,7 +200,7 @@ void ScDocument::UpdateAllCharts()
}
}
- pChartCollection->FreeAll();
+ pChartCollection->clear();
}
sal_Bool ScDocument::HasChartAtPoint( SCTAB nTab, const Point& rPos, String* pName )
diff --git a/sc/source/core/tool/chartarr.cxx b/sc/source/core/tool/chartarr.cxx
index 8cb2175..51524bf 100644
--- a/sc/source/core/tool/chartarr.cxx
+++ b/sc/source/core/tool/chartarr.cxx
@@ -91,32 +91,20 @@ ScChartArray::ScChartArray( ScDocument* pDoc, SCTAB nTab,
{
}
-ScChartArray::ScChartArray( ScDocument* pDoc, const ScRangeListRef& rRangeList,
- const OUString& rChartName ) :
- aName( rChartName ),
- pDocument( pDoc ),
- aPositioner(pDoc, rRangeList),
- bValid( true )
-{
-}
+ScChartArray::ScChartArray(
+ ScDocument* pDoc, const ScRangeListRef& rRangeList, const OUString& rChartName ) :
+ aName( rChartName ),
+ pDocument( pDoc ),
+ aPositioner(pDoc, rRangeList),
+ bValid( true ) {}
ScChartArray::ScChartArray( const ScChartArray& rArr ) :
- ScDataObject(),
- aName(rArr.aName),
- pDocument(rArr.pDocument),
- aPositioner(rArr.aPositioner),
- bValid(rArr.bValid)
-{
-}
+ aName(rArr.aName),
+ pDocument(rArr.pDocument),
+ aPositioner(rArr.aPositioner),
+ bValid(rArr.bValid) {}
-ScChartArray::~ScChartArray()
-{
-}
-
-ScDataObject* ScChartArray::Clone() const
-{
- return new ScChartArray(*this);
-}
+ScChartArray::~ScChartArray() {}
bool ScChartArray::operator==(const ScChartArray& rCmp) const
{
@@ -517,26 +505,47 @@ ScMemChart* ScChartArray::CreateMemChartMulti()
#pragma optimize("",on)
#endif
+ScChartCollection::ScChartCollection() {}
+ScChartCollection::ScChartCollection(const ScChartCollection& r) :
+ maData(r.maData) {}
-//
-// Collection
-//
+void ScChartCollection::push_back(ScChartArray* p)
+{
+ maData.push_back(p);
+}
-ScDataObject* ScChartCollection::Clone() const
+void ScChartCollection::clear()
{
- return new ScChartCollection(*this);
+ maData.clear();
}
-bool ScChartCollection::operator==(const ScChartCollection& rCmp) const
+size_t ScChartCollection::size() const
{
- if (nCount != rCmp.nCount)
- return false;
+ return maData.size();
+}
- for (sal_uInt16 i=0; i<nCount; i++)
- if (!((*(const ScChartArray*)pItems[i]) == (*(const ScChartArray*)rCmp.pItems[i])))
- return false;
+bool ScChartCollection::empty() const
+{
+ return maData.empty();
+}
- return true;
+ScChartArray* ScChartCollection::operator[](size_t nIndex)
+{
+ if (maData.size() <= nIndex)
+ return NULL;
+ return &maData[nIndex];
+}
+
+const ScChartArray* ScChartCollection::operator[](size_t nIndex) const
+{
+ if (maData.size() <= nIndex)
+ return NULL;
+ return &maData[nIndex];
+}
+
+bool ScChartCollection::operator==(const ScChartCollection& rCmp) const
+{
+ return maData == rCmp.maData;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/filter/starcalc/scfobj.cxx b/sc/source/filter/starcalc/scfobj.cxx
index 1b9c947..956feec 100644
--- a/sc/source/filter/starcalc/scfobj.cxx
+++ b/sc/source/filter/starcalc/scfobj.cxx
@@ -97,7 +97,7 @@ void Sc10InsertObject::InsertChart( ScDocument* pDoc, SCTAB nDestTab, const Rect
// Sc10Import dtor geholt.
ScChartCollection* pColl = pDoc->GetChartCollection();
- pColl->Insert( new ScChartArray( pDoc, nSrcTab, static_cast<SCCOL>(nX1), static_cast<SCROW>(nY1), static_cast<SCCOL>(nX2), static_cast<SCROW>(nY2), aName ) );
+ pColl->push_back( new ScChartArray( pDoc, nSrcTab, static_cast<SCCOL>(nX1), static_cast<SCROW>(nY1), static_cast<SCCOL>(nX2), static_cast<SCROW>(nY2), aName ) );
}
}
More information about the Libreoffice-commits
mailing list