diff options
author | Kohei Yoshida <kohei.yoshida@gmail.com> | 2013-03-13 21:13:14 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@gmail.com> | 2013-03-14 15:35:54 -0400 |
commit | 8945bddcc9294dc839e046d2d8b6c6dabd8caeb9 (patch) | |
tree | f59e89ab3433144b8694503d2fbc8418b09c1866 /sc/inc | |
parent | b086f0fa026a5bc794832e8457833379036e5440 (diff) |
First cut on column text width iterator implementation. Untested.
Change-Id: Ic615e5645f1a89a4b1a60dc519eb79ff921203a9
Diffstat (limited to 'sc/inc')
-rw-r--r-- | sc/inc/column.hxx | 2 | ||||
-rw-r--r-- | sc/inc/columniterator.hxx | 29 |
2 files changed, 27 insertions, 4 deletions
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx index acaede3f7435..f1996f1b9bab 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -61,7 +61,7 @@ struct ScMergePatternState; class ScFlatBoolRowSegments; struct ScSetStringParam; struct ScColWidthParam; -struct ScColumnImpl; +class ScColumnTextWidthIterator; struct ScNeededSizeOptions { diff --git a/sc/inc/columniterator.hxx b/sc/inc/columniterator.hxx index b8f8f598ec39..a70567c56c0f 100644 --- a/sc/inc/columniterator.hxx +++ b/sc/inc/columniterator.hxx @@ -10,13 +10,36 @@ #ifndef __SC_COLUMNITERATOR_HXX__ #define __SC_COLUMNITERATOR_HXX__ +#include <boost/noncopyable.hpp> + +#include "column.hxx" + class ScColumn; -class ScColumnTextWidthIterator +class ScColumnTextWidthIterator : boost::noncopyable { - ScColumn& mrCol; + typedef ScColumn::TextWidthType TextWidthType; + + TextWidthType& mrTextWidths; + const size_t mnEnd; + size_t mnCurPos; + TextWidthType::iterator miBlockCur; + TextWidthType::iterator miBlockEnd; + mdds::mtv::ushort_element_block::iterator miDataCur; + mdds::mtv::ushort_element_block::iterator miDataEnd; + public: - ScColumnTextWidthIterator(ScColumn& rCol); + ScColumnTextWidthIterator(ScColumn& rCol, SCROW nStartRow, SCROW nEndRow); + + void next(); + bool hasCell() const; + SCROW getPos() const; + sal_uInt16 getValue() const; + void setValue(sal_uInt16 nVal); + +private: + void getDataIterators(size_t nOffsetInBlock); + void checkEndRow(); }; #endif |