diff options
author | Kohei Yoshida <kohei.yoshida@gmail.com> | 2013-05-17 16:48:25 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@gmail.com> | 2013-05-20 20:19:27 -0400 |
commit | edddbde921bf977dc1e7104956d204622b0449dd (patch) | |
tree | 52ac2bf77178b725bcd7c39a19c67c5f2b2c9d60 /sc | |
parent | 252a30609357a5b2691b7796cc8f3f4f1319f655 (diff) |
A bit of a cleanup.
Change-Id: Iaa7003cabee4630e4fbb8fb1cd114d04b4e9e33c
Diffstat (limited to 'sc')
-rw-r--r-- | sc/inc/clipcontext.hxx | 20 | ||||
-rw-r--r-- | sc/source/core/data/clipcontext.cxx | 64 | ||||
-rw-r--r-- | sc/source/core/data/column.cxx | 2 | ||||
-rw-r--r-- | sc/source/core/data/documen2.cxx | 2 | ||||
-rw-r--r-- | sc/source/core/data/document.cxx | 13 | ||||
-rw-r--r-- | sc/source/core/data/table2.cxx | 1 |
6 files changed, 27 insertions, 75 deletions
diff --git a/sc/inc/clipcontext.hxx b/sc/inc/clipcontext.hxx index 599da6efceb2..84b1fccade6a 100644 --- a/sc/inc/clipcontext.hxx +++ b/sc/inc/clipcontext.hxx @@ -22,13 +22,7 @@ namespace sc { class ClipContextBase { - typedef boost::unordered_map<SCCOL, ColumnBlockPosition> ColumnsType; - typedef std::vector<ColumnsType> TablesType; - - ScDocument& mrDoc; - TablesType maTables; - SCTAB mnTabStart; - SCTAB mnTabEnd; + sc::ColumnBlockPositionSet maSet; ClipContextBase(); // disabled @@ -36,16 +30,13 @@ public: ClipContextBase(ScDocument& rDoc); virtual ~ClipContextBase(); - void setTabRange(SCTAB nStart, SCTAB nEnd); - - SCTAB getTabStart() const; - SCTAB getTabEnd() const; - ColumnBlockPosition* getBlockPosition(SCTAB nTab, SCCOL nCol); }; class CopyFromClipContext : public ClipContextBase { + SCTAB mnTabStart; + SCTAB mnTabEnd; ScDocument* mpRefUndoDoc; ScDocument* mpClipDoc; sal_uInt16 mnInsertFlag; @@ -61,6 +52,11 @@ public: virtual ~CopyFromClipContext(); + void setTabRange(SCTAB nStart, SCTAB nEnd); + + SCTAB getTabStart() const; + SCTAB getTabEnd() const; + ScDocument* getUndoDoc(); ScDocument* getClipDoc(); sal_uInt16 getInsertFlag() const; diff --git a/sc/source/core/data/clipcontext.cxx b/sc/source/core/data/clipcontext.cxx index 2c7abdfb05b6..2b510764f168 100644 --- a/sc/source/core/data/clipcontext.cxx +++ b/sc/source/core/data/clipcontext.cxx @@ -13,62 +13,20 @@ namespace sc { ClipContextBase::ClipContextBase(ScDocument& rDoc) : - mrDoc(rDoc), mnTabStart(-1), mnTabEnd(-1) {} + maSet(rDoc) {} ClipContextBase::~ClipContextBase() {} -void ClipContextBase::setTabRange(SCTAB nStart, SCTAB nEnd) -{ - mnTabStart = nStart; - mnTabEnd = nEnd; -} - -SCTAB ClipContextBase::getTabStart() const -{ - return mnTabStart; -} - -SCTAB ClipContextBase::getTabEnd() const -{ - return mnTabEnd; -} - ColumnBlockPosition* ClipContextBase::getBlockPosition(SCTAB nTab, SCCOL nCol) { - if (mnTabStart < 0 || mnTabEnd < 0 || mnTabStart > mnTabEnd) - return NULL; - - size_t nTabIndex = nTab - mnTabStart; - if (nTabIndex >= maTables.size()) - maTables.resize(nTabIndex+1); - - ColumnsType& rCols = maTables[nTabIndex]; - - ColumnsType::iterator it = rCols.find(nCol); - if (it != rCols.end()) - // Block position for this column has already been fetched. - return &it->second; - - std::pair<ColumnsType::iterator,bool> r = - rCols.insert( - ColumnsType::value_type(nCol, ColumnBlockPosition())); - - if (!r.second) - // insertion failed. - return NULL; - - it = r.first; - - if (!mrDoc.InitColumnBlockPosition(it->second, nTab, nCol)) - return NULL; - - return &it->second; + return maSet.getBlockPosition(nTab, nCol); } CopyFromClipContext::CopyFromClipContext(ScDocument& rDoc, ScDocument* pRefUndoDoc, ScDocument* pClipDoc, sal_uInt16 nInsertFlag, bool bAsLink, bool bSkipAttrForEmptyCells) : ClipContextBase(rDoc), + mnTabStart(-1), mnTabEnd(-1), mpRefUndoDoc(pRefUndoDoc), mpClipDoc(pClipDoc), mnInsertFlag(nInsertFlag), mbAsLink(bAsLink), mbSkipAttrForEmptyCells(bSkipAttrForEmptyCells) {} @@ -76,6 +34,22 @@ CopyFromClipContext::~CopyFromClipContext() { } +void CopyFromClipContext::setTabRange(SCTAB nStart, SCTAB nEnd) +{ + mnTabStart = nStart; + mnTabEnd = nEnd; +} + +SCTAB CopyFromClipContext::getTabStart() const +{ + return mnTabStart; +} + +SCTAB CopyFromClipContext::getTabEnd() const +{ + return mnTabEnd; +} + ScDocument* CopyFromClipContext::getUndoDoc() { return mpRefUndoDoc; diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 94cd2572e56a..10d36b6f142b 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -1514,7 +1514,6 @@ void ScColumn::CopyScenarioFrom( const ScColumn& rSrcCol ) { // This is the scenario table, the data is copied into it sc::CopyToDocContext aCxt(*pDocument); - aCxt.setTabRange(nTab, nTab); ScAttrIterator aAttrIter( pAttrArray, 0, MAXROW ); SCROW nStart = -1, nEnd = -1; const ScPatternAttr* pPattern = aAttrIter.Next( nStart, nEnd ); @@ -1546,7 +1545,6 @@ void ScColumn::CopyScenarioTo( ScColumn& rDestCol ) const { // This is the scenario table, the data is copied to the other sc::CopyToDocContext aCxt(*rDestCol.pDocument); - aCxt.setTabRange(rDestCol.nTab, rDestCol.nTab); ScAttrIterator aAttrIter( pAttrArray, 0, MAXROW ); SCROW nStart = -1, nEnd = -1; const ScPatternAttr* pPattern = aAttrIter.Next( nStart, nEnd ); diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index 0229c52ddeb1..dcdae98dd479 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -857,7 +857,6 @@ bool ScDocument::CopyTab( SCTAB nOldPos, SCTAB nNewPos, const ScMarkData* pOnlyM if (bValid) { sc::CopyToDocContext aCxt(*this); - aCxt.setTabRange(nNewPos, nNewPos); SetNoListening( true ); // noch nicht bei CopyToTable/Insert maTabs[nOldPos]->CopyToTable(aCxt, 0, 0, MAXCOL, MAXROW, IDF_ALL, (pOnlyMarked != NULL), maTabs[nNewPos], pOnlyMarked ); @@ -965,7 +964,6 @@ sal_uLong ScDocument::TransferTab( ScDocument* pSrcDoc, SCTAB nSrcPos, NumFmtMergeHandler aNumFmtMergeHdl(this, pSrcDoc); sc::CopyToDocContext aCxt(*this); - aCxt.setTabRange(nDestPos, nDestPos); nDestPos = std::min(nDestPos, (SCTAB)(GetTableCount() - 1)); { // scope for bulk broadcast ScBulkBroadcast aBulkBroadcast( pBASM); diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 5fbc1ac0e0d5..f41a71521df2 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -1843,7 +1843,6 @@ void ScDocument::CopyToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1, if (ValidTab(nTab1) && ValidTab(nTab2)) { sc::CopyToDocContext aCxt(*pDestDoc); - aCxt.setTabRange(nTab1, nTab2); bool bOldAutoCalc = pDestDoc->GetAutoCalc(); pDestDoc->SetAutoCalc( false ); // avoid multiple calculations SCTAB nMinSizeBothTabs = static_cast<SCTAB>(std::min(maTabs.size(), pDestDoc->maTabs.size())); @@ -1875,7 +1874,6 @@ void ScDocument::UndoToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1, CopyToDocument( 0,0,0, MAXCOL,MAXROW,nTab1-1, IDF_FORMULA, false, pDestDoc, pMarks ); sc::CopyToDocContext aCxt(*pDestDoc); - aCxt.setTabRange(nTab1, nTab2); OSL_ASSERT( nTab2 < static_cast<SCTAB>(maTabs.size()) && nTab2 < static_cast<SCTAB>(pDestDoc->maTabs.size())); for (SCTAB i = nTab1; i <= nTab2; i++) { @@ -1903,7 +1901,6 @@ void ScDocument::CopyToDocument(const ScRange& rRange, bool bOldAutoCalc = pDestDoc->GetAutoCalc(); pDestDoc->SetAutoCalc( false ); // avoid multiple calculations sc::CopyToDocContext aCxt(*pDestDoc); - aCxt.setTabRange(aNewRange.aStart.Tab(), aNewRange.aEnd.Tab()); SCTAB nMinSizeBothTabs = static_cast<SCTAB>(std::min(maTabs.size(), pDestDoc->maTabs.size())); for (SCTAB i = aNewRange.aStart.Tab(); i <= aNewRange.aEnd.Tab() && i < nMinSizeBothTabs; i++) { @@ -1931,7 +1928,6 @@ void ScDocument::UndoToDocument(const ScRange& rRange, bool bOldAutoCalc = pDestDoc->GetAutoCalc(); pDestDoc->SetAutoCalc( false ); // avoid multiple calculations sc::CopyToDocContext aCxt(*pDestDoc); - aCxt.setTabRange(nTab1, nTab2); if (nTab1 > 0) CopyToDocument( 0,0,0, MAXCOL,MAXROW,nTab1-1, IDF_FORMULA, false, pDestDoc, pMarks ); @@ -2009,7 +2005,6 @@ void ScDocument::CopyToClip(const ScClipParam& rClipParam, pClipDoc->ResetClip(this, pMarks); sc::CopyToClipContext aCxt(*pClipDoc, bKeepScenarioFlags, bCloneNoteCaptions); - aCxt.setTabRange(i, nEndTab-1); CopyRangeNamesToClip(pClipDoc, aClipRange, pMarks, bAllTabs); for ( ; i < nEndTab; ++i) @@ -2107,7 +2102,6 @@ void ScDocument::CopyTabToClip(SCCOL nCol1, SCROW nRow1, pClipDoc->ResetClip( this, nTab ); sc::CopyToClipContext aCxt(*pClipDoc, false, true); - aCxt.setTabRange(nTab, nTab); if (nTab < static_cast<SCTAB>(maTabs.size()) && nTab < static_cast<SCTAB>(pClipDoc->maTabs.size())) if (maTabs[nTab] && pClipDoc->maTabs[nTab]) maTabs[nTab]->CopyToClip(aCxt, nCol1, nRow1, nCol2, nRow2, pClipDoc->maTabs[nTab]); @@ -2866,7 +2860,6 @@ void ScDocument::MixDocument( const ScRange& rRange, sal_uInt16 nFunction, bool SCTAB nTab1 = rRange.aStart.Tab(); SCTAB nTab2 = rRange.aEnd.Tab(); sc::MixDocContext aCxt(*this); - aCxt.setTabRange(nTab1, nTab2); SCTAB nMinSizeBothTabs = static_cast<SCTAB>(std::min(maTabs.size(), pSrcDoc->maTabs.size())); for (SCTAB i = nTab1; i <= nTab2 && i < nMinSizeBothTabs; i++) { @@ -2905,9 +2898,7 @@ void ScDocument::FillTab( const ScRange& rSrcArea, const ScMarkData& rMark, SetAutoCalc( false ); // avoid multiple calculations sc::CopyToDocContext aCxt(*this); - aCxt.setTabRange(rMark.GetFirstSelected(), rMark.GetLastSelected()); sc::MixDocContext aMixDocCxt(*this); - aMixDocCxt.setTabRange(rMark.GetFirstSelected(), rMark.GetLastSelected()); SCTAB nCount = static_cast<SCTAB>(maTabs.size()); ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end(); @@ -2927,7 +2918,6 @@ void ScDocument::FillTab( const ScRange& rSrcArea, const ScMarkData& rMark, // context used for copying content to the temporary mix document. sc::CopyToDocContext aMixCxt(*pMixDoc); - aMixCxt.setTabRange(i, i); maTabs[i]->CopyToTable(aMixCxt, nStartCol,nStartRow, nEndCol,nEndRow, IDF_CONTENTS, false, pMixDoc->maTabs[i] ); } @@ -2973,9 +2963,7 @@ void ScDocument::FillTabMarked( SCTAB nSrcTab, const ScMarkData& rMark, SCROW nEndRow = aArea.aEnd.Row(); sc::CopyToDocContext aCxt(*this); - aCxt.setTabRange(rMark.GetFirstSelected(), rMark.GetLastSelected()); sc::MixDocContext aMixDocCxt(*this); - aMixDocCxt.setTabRange(rMark.GetFirstSelected(), rMark.GetLastSelected()); SCTAB nCount = static_cast<SCTAB>(maTabs.size()); ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end(); for (; itr != itrEnd && *itr < nCount; ++itr) @@ -2993,7 +2981,6 @@ void ScDocument::FillTabMarked( SCTAB nSrcTab, const ScMarkData& rMark, pMixDoc->AddUndoTab( i, i ); sc::CopyToDocContext aMixCxt(*pMixDoc); - aMixCxt.setTabRange(i, i); maTabs[i]->CopyToTable(aMixCxt, nStartCol,nStartRow, nEndCol,nEndRow, IDF_CONTENTS, true, pMixDoc->maTabs[i], &rMark ); } diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index 4af76be44514..51801afb0f65 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -407,7 +407,6 @@ void ScTable::InsertCol( SCCOL nStartCol, SCROW nStartRow, SCROW nEndRow, SCSIZE nWhichArray[2] = 0; sc::CopyToDocContext aCxt(*pDocument); - aCxt.setTabRange(nTab, nTab); for (SCSIZE i=0; i<nSize; i++) { aCol[nStartCol-1].CopyToColumn(aCxt, nStartRow, nEndRow, IDF_ATTRIB, |