diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-02-04 21:51:57 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-02-05 00:29:19 -0500 |
commit | fc16069d1a8db45b7ecaa01c3ee1af0e904062c2 (patch) | |
tree | e87356f68b73003c8f849470e3e3aabce7846385 /sc/source/core/data/columnspanset.cxx | |
parent | b8a863a219ae3efaa050e5f213d5ae3a91459c06 (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.cxx | 20 |
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); } |