summaryrefslogtreecommitdiff
path: root/sc/inc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2013-03-13 21:13:14 -0400
committerKohei Yoshida <kohei.yoshida@gmail.com>2013-03-14 15:35:54 -0400
commit8945bddcc9294dc839e046d2d8b6c6dabd8caeb9 (patch)
treef59e89ab3433144b8694503d2fbc8418b09c1866 /sc/inc
parentb086f0fa026a5bc794832e8457833379036e5440 (diff)
First cut on column text width iterator implementation. Untested.
Change-Id: Ic615e5645f1a89a4b1a60dc519eb79ff921203a9
Diffstat (limited to 'sc/inc')
-rw-r--r--sc/inc/column.hxx2
-rw-r--r--sc/inc/columniterator.hxx29
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