IWORKCollector.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 IWORKCOLLECTOR_H_INCLUDED
11 #define IWORKCOLLECTOR_H_INCLUDED
12 
13 #include <deque>
14 #include <stack>
15 #include <string>
16 
17 #include <boost/optional.hpp>
18 
19 #include <glm/glm.hpp>
20 
21 #include "libetonyek_utils.h"
22 #include "IWORKPath_fwd.h"
23 #include "IWORKStyle.h"
24 #include "IWORKStyleStack.h"
25 #include "IWORKStylesheet.h"
26 #include "IWORKTable.h"
27 #include "IWORKText_fwd.h"
28 #include "IWORKTransformation.h"
29 #include "IWORKTypes.h"
30 #include "IWORKZoneManager.h"
31 
32 namespace libetonyek
33 {
34 
35 class IWORKDocumentInterface;
36 class IWORKPropertyMap;
37 struct IWORKSize;
38 
40 {
41  struct Level
42  {
45  glm::dmat3 m_trafo;
46 
47  Level();
48  };
49 
50 public:
53 
54  // collector functions
55 
56  void collectStyle(const IWORKStylePtr_t &style, bool anonymous);
57 
59 
61 
62  void collectBezier(const IWORKPathPtr_t &path);
63  void collectImage(const IWORKImagePtr_t &image);
64  void collectLine(const IWORKLinePtr_t &line);
65  void collectShape();
66 
67  void collectBezierPath();
68  void collectPolygonPath(const IWORKSize &size, unsigned edges);
69  void collectRoundedRectanglePath(const IWORKSize &size, double radius);
70  void collectArrowPath(const IWORKSize &size, double headWidth, double stemRelYPos, bool doubleSided);
71  void collectStarPath(const IWORKSize &size, unsigned points, double innerRadius);
72  void collectConnectionPath(const IWORKSize &size, double middleX, double middleY);
73  void collectCalloutPath(const IWORKSize &size, double radius, double tailSize, double tailX, double tailY, bool quoteBubble);
74 
76 
78 
79  void collectText(const std::string &text);
80  void collectTab();
81  void collectLineBreak();
82 
83  void collectTableSizes(const IWORKTable::RowSizes_t &rowSizes, const IWORKTable::ColumnSizes_t &columnSizes);
84  void collectTableCell(unsigned row, unsigned column, const boost::optional<std::string> &content, unsigned rowSpan, unsigned columnSpan);
85  void collectCoveredTableCell(unsigned row, unsigned column);
86  void collectTableRow();
87  void collectTable();
88 
89  void startGroup();
90  void endGroup();
91 
93  void endParagraph();
94  void openSpan(const IWORKStylePtr_t &style);
95  void closeSpan();
96  void openLink(const std::string &url);
97  void closeLink();
98  void startText();
99  void endText();
100 
101  void startLevel();
102  void endLevel();
103 
104  void pushStyle();
105  void popStyle();
106 
108 
109 private:
110  void pushStyle(const IWORKStylePtr_t &style);
112 
113 protected:
115 
116  std::stack<Level> m_levelStack;
119 
121  std::deque<IWORKStylePtr_t> m_newStyles;
122 
124 
125 private:
133 
135 };
136 
137 } // namespace libetonyek
138 
139 #endif // IWORKCOLLECTOR_H_INCLUDED
140 
141 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
boost::shared_ptr< IWORKStylesheet > IWORKStylesheetPtr_t
Definition: IWORKStylesheet.h:19
Definition: IWORKColorElement.cpp:19
IWORKMediaContentPtr_t m_currentFiltered
Definition: IWORKCollector.h:129
boost::shared_ptr< IWORKMediaContent > IWORKMediaContentPtr_t
Definition: IWORKTypes_fwd.h:42
IWORKCollector(IWORKDocumentInterface *document)
Definition: IWORKCollector.cpp:231
Represents a hierarchical style.
Definition: IWORKStyle.h:28
void collectGeometry(const IWORKGeometryPtr_t &geometry)
Definition: IWORKCollector.cpp:277
IWORKMediaContentPtr_t m_currentLeveled
Definition: IWORKCollector.h:130
Definition: IWORKToken.h:125
boost::shared_ptr< IWORKStyle > IWORKStylePtr_t
Definition: IWORKStyle_fwd.h:21
IWORKZoneManager & getZoneManager()
Definition: IWORKCollector.cpp:586
void collectTable()
Definition: IWORKCollector.cpp:470
IWORKStylePtr_t m_graphicStyle
Definition: IWORKCollector.h:44
Representation of a dynamic inheritance of styles.
Definition: IWORKStyleStack.h:34
IWORKMediaContentPtr_t m_currentContent
Definition: IWORKCollector.h:131
void collectTableRow()
Definition: IWORKCollector.cpp:465
void collectBezier(const IWORKPathPtr_t &path)
Definition: IWORKCollector.cpp:285
void startGroup()
Definition: IWORKCollector.cpp:480
void collectStarPath(const IWORKSize &size, unsigned points, double innerRadius)
Definition: IWORKCollector.cpp:361
IWORKStylesheetPtr_t collectStylesheet(const IWORKStylesheetPtr_t &parent=IWORKStylesheetPtr_t())
Definition: IWORKCollector.cpp:394
void startText()
Definition: IWORKCollector.cpp:534
IWORKTextPtr_t m_currentText
Definition: IWORKCollector.h:123
Definition: IWORKToken.h:171
Definition: IWORKCollector.h:41
IWORKStylesheetPtr_t m_currentStylesheet
Definition: IWORKCollector.h:120
boost::shared_ptr< IWORKGeometry > IWORKGeometryPtr_t
Definition: IWORKTypes_fwd.h:29
Definition: IWORKTypes.h:26
void resolveStyle(IWORKStyle &style)
Definition: IWORKCollector.cpp:580
boost::shared_ptr< IWORKImage > IWORKImagePtr_t
Definition: IWORKTypes_fwd.h:47
Definition: IWORKToken.h:172
void popStyle()
Definition: IWORKCollector.cpp:575
void openSpan(const IWORKStylePtr_t &style)
Definition: IWORKCollector.cpp:506
Definition: IWORKDocumentInterface.h:18
void collectStyle(const IWORKStylePtr_t &style, bool anonymous)
Definition: IWORKCollector.cpp:256
void setGraphicStyle(const IWORKStylePtr_t &style)
Definition: IWORKCollector.cpp:268
Definition: IWORKToken.h:184
~IWORKCollector()
Definition: IWORKCollector.cpp:245
void collectImage(const IWORKImagePtr_t &image)
Definition: IWORKCollector.cpp:290
IWORKGeometryPtr_t m_geometry
Definition: IWORKCollector.h:43
void collectLineBreak()
Definition: IWORKCollector.cpp:424
Definition: IWORKToken.h:108
void endText()
Definition: IWORKCollector.cpp:543
boost::shared_ptr< IWORKPath > IWORKPathPtr_t
Definition: IWORKPath_fwd.h:19
IWORKPathPtr_t m_currentPath
Definition: IWORKCollector.h:126
Definition: IWORKCollector.h:39
void collectConnectionPath(const IWORKSize &size, double middleX, double middleY)
Definition: IWORKCollector.cpp:366
std::stack< Level > m_levelStack
Definition: IWORKCollector.h:116
void collectCoveredTableCell(unsigned row, unsigned column)
Definition: IWORKCollector.cpp:460
void collectTab()
Definition: IWORKCollector.cpp:417
IWORKTable m_currentTable
Definition: IWORKCollector.h:132
boost::shared_ptr< IWORKData > IWORKDataPtr_t
Definition: IWORKTypes_fwd.h:37
void collectBezierPath()
Definition: IWORKCollector.cpp:338
void closeLink()
Definition: IWORKCollector.cpp:527
std::deque< IWORKStylePtr_t > m_newStyles
Definition: IWORKCollector.h:121
void openLink(const std::string &url)
Definition: IWORKCollector.cpp:520
void closeSpan()
Definition: IWORKCollector.cpp:513
IWORKDocumentInterface * m_document
Definition: IWORKCollector.h:114
void collectMedia(const IWORKMediaContentPtr_t &content)
Definition: IWORKCollector.cpp:379
Level()
Definition: IWORKCollector.cpp:224
IWORKZoneManager m_zoneManager
Definition: IWORKCollector.h:118
A manager for output zones.
Definition: IWORKZoneManager.h:29
Definition: IWORKToken.h:147
void collectTableSizes(const IWORKTable::RowSizes_t &rowSizes, const IWORKTable::ColumnSizes_t &columnSizes)
Definition: IWORKCollector.cpp:431
IWORKMediaContentPtr_t m_currentUnfiltered
Definition: IWORKCollector.h:128
void startLevel()
Definition: IWORKCollector.cpp:551
glm::dmat3 m_trafo
Definition: IWORKCollector.h:45
void collectArrowPath(const IWORKSize &size, double headWidth, double stemRelYPos, bool doubleSided)
Definition: IWORKCollector.cpp:353
void endLevel()
Definition: IWORKCollector.cpp:562
std::deque< double > RowSizes_t
Definition: IWORKTable.h:40
std::deque< double > ColumnSizes_t
Definition: IWORKTable.h:39
void endGroup()
Definition: IWORKCollector.cpp:485
void collectText(const std::string &text)
Definition: IWORKCollector.cpp:410
Definition: IWORKToken.h:163
void collectCalloutPath(const IWORKSize &size, double radius, double tailSize, double tailX, double tailY, bool quoteBubble)
Definition: IWORKCollector.cpp:371
Definition: KEY1Token.h:156
Definition: IWORKToken.h:232
void collectLine(const IWORKLinePtr_t &line)
Definition: IWORKCollector.cpp:300
void collectShape()
Definition: IWORKCollector.cpp:310
boost::shared_ptr< IWORKLine > IWORKLinePtr_t
Definition: IWORKTypes_fwd.h:33
Definition: NUM1Token.h:34
IWORKStyleStack m_styleStack
Definition: IWORKCollector.h:117
Definition: IWORKTable.h:23
void pushStyle()
Definition: IWORKCollector.cpp:570
int m_groupLevel
Definition: IWORKCollector.h:134
boost::shared_ptr< IWORKText > IWORKTextPtr_t
Definition: IWORKText_fwd.h:18
void collectPolygonPath(const IWORKSize &size, unsigned edges)
Definition: IWORKCollector.cpp:343
void endParagraph()
Definition: IWORKCollector.cpp:499
void collectTableCell(unsigned row, unsigned column, const boost::optional< std::string > &content, unsigned rowSpan, unsigned columnSpan)
Definition: IWORKCollector.cpp:436
void startParagraph(const IWORKStylePtr_t &style)
Definition: IWORKCollector.cpp:492
Definition: IWORKToken.h:77
Definition: IWORKToken.h:98
void collectRoundedRectanglePath(const IWORKSize &size, double radius)
Definition: IWORKCollector.cpp:348
IWORKDataPtr_t m_currentData
Definition: IWORKCollector.h:127

Generated for libetonyek by doxygen 1.8.8