summaryrefslogtreecommitdiff
path: root/sc/source/core/data/columnspanset.cxx
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-02-04 21:51:57 -0500
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-02-05 00:29:19 -0500
commitfc16069d1a8db45b7ecaa01c3ee1af0e904062c2 (patch)
treee87356f68b73003c8f849470e3e3aabce7846385 /sc/source/core/data/columnspanset.cxx
parentb8a863a219ae3efaa050e5f213d5ae3a91459c06 (diff)
Reimplement ScMarkData::GetMarkedRowSpans() to use flat_segment_tree directly.
Change-Id: I90a1d4b3ae2e6aff9a7926b5842bc85ac172683d
Diffstat (limited to 'sc/source/core/data/columnspanset.cxx')
-rw-r--r--sc/source/core/data/columnspanset.cxx20
1 files changed, 4 insertions, 16 deletions
diff --git a/sc/source/core/data/columnspanset.cxx b/sc/source/core/data/columnspanset.cxx
index efa51b5a2707..1aa57ba11c94 100644
--- a/sc/source/core/data/columnspanset.cxx
+++ b/sc/source/core/data/columnspanset.cxx
@@ -15,6 +15,7 @@
#include "mtvfunctions.hxx"
#include "markdata.hxx"
#include "rangelst.hxx"
+#include <fstalgorithm.hxx>
#include <algorithm>
@@ -22,6 +23,8 @@ namespace sc {
RowSpan::RowSpan(SCROW nRow1, SCROW nRow2) : mnRow1(nRow1), mnRow2(nRow2) {}
+ColRowSpan::ColRowSpan(SCCOLROW nStart, SCCOLROW nEnd) : mnStart(nStart), mnEnd(nEnd) {}
+
ColumnSpanSet::ColumnType::ColumnType(SCROW nStart, SCROW nEnd, bool bInit) :
maSpans(nStart, nEnd+1, bInit), miPos(maSpans.begin()) {}
@@ -262,22 +265,7 @@ void SingleColumnSpanSet::getRows(std::vector<SCROW> &rRows) const
void SingleColumnSpanSet::getSpans(SpansType& rSpans) const
{
- SpansType aSpans;
- ColumnSpansType::const_iterator it = maSpans.begin(), itEnd = maSpans.end();
- SCROW nLastRow = it->first;
- bool bLastVal = it->second;
- for (++it; it != itEnd; ++it)
- {
- SCROW nThisRow = it->first;
- bool bThisVal = it->second;
-
- if (bLastVal)
- aSpans.push_back(RowSpan(nLastRow, nThisRow-1));
-
- nLastRow = nThisRow;
- bLastVal = bThisVal;
- }
-
+ SpansType aSpans = toSpanArray<SCROW,RowSpan>(maSpans);
rSpans.swap(aSpans);
}