IWORKTable.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is part of the libetonyek project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  */
9 
10 #ifndef IWORKTABLE_H_INCLUDED
11 #define IWORKTABLE_H_INCLUDED
12 
13 #include <deque>
14 #include <map>
15 #include <memory>
16 #include <utility>
17 
18 #include <boost/optional.hpp>
19 
20 #include "IWORKStyle_fwd.h"
21 #include "IWORKTypes.h"
22 #include "IWORKOutputElements.h"
23 
24 namespace libetonyek
25 {
26 
27 class IWORKLanguageManager;
28 class IWORKText;
29 class IWORKTableRecorder;
30 
32 {
33  struct Cell
34  {
36  unsigned m_columnSpan;
37  unsigned m_rowSpan;
38  bool m_covered;
40  boost::optional<unsigned> m_formulaHC;
43  boost::optional<std::string> m_value;
44  boost::optional<IWORKDateTimeData> m_dateTime;
45 
46  Cell();
47  };
48 
49  typedef std::deque<Cell> Row_t;
50  typedef std::deque<Row_t> Table_t;
51 
52 public:
53  enum CellType
54  {
60  };
61 
62 public:
63  explicit IWORKTable(const IWORKTableNameMapPtr_t &tableNameMap, const IWORKLanguageManager &langManager);
64 
65  void setRecorder(const std::shared_ptr<IWORKTableRecorder> &recorder);
66  const std::shared_ptr<IWORKTableRecorder> &getRecorder() const;
67 
68  void setName(std::string const &name);
69  void setSize(unsigned columns, unsigned rows);
70  void setHeaders(unsigned headerColumns, unsigned headerRows, unsigned footerRows);
71  void setBandedRows(bool banded = true);
72  void setRepeated(bool columns, bool rows);
73 
74  void setOrder(int order);
75  void setStyle(const IWORKStylePtr_t &style);
76  void setSizes(const IWORKColumnSizes_t &columnSizes, const IWORKRowSizes_t &rowSizes);
77  void setBorders(const IWORKGridLineMap_t &verticalLines, const IWORKGridLineMap_t &horizontalLines);
78  void setBorders(const IWORKGridLineMap_t &verticalLeftLines, const IWORKGridLineMap_t &verticalRightLines,
79  const IWORKGridLineMap_t &horizontalTopLines, const IWORKGridLineMap_t &horizontalBottomLines);
80  void setComment(unsigned column, unsigned row, IWORKOutputElements const &text);
81  void insertCell(unsigned column, unsigned row,
82  const boost::optional<std::string> &value = boost::none,
83  const std::shared_ptr<IWORKText> &text = std::shared_ptr<IWORKText>(),
84  const boost::optional<IWORKDateTimeData> &dateTime = boost::none,
85  unsigned columnSpan = 1, unsigned rowSpan = 1,
87  const boost::optional<unsigned> &formulaHC = boost::none,
90  void insertCoveredCell(unsigned column, unsigned row);
91 
92  void draw(const librevenge::RVNGPropertyList &tableProps, IWORKOutputElements &elements, bool drawAsSimpleTable);
93 
97 
98  boost::optional<int> getOrder() const;
99  IWORKStylePtr_t getStyle() const;
100  IWORKStylePtr_t getDefaultCellStyle(unsigned column, unsigned row) const;
101  IWORKStylePtr_t getDefaultLayoutStyle(unsigned column, unsigned row) const;
102  IWORKStylePtr_t getDefaultParagraphStyle(unsigned column, unsigned row) const;
103 
104 private:
105  IWORKStylePtr_t getDefaultStyle(unsigned column, unsigned row, const IWORKStylePtr_t *group) const;
106 
107  boost::optional<std::string> writeFormat(IWORKOutputElements &elements, const IWORKStylePtr_t &style, const IWORKCellType type, boost::optional<std::string> &rvngValueType);
108 
109 private:
112  std::map<librevenge::RVNGString,std::string> m_formatNameMap;
113  std::map<std::pair<unsigned, unsigned>, IWORKOutputElements> m_commentMap;
114 
117  boost::optional<std::string> m_name;
118  boost::optional<int> m_order;
122  IWORKGridLineMap_t m_verticalRightLines; // if empty, m_verticalLines stores right/left line
124  IWORKGridLineMap_t m_horizontalBottomLines; // if empty, m_horizontalLines stores right/left line
125 
126  unsigned m_rows;
127  unsigned m_columns;
128  unsigned m_headerRows;
129  unsigned m_footerRows;
130  unsigned m_headerColumns;
134 
138 
139  std::shared_ptr<IWORKTableRecorder> m_recorder;
140 };
141 
142 }
143 
144 #endif // IWORKTABLE_H_INCLUDED
145 
146 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
CellType
Definition: IWORKTable.h:53
void setHeaders(unsigned headerColumns, unsigned headerRows, unsigned footerRows)
Definition: IWORKTable.cpp:499
const std::shared_ptr< IWORKTableRecorder > & getRecorder() const
Definition: IWORKTable.cpp:477
Definition: IWORKOutputElements.h:32
boost::optional< IWORKDateTimeData > m_dateTime
Definition: IWORKTable.h:44
IWORKRowSizes_t m_rowSizes
Definition: IWORKTable.h:120
bool m_headerRowsRepeated
Definition: IWORKTable.h:132
bool m_headerColumnsRepeated
Definition: IWORKTable.h:133
IWORKStylePtr_t getDefaultLayoutStyle(unsigned column, unsigned row) const
Definition: IWORKTable.cpp:995
boost::optional< int > getOrder() const
Definition: IWORKTable.cpp:980
IWORKGridLineMap_t m_verticalRightLines
Definition: IWORKTable.h:122
void setSizes(const IWORKColumnSizes_t &columnSizes, const IWORKRowSizes_t &rowSizes)
Definition: IWORKTable.cpp:557
const IWORKLanguageManager & m_langManager
Definition: IWORKTable.h:111
Definition: IWORKTable.h:33
void setDefaultParagraphStyle(CellType type, const IWORKStylePtr_t &style)
Definition: IWORKTable.cpp:968
void setSize(unsigned columns, unsigned rows)
Definition: IWORKTable.cpp:487
IWORKGridLineMap_t m_horizontalBottomLines
Definition: IWORKTable.h:124
void insertCell(unsigned column, unsigned row, const boost::optional< std::string > &value=boost::none, const std::shared_ptr< IWORKText > &text=std::shared_ptr< IWORKText >(), const boost::optional< IWORKDateTimeData > &dateTime=boost::none, unsigned columnSpan=1, unsigned rowSpan=1, const IWORKFormulaPtr_t &formula=IWORKFormulaPtr_t(), const boost::optional< unsigned > &formulaHC=boost::none, const IWORKStylePtr_t &style=IWORKStylePtr_t(), IWORKCellType type=IWORK_CELL_TYPE_TEXT)
Definition: IWORKTable.cpp:609
std::shared_ptr< IWORKStyle > IWORKStylePtr_t
Definition: IWORKStyle_fwd.h:21
Definition: PAG1Token.h:43
Definition: IWORKToken.h:631
std::deque< Cell > Row_t
Definition: IWORKTable.h:49
std::deque< Row_t > Table_t
Definition: IWORKTable.h:50
IWORKOutputElements m_content
Definition: IWORKTable.h:35
IWORKStylePtr_t getStyle() const
Definition: IWORKTable.cpp:985
void setRepeated(bool columns, bool rows)
Definition: IWORKTable.cpp:523
Definition: IWORKToken.h:472
void setName(std::string const &name)
Definition: IWORKTable.cpp:482
unsigned m_headerColumns
Definition: IWORKTable.h:130
Definition: IWORKToken.h:674
Definition: IWORKToken.h:248
std::deque< IWORKColumnRowSize > IWORKRowSizes_t
Definition: IWORKTypes_fwd.h:26
Definition: IWORKToken.h:421
void setBorders(const IWORKGridLineMap_t &verticalLines, const IWORKGridLineMap_t &horizontalLines)
Definition: IWORKTable.cpp:572
std::deque< IWORKColumnRowSize > IWORKColumnSizes_t
Definition: IWORKTypes_fwd.h:22
std::map< std::pair< unsigned, unsigned >, IWORKOutputElements > m_commentMap
Definition: IWORKTable.h:113
IWORKStylePtr_t getDefaultCellStyle(unsigned column, unsigned row) const
Definition: IWORKTable.cpp:990
IWORKFormulaPtr_t m_formula
Definition: IWORKTable.h:39
IWORKColumnSizes_t m_columnSizes
Definition: IWORKTable.h:119
Definition: IWORKToken.h:392
void setDefaultLayoutStyle(CellType type, const IWORKStylePtr_t &style)
Definition: IWORKTable.cpp:956
Definition: IWORKEnum.h:82
IWORKGridLineMap_t m_verticalLines
Definition: IWORKTable.h:121
const char * name
Definition: IWORKToken.cpp:43
void draw(const librevenge::RVNGPropertyList &tableProps, IWORKOutputElements &elements, bool drawAsSimpleTable)
Definition: IWORKTable.cpp:740
std::shared_ptr< IWORKFormula > IWORKFormulaPtr_t
Definition: IWORKTypes.h:123
Table_t m_table
Definition: IWORKTable.h:115
boost::optional< std::string > writeFormat(IWORKOutputElements &elements, const IWORKStylePtr_t &style, const IWORKCellType type, boost::optional< std::string > &rvngValueType)
Definition: IWORKTable.cpp:664
unsigned m_rowSpan
Definition: IWORKTable.h:37
unsigned m_columns
Definition: IWORKTable.h:127
unsigned m_columnSpan
Definition: IWORKTable.h:36
void setOrder(int order)
Definition: IWORKTable.cpp:535
std::map< librevenge::RVNGString, std::string > m_formatNameMap
Definition: IWORKTable.h:112
Definition: IWORKToken.h:158
IWORKTable(const IWORKTableNameMapPtr_t &tableNameMap, const IWORKLanguageManager &langManager)
Definition: IWORKTable.cpp:445
std::shared_ptr< IWORKTableNameMap_t > IWORKTableNameMapPtr_t
Definition: IWORKTypes_fwd.h:34
std::map< unsigned, IWORKGridLine_t > IWORKGridLineMap_t
Definition: IWORKTypes.h:122
IWORKGridLineMap_t m_horizontalLines
Definition: IWORKTable.h:123
void setDefaultCellStyle(CellType type, const IWORKStylePtr_t &style)
Definition: IWORKTable.cpp:944
void setComment(unsigned column, unsigned row, IWORKOutputElements const &text)
Definition: IWORKTable.cpp:584
std::shared_ptr< IWORKTableRecorder > m_recorder
Definition: IWORKTable.h:139
Definition: IWORKLanguageManager.h:23
unsigned m_rows
Definition: IWORKTable.h:126
IWORKStylePtr_t getDefaultStyle(unsigned column, unsigned row, const IWORKStylePtr_t *group) const
Definition: IWORKTable.cpp:1005
void setRecorder(const std::shared_ptr< IWORKTableRecorder > &recorder)
Definition: IWORKTable.cpp:472
const IWORKTableNameMapPtr_t m_tableNameMap
Definition: IWORKTable.h:110
Definition: IWORKToken.h:418
Definition: IWORKToken.h:228
IWORKStylePtr_t m_style
Definition: IWORKTable.h:116
IWORKStylePtr_t m_defaultCellStyles[5]
Definition: IWORKTable.h:135
Definition: IWORKToken.h:156
Definition: IWORKTable.h:31
IWORKStylePtr_t m_defaultLayoutStyles[5]
Definition: IWORKTable.h:136
Definition: IWORKTable.h:55
boost::optional< int > m_order
Definition: IWORKTable.h:118
IWORKStylePtr_t m_style
Definition: IWORKTable.h:41
IWORKStylePtr_t m_defaultParaStyles[5]
Definition: IWORKTable.h:137
Definition: IWORKToken.h:493
IWORKStylePtr_t getDefaultParagraphStyle(unsigned column, unsigned row) const
Definition: IWORKTable.cpp:1000
void setBandedRows(bool banded=true)
Definition: IWORKTable.cpp:512
IWORKCellType m_type
Definition: IWORKTable.h:42
boost::optional< unsigned > m_formulaHC
Definition: IWORKTable.h:40
void insertCoveredCell(unsigned column, unsigned row)
Definition: IWORKTable.cpp:648
IWORKCellType
Definition: IWORKEnum.h:79
bool m_bandedRows
Definition: IWORKTable.h:131
Definition: IWORKToken.h:390
boost::optional< std::string > m_name
Definition: IWORKTable.h:117
unsigned m_footerRows
Definition: IWORKTable.h:129
boost::optional< std::string > m_value
Definition: IWORKTable.h:43
void setStyle(const IWORKStylePtr_t &style)
Definition: IWORKTable.cpp:546
unsigned m_headerRows
Definition: IWORKTable.h:128
Cell()
Definition: IWORKTable.cpp:431
bool m_covered
Definition: IWORKTable.h:38

Generated for libetonyek by doxygen 1.8.6