ABWContentCollector.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 libabw 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 __ABWCONTENTCOLLECTOR_H__
11#define __ABWCONTENTCOLLECTOR_H__
12
13#include <vector>
14#include <stack>
15#include <set>
16#include <librevenge/librevenge.h>
17#include "ABWOutputElements.h"
18#include "ABWCollector.h"
19
20namespace libabw
21{
22
24{
28};
29
31{
34 std::string basedon;
35 std::string followedby;
37};
38
40{
44
47
57};
58
60{
64
70
75
79
95 librevenge::RVNGString m_currentHeaderFooterOccurrence;
97
100
102
106
107 std::stack<ABWContentTableState> m_tableStates;
108 std::stack<std::pair<int, ABWListElement *> > m_listLevels;
109};
110
112{
113public:
114 ABWContentCollector(librevenge::RVNGTextInterface *iface, const std::map<int, int> &tableSizes,
115 const std::map<std::string, ABWData> &data,
116 const std::map<int, ABWListElement *> &listElements);
117 virtual ~ABWContentCollector();
118
119 // collector functions
120
121 void collectTextStyle(const char *name, const char *basedon, const char *followedby, const char *props);
122 void collectDocumentProperties(const char *props);
123 void collectParagraphProperties(const char *level, const char *listid, const char *parentid, const char *style, const char *props);
124 void collectSectionProperties(const char *footer, const char *footerLeft, const char *footerFirst, const char *footerLast,
125 const char *header, const char *headerLeft, const char *headerFirst, const char *headerLast,
126 const char *props);
127 void collectCharacterProperties(const char *style, const char *props);
128 void collectPageSize(const char *width, const char *height, const char *units, const char *pageScale);
130 void closeSpan();
131 void openLink(const char *href);
132 void closeLink();
133 void openFoot(const char *id);
134 void closeFoot();
135 void openEndnote(const char *id);
136 void closeEndnote();
137 void endSection();
138 void startDocument();
139 void endDocument();
140 void insertLineBreak();
141 void insertColumnBreak();
142 void insertPageBreak();
143 void insertText(const char *text);
144 void insertImage(const char *dataid, const char *props);
145 void collectList(const char *, const char *, const char *, const char *, const char *, const char *) {}
146
147 void collectData(const char *name, const char *mimeType, const librevenge::RVNGBinaryData &data);
148 void collectHeaderFooter(const char *id, const char *type);
149
150 void openTable(const char *props);
151 void closeTable();
152 void openCell(const char *props);
153 void closeCell();
154
155 void addMetadataEntry(const char *name, const char *value);
156
157private:
160
161 void _setMetadata();
162
163 void _openPageSpan();
164 void _closePageSpan();
165
166 void _openSection();
167 void _closeSection();
168
169 void _openParagraph();
170 void _closeParagraph();
171
172 void _openListElement();
173 void _closeListElement();
174
175 void _handleListChange();
176 void _changeList();
177 void _recurseListLevels(int oldLevel, int newLevel, int listId);
178 void _writeOutDummyListLevels(int oldLevel, int newLevel);
179
180 void _openSpan();
181 void _closeSpan();
182
183 void _openTable();
184 void _closeTable();
185 void _openTableRow();
186 void _closeTableRow();
187 void _openTableCell();
188 void _closeTableCell();
189
190 void _openHeader();
191 void _closeHeader();
192 void _openFooter();
193 void _closeFooter();
194
195 void _recurseTextProperties(const char *name, ABWPropertyMap &styleProps);
196 std::string _findDocumentProperty(const char *name);
197 std::string _findParagraphProperty(const char *name);
198 std::string _findCharacterProperty(const char *name);
199 std::string _findTableProperty(const char *name);
200 std::string _findCellProperty(const char *name);
201 std::string _findSectionProperty(const char *name);
202 std::string _findMetadataEntry(const char *name);
203
204 void _fillParagraphProperties(librevenge::RVNGPropertyList &propList, bool isListElement);
205
207 librevenge::RVNGTextInterface *m_iface;
208 std::stack<ABWContentParsingState *> m_parsingStates;
209 std::set<std::string> m_dontLoop;
210 std::map<std::string, ABWStyle> m_textStyles;
211
214
215 const std::map<std::string, ABWData> &m_data;
216 const std::map<int, int> &m_tableSizes;
219 const std::map<int, ABWListElement *> &m_listElements;
220 std::vector<ABWListElement *> m_dummyListElements;
221};
222
223} // namespace libabw
224
225#endif /* __ABWCOLLECTOR_H__ */
226/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition: ABWCollector.h:104
Definition: ABWContentCollector.h:112
void closeLink()
Definition: ABWContentCollector.cpp:852
void _openTableRow()
Definition: ABWContentCollector.cpp:1414
void endDocument()
Definition: ABWContentCollector.cpp:753
void collectPageSize(const char *width, const char *height, const char *units, const char *pageScale)
Definition: ABWContentCollector.cpp:721
const std::map< int, int > & m_tableSizes
Definition: ABWContentCollector.h:216
void collectParagraphProperties(const char *level, const char *listid, const char *parentid, const char *style, const char *props)
Definition: ABWContentCollector.cpp:536
void _closePageSpan()
Definition: ABWContentCollector.cpp:928
void _recurseListLevels(int oldLevel, int newLevel, int listId)
Definition: ABWContentCollector.cpp:1712
void _fillParagraphProperties(librevenge::RVNGPropertyList &propList, bool isListElement)
Definition: ABWContentCollector.cpp:1014
librevenge::RVNGTextInterface * m_iface
Definition: ABWContentCollector.h:207
void _openPageSpan()
Definition: ABWContentCollector.cpp:902
const std::map< int, ABWListElement * > & m_listElements
Definition: ABWContentCollector.h:219
void _closeParagraph()
Definition: ABWContentCollector.cpp:1320
void _openParagraph()
Definition: ABWContentCollector.cpp:1102
ABWOutputElements m_outputElements
Definition: ABWContentCollector.h:218
void _closeHeader()
Definition: ABWContentCollector.cpp:1280
std::string _findTableProperty(const char *name)
Definition: ABWContentCollector.cpp:500
void collectList(const char *, const char *, const char *, const char *, const char *, const char *)
Definition: ABWContentCollector.h:145
ABWContentCollector(librevenge::RVNGTextInterface *iface, const std::map< int, int > &tableSizes, const std::map< std::string, ABWData > &data, const std::map< int, ABWListElement * > &listElements)
Definition: ABWContentCollector.cpp:421
std::string _findSectionProperty(const char *name)
Definition: ABWContentCollector.cpp:512
virtual ~ABWContentCollector()
Definition: ABWContentCollector.cpp:440
void _openTable()
Definition: ABWContentCollector.cpp:1340
void closeTable()
Definition: ABWContentCollector.cpp:1591
void _setMetadata()
Definition: ABWContentCollector.cpp:781
void openFoot(const char *id)
Definition: ABWContentCollector.cpp:1488
void closeSpan()
Definition: ABWContentCollector.cpp:859
std::string _findCellProperty(const char *name)
Definition: ABWContentCollector.cpp:506
void _openListElement()
Definition: ABWContentCollector.cpp:1142
std::string _findDocumentProperty(const char *name)
Definition: ABWContentCollector.cpp:490
void _openTableCell()
Definition: ABWContentCollector.cpp:1446
void closeFoot()
Definition: ABWContentCollector.cpp:1505
void _closeFooter()
Definition: ABWContentCollector.cpp:1300
void openLink(const char *href)
Definition: ABWContentCollector.cpp:832
void closeCell()
Definition: ABWContentCollector.cpp:1621
std::string _findCharacterProperty(const char *name)
Definition: ABWContentCollector.cpp:517
void _openSection()
Definition: ABWContentCollector.cpp:941
void addMetadataEntry(const char *name, const char *value)
Definition: ABWContentCollector.cpp:1754
void _closeTableRow()
Definition: ABWContentCollector.cpp:1429
std::vector< ABWListElement * > m_dummyListElements
Definition: ABWContentCollector.h:220
void endSection()
Definition: ABWContentCollector.cpp:812
void _handleListChange()
Definition: ABWContentCollector.cpp:1670
std::string _findParagraphProperty(const char *name)
Definition: ABWContentCollector.cpp:495
void closeEndnote()
Definition: ABWContentCollector.cpp:1539
std::map< std::string, ABWStyle > m_textStyles
Definition: ABWContentCollector.h:210
void openTable(const char *props)
Definition: ABWContentCollector.cpp:1556
void insertLineBreak()
Definition: ABWContentCollector.cpp:865
ABWContentParsingState * m_ps
Definition: ABWContentCollector.h:206
void insertImage(const char *dataid, const char *props)
Definition: ABWContentCollector.cpp:1634
void _closeTable()
Definition: ABWContentCollector.cpp:1401
std::stack< ABWContentParsingState * > m_parsingStates
Definition: ABWContentCollector.h:208
const std::map< std::string, ABWData > & m_data
Definition: ABWContentCollector.h:215
void insertText(const char *text)
Definition: ABWContentCollector.cpp:887
void _openFooter()
Definition: ABWContentCollector.cpp:990
void insertColumnBreak()
Definition: ABWContentCollector.cpp:873
ABWPropertyMap m_documentStyle
Definition: ABWContentCollector.h:212
ABWPropertyMap m_metadata
Definition: ABWContentCollector.h:213
void closeParagraphOrListElement()
Definition: ABWContentCollector.cpp:821
void _closeSection()
Definition: ABWContentCollector.cpp:1262
void collectSectionProperties(const char *footer, const char *footerLeft, const char *footerFirst, const char *footerLast, const char *header, const char *headerLeft, const char *headerFirst, const char *headerLast, const char *props)
Definition: ABWContentCollector.cpp:577
void _recurseTextProperties(const char *name, ABWPropertyMap &styleProps)
Definition: ABWContentCollector.cpp:459
void collectHeaderFooter(const char *id, const char *type)
Definition: ABWContentCollector.cpp:692
std::string _findMetadataEntry(const char *name)
Definition: ABWContentCollector.cpp:525
ABWContentCollector & operator=(const ABWContentCollector &)
ABWContentCollector(const ABWContentCollector &)
void startDocument()
Definition: ABWContentCollector.cpp:738
void collectData(const char *name, const char *mimeType, const librevenge::RVNGBinaryData &data)
Definition: ABWContentCollector.cpp:1630
void _closeListElement()
Definition: ABWContentCollector.cpp:1741
void _openHeader()
Definition: ABWContentCollector.cpp:1002
void _openSpan()
Definition: ABWContentCollector.cpp:1180
std::set< std::string > m_dontLoop
Definition: ABWContentCollector.h:209
void _closeTableCell()
Definition: ABWContentCollector.cpp:1472
int m_tableCounter
Definition: ABWContentCollector.h:217
void _writeOutDummyListLevels(int oldLevel, int newLevel)
Definition: ABWContentCollector.cpp:1698
void openCell(const char *props)
Definition: ABWContentCollector.cpp:1600
void collectTextStyle(const char *name, const char *basedon, const char *followedby, const char *props)
Definition: ABWContentCollector.cpp:448
void _closeSpan()
Definition: ABWContentCollector.cpp:1332
void collectDocumentProperties(const char *props)
Definition: ABWContentCollector.cpp:530
void _changeList()
Definition: ABWContentCollector.cpp:1734
void insertPageBreak()
Definition: ABWContentCollector.cpp:880
void collectCharacterProperties(const char *style, const char *props)
Definition: ABWContentCollector.cpp:559
void openEndnote(const char *id)
Definition: ABWContentCollector.cpp:1522
Definition: ABWOutputElements.h:23
Definition: ABWCollector.h:18
std::map< std::string, std::string > ABWPropertyMap
Definition: ABWCollector.h:38
ABWContext
Definition: ABWContentCollector.h:24
@ ABW_SECTION
Definition: ABWContentCollector.h:25
@ ABW_HEADER
Definition: ABWContentCollector.h:26
@ ABW_FOOTER
Definition: ABWContentCollector.h:27
Definition: ABWContentCollector.h:60
double m_pageMarginTop
Definition: ABWContentCollector.h:82
double m_pageWidth
Definition: ABWContentCollector.h:80
int m_footerFirstId
Definition: ABWContentCollector.h:88
double m_pageMarginRight
Definition: ABWContentCollector.h:85
ABWContentParsingState()
Definition: ABWContentCollector.cpp:323
bool m_deferredPageBreak
Definition: ABWContentCollector.h:98
bool m_isParagraphOpened
Definition: ABWContentCollector.h:72
ABWPropertyMap m_currentParagraphStyle
Definition: ABWContentCollector.h:77
bool m_isPageSpanOpened
Definition: ABWContentCollector.h:66
ABWPropertyMap m_currentSectionStyle
Definition: ABWContentCollector.h:76
bool m_isDocumentStarted
Definition: ABWContentCollector.h:65
double m_pageHeight
Definition: ABWContentCollector.h:81
int m_headerId
Definition: ABWContentCollector.h:90
bool m_isFooterOpened
Definition: ABWContentCollector.h:69
int m_headerFirstId
Definition: ABWContentCollector.h:92
int m_headerLeftId
Definition: ABWContentCollector.h:91
bool m_isListElementOpened
Definition: ABWContentCollector.h:73
bool m_isSpanOpened
Definition: ABWContentCollector.h:71
int m_footerId
Definition: ABWContentCollector.h:86
bool m_isSectionOpened
Definition: ABWContentCollector.h:67
int m_currentListLevel
Definition: ABWContentCollector.h:103
bool m_isHeaderOpened
Definition: ABWContentCollector.h:68
librevenge::RVNGString m_currentHeaderFooterOccurrence
Definition: ABWContentCollector.h:95
bool m_inParagraphOrListElement
Definition: ABWContentCollector.h:74
ABWContext m_parsingContext
Definition: ABWContentCollector.h:96
~ABWContentParsingState()
Definition: ABWContentCollector.cpp:417
int m_currentListId
Definition: ABWContentCollector.h:104
double m_pageMarginBottom
Definition: ABWContentCollector.h:83
bool m_isNote
Definition: ABWContentCollector.h:101
int m_footerLeftId
Definition: ABWContentCollector.h:87
ABWPropertyMap m_currentCharacterStyle
Definition: ABWContentCollector.h:78
double m_pageMarginLeft
Definition: ABWContentCollector.h:84
std::stack< std::pair< int, ABWListElement * > > m_listLevels
Definition: ABWContentCollector.h:108
int m_footerLastId
Definition: ABWContentCollector.h:89
int m_currentHeaderFooterId
Definition: ABWContentCollector.h:94
bool m_deferredColumnBreak
Definition: ABWContentCollector.h:99
std::stack< ABWContentTableState > m_tableStates
Definition: ABWContentCollector.h:107
bool m_isFirstTextInListElement
Definition: ABWContentCollector.h:105
int m_headerLastId
Definition: ABWContentCollector.h:93
Definition: ABWContentCollector.h:40
ABWContentTableState()
Definition: ABWContentCollector.cpp:287
bool m_isTableRowOpened
Definition: ABWContentCollector.h:52
int m_currentTableRow
Definition: ABWContentCollector.h:49
int m_currentTableId
Definition: ABWContentCollector.h:51
bool m_isRowWithoutCell
Definition: ABWContentCollector.h:56
bool m_isTableCellOpened
Definition: ABWContentCollector.h:54
bool m_isTableColumnOpened
Definition: ABWContentCollector.h:53
bool m_isCellWithoutParagraph
Definition: ABWContentCollector.h:55
int m_currentTableCellNumberInRow
Definition: ABWContentCollector.h:50
~ABWContentTableState()
Definition: ABWContentCollector.cpp:319
ABWPropertyMap m_currentTableProperties
Definition: ABWContentCollector.h:45
int m_currentTableCol
Definition: ABWContentCollector.h:48
ABWPropertyMap m_currentCellProperties
Definition: ABWContentCollector.h:46
Definition: ABWContentCollector.h:31
ABWStyle()
Definition: ABWContentCollector.h:32
ABWPropertyMap properties
Definition: ABWContentCollector.h:36
std::string followedby
Definition: ABWContentCollector.h:35
std::string basedon
Definition: ABWContentCollector.h:34
~ABWStyle()
Definition: ABWContentCollector.h:33

Generated for libwpd by doxygen 1.9.3