WP6ContentListener.h
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2/* libwpd
3 * Version: MPL 2.0 / LGPLv2.1+
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 * Major Contributor(s):
10 * Copyright (C) 2002 William Lachance (wrlach@gmail.com)
11 * Copyright (C) 2002 Marc Maurer (uwog@uwog.net)
12 * Copyright (C) 2005-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
13 *
14 * For minor contributions see the git repository.
15 *
16 * Alternatively, the contents of this file may be used under the terms
17 * of the GNU Lesser General Public License Version 2.1 or later
18 * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
19 * applicable instead of those above.
20 *
21 * For further information visit http://libwpd.sourceforge.net
22 */
23
24/* "This product is not manufactured, approved, or supported by
25 * Corel Corporation or Corel Corporation Limited."
26 */
27
28#ifndef WP6CONTENTLISTENER_H
29#define WP6CONTENTLISTENER_H
30
31#include <librevenge/librevenge.h>
32#include "WP6Listener.h"
33#include "WPXContentListener.h"
34#include "WP6FileStructure.h"
35
36#include <stack>
37#include <map>
38#include <memory>
39#include <vector>
40
41class WPXTable;
42
49 };
50
52
53const int STATE_MEMORY = 3;
55{
56public:
62 {
63 for (unsigned i=(STATE_MEMORY-1); i>0; i--) m_stateSequence[i] = m_stateSequence[i-1];
64 m_stateSequence[0]=state;
65 }
67 {
68 return m_stateSequence[0];
69 }
71 {
72 return m_stateSequence[1];
73 }
74 void clear()
75 {
76 m_stateSequence.clear();
77 for (int i=0; i<STATE_MEMORY; i++) m_stateSequence.push_back(NORMAL);
78 }
79
80private:
81 std::vector<WP6StyleState> m_stateSequence;
82};
83
85{
86 WP6ContentParsingState(WPXTableList tableList, unsigned nextTableIndice = 0);
88 librevenge::RVNGString m_bodyText;
89 librevenge::RVNGString m_textBeforeNumber;
90 librevenge::RVNGString m_textBeforeDisplayReference;
91 librevenge::RVNGString m_numberText;
92 librevenge::RVNGString m_textAfterDisplayReference;
93 librevenge::RVNGString m_textAfterNumber;
94
97
99
102
104 std::shared_ptr<WPXTable> m_currentTable;
106
107 std::stack<unsigned> m_listLevelStack;
108 std::stack<WP6ListType> m_listTypeStack;
109 unsigned short m_currentOutlineHash; // probably should replace Hash with Key in these sorts of cases
110 unsigned char m_oldListLevel;
114
117
119
121
123 unsigned char m_leaderNumSpaces;
124 std::vector<WPXTabStop> m_tempTabStops;
126
128
129private:
132};
133
139
141{
142public:
144 WP6OutlineDefinition(const unsigned char *numberingMethods, const unsigned char tabBehaviourFlag);
145 void update(const unsigned char *numberingMethods, const unsigned char tabBehaviourFlag);
146
148 {
149 if (level >= 0 && unsigned(level) < WPD_NUM_ELEMENTS(m_listTypes))
150 return m_listTypes[level];
151 return WPXNumberingType();
152 }
153
154protected:
155 void _updateNumberingMethods(const unsigned char *numberingMethods);
156
157private:
159};
160
162{
163public:
164 WP6ContentListener(std::list<WPXPageSpan> &pageList, WPXTableList tableList, librevenge::RVNGTextInterface *documentInterface);
165 ~WP6ContentListener() override;
166
167 void startDocument() override
168 {
170 }
171 void startSubDocument() override
172 {
174 }
175 void setDate(const unsigned short type, const unsigned short year,
176 const unsigned char month, const unsigned char day,
177 const unsigned char hour, const unsigned char minute,
178 const unsigned char second, const unsigned char dayOfWeek,
179 const unsigned char timeZone, const unsigned char unused) override;
180 void setExtendedInformation(const unsigned short type, const librevenge::RVNGString &data) override;
181 void setAlignmentCharacter(const unsigned character) override;
182 void setLeaderCharacter(const unsigned character, const unsigned char numSpaces) override;
183 void defineTabStops(const bool isRelative, const std::vector<WPXTabStop> &tabStops,
184 const std::vector<bool> &usePreWP9LeaderMethods) override;
185 void insertCharacter(unsigned character) override;
186 void insertTab(const unsigned char tabType, double tabPosition) override;
187 void handleLineBreak() override;
188 void insertEOL() override;
189 void insertBreak(const unsigned char breakType) override
190 {
192 }
193 void lineSpacingChange(const double lineSpacing) override
194 {
196 }
197 void justificationChange(const unsigned char justification) override
198 {
200 }
201 void characterColorChange(const unsigned char red, const unsigned char green, const unsigned char blue) override;
202 void characterShadingChange(const unsigned char shading) override;
203 void highlightChange(const bool isOn, const RGBSColor &color) override;
204 void fontChange(const unsigned short matchedFontPointSize, const unsigned short fontPID, const librevenge::RVNGString &fontName) override;
205 void attributeChange(const bool isOn, const unsigned char attribute) override;
206 void spacingAfterParagraphChange(const double spacingRelative, const double spacingAbsolute) override;
207 void pageNumberingChange(const WPXPageNumberPosition /* page numbering position */, const unsigned short /* matchedFontPointSize */, const unsigned short /* fontPID */) override {}
208 void pageMarginChange(const unsigned char /* side */, const unsigned short /* margin */) override {}
209 void pageFormChange(const unsigned short /* length */, const unsigned short /* width */, const WPXFormOrientation /* orientation */) override {}
210 void marginChange(const unsigned char side, const unsigned short margin) override;
211 void paragraphMarginChange(const unsigned char side, const signed short margin) override;
212 void indentFirstLineChange(const signed short offset) override;
213 void columnChange(const WPXTextColumnType columnType, const unsigned char numColumns, const std::vector<double> &columnWidth,
214 const std::vector<bool> &isFixedWidth) override;
215 void updateOutlineDefinition(const unsigned short outlineHash, const unsigned char *numberingMethods, const unsigned char tabBehaviourFlag) override;
216
217 void paragraphNumberOn(const unsigned short outlineHash, const unsigned char level, const unsigned char flag) override;
218 void paragraphNumberOff() override;
219 void displayNumberReferenceGroupOn(const unsigned char subGroup, const unsigned char level) override;
220 void displayNumberReferenceGroupOff(const unsigned char subGroup) override;
221 void styleGroupOn(const unsigned char subGroup) override;
222 void styleGroupOff(const unsigned char subGroup) override;
223 void globalOn(const unsigned char systemStyle) override;
224 void globalOff() override;
225 void noteOn(const unsigned short textPID) override;
226 void noteOff(const WPXNoteType noteType) override;
227 void headerFooterGroup(const unsigned char /* headerFooterType */, const unsigned char /* occurrenceBits */, const unsigned short /* textPID */) override {}
228 void suppressPageCharacteristics(const unsigned char /* suppressCode */) override {}
229 void setPageNumber(const unsigned short /* pageNumber */) override {}
230 void setPageNumberingType(const WPXNumberingType pageNumberingType) override;
231 void endDocument() override
232 {
234 }
235 void endSubDocument() override
236 {
238 }
239
240 void defineTable(const unsigned char position, const unsigned short leftOffset) override;
241 void addTableColumnDefinition(const unsigned width, const unsigned leftGutter, const unsigned rightGutter,
242 const unsigned attributes, const unsigned char alignment) override;
243 void startTable() override;
244 void insertRow(const unsigned short rowHeight, const bool isMinimumHeight, const bool isHeaderRow) override;
245 void insertCell(const unsigned char colSpan, const unsigned char rowSpan, const unsigned char borderBits,
246 const RGBSColor *cellFgColor, const RGBSColor *cellBgColor,
247 const RGBSColor *cellBorderColor, const WPXVerticalAlignment cellVerticalAlignment,
248 const bool useCellAttributes, const unsigned cellAttributes) override;
249 void endTable() override;
250 void boxOn(const unsigned char anchoringType, const unsigned char generalPositioningFlags, const unsigned char horizontalPositioningFlags,
251 const signed short horizontalOffset, const unsigned char leftColumn, const unsigned char rightColumn,
252 const unsigned char verticalPositioningFlags, const signed short verticalOffset, const unsigned char widthFlags, const unsigned short width,
253 const unsigned char heightFlags, const unsigned short height, const unsigned char boxContentType, const unsigned short nativeWidth,
254 const unsigned short nativeHeight,
255 const librevenge::RVNGString &linkTarget) override;
256 void boxOff() override;
257 void insertGraphicsData(const unsigned short packetId) override;
258 void insertTextBox(const WP6SubDocument *subDocument) override;
259 void commentAnnotation(const unsigned short textPID) override;
260
261 void undoChange(const unsigned char undoType, const unsigned short undoLevel) override;
262
263protected:
264 void _handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice = 0) override;
265
266 //void _handleLineBreakElementBegin();
267 void _paragraphNumberOn(const unsigned short outlineHash, const unsigned char level);
268 void _flushText() override;
269 void _handleListChange(const unsigned short outlineHash);
270
271 void _changeList() override;
272
273private:
276 std::unique_ptr<WP6ContentParsingState> m_parseState;
277
278 std::map<unsigned short,WP6OutlineDefinition> m_outlineDefineHash;
279 std::map<unsigned, librevenge::RVNGPropertyList> m_listDefinitions;
280};
281
282#endif /* WP6CONTENTLISTENER_H */
283/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
const int STATE_MEMORY
Definition WP6ContentListener.h:53
WP6ListType
Definition WP6ContentListener.h:51
@ ORDERED
Definition WP6ContentListener.h:51
@ UNORDERED
Definition WP6ContentListener.h:51
WP6StyleState
Definition WP6ContentListener.h:43
@ STYLE_END
Definition WP6ContentListener.h:48
@ DOCUMENT_NOTE_GLOBAL
Definition WP6ContentListener.h:43
@ NORMAL
Definition WP6ContentListener.h:43
@ BEGIN_NUMBERING_BEFORE_DISPLAY_REFERENCING
Definition WP6ContentListener.h:45
@ STYLE_BODY
Definition WP6ContentListener.h:48
@ BEGIN_AFTER_NUMBERING
Definition WP6ContentListener.h:48
@ BEGIN_NUMBERING_AFTER_DISPLAY_REFERENCING
Definition WP6ContentListener.h:47
@ DOCUMENT_NOTE
Definition WP6ContentListener.h:43
@ BEGIN_BEFORE_NUMBERING
Definition WP6ContentListener.h:44
@ DISPLAY_REFERENCING
Definition WP6ContentListener.h:46
#define WP6_NUM_LIST_LEVELS
Definition WP6FileStructure.h:36
void indentFirstLineChange(const signed short offset) override
Definition WP6ContentListener.cpp:903
void setPageNumberingType(const WPXNumberingType pageNumberingType) override
Definition WP6ContentListener.cpp:1264
void noteOff(const WPXNoteType noteType) override
Definition WP6ContentListener.cpp:1227
void setExtendedInformation(const unsigned short type, const librevenge::RVNGString &data) override
Definition WP6ContentListener.cpp:238
void characterColorChange(const unsigned char red, const unsigned char green, const unsigned char blue) override
Definition WP6ContentListener.cpp:669
void setAlignmentCharacter(const unsigned character) override
Definition WP6ContentListener.cpp:385
void insertGraphicsData(const unsigned short packetId) override
Definition WP6ContentListener.cpp:1709
void insertBreak(const unsigned char breakType) override
Definition WP6ContentListener.h:189
void globalOff() override
Definition WP6ContentListener.cpp:1193
void _handleListChange(const unsigned short outlineHash)
Definition WP6ContentListener.cpp:1888
void startDocument() override
Definition WP6ContentListener.h:167
void pageMarginChange(const unsigned char, const unsigned short) override
Definition WP6ContentListener.h:208
void spacingAfterParagraphChange(const double spacingRelative, const double spacingAbsolute) override
Definition WP6ContentListener.cpp:798
void _handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice=0) override
Definition WP6ContentListener.cpp:1768
void setDate(const unsigned short type, const unsigned short year, const unsigned char month, const unsigned char day, const unsigned char hour, const unsigned char minute, const unsigned char second, const unsigned char dayOfWeek, const unsigned char timeZone, const unsigned char unused) override
Definition WP6ContentListener.cpp:169
void setLeaderCharacter(const unsigned character, const unsigned char numSpaces) override
Definition WP6ContentListener.cpp:393
void displayNumberReferenceGroupOn(const unsigned char subGroup, const unsigned char level) override
Definition WP6ContentListener.cpp:1028
std::unique_ptr< WP6ContentParsingState > m_parseState
Definition WP6ContentListener.h:276
void defineTable(const unsigned char position, const unsigned short leftOffset) override
Definition WP6ContentListener.cpp:1272
~WP6ContentListener() override
Definition WP6ContentListener.cpp:165
void suppressPageCharacteristics(const unsigned char) override
Definition WP6ContentListener.h:228
void _changeList() override
Definition WP6ContentListener.cpp:1976
void highlightChange(const bool isOn, const RGBSColor &color) override
Definition WP6ContentListener.cpp:689
void lineSpacingChange(const double lineSpacing) override
Definition WP6ContentListener.h:193
void styleGroupOn(const unsigned char subGroup) override
Definition WP6ContentListener.cpp:1125
std::map< unsigned short, WP6OutlineDefinition > m_outlineDefineHash
Definition WP6ContentListener.h:278
void endTable() override
Definition WP6ContentListener.cpp:1435
void endSubDocument() override
Definition WP6ContentListener.h:235
void endDocument() override
Definition WP6ContentListener.h:231
void globalOn(const unsigned char systemStyle) override
Definition WP6ContentListener.cpp:1184
WP6ContentListener & operator=(const WP6ContentListener &)
void startSubDocument() override
Definition WP6ContentListener.h:171
void addTableColumnDefinition(const unsigned width, const unsigned leftGutter, const unsigned rightGutter, const unsigned attributes, const unsigned char alignment) override
Definition WP6ContentListener.cpp:1325
void paragraphNumberOff() override
Definition WP6ContentListener.cpp:1014
void _flushText() override
Definition WP6ContentListener.cpp:1826
void insertTextBox(const WP6SubDocument *subDocument) override
Definition WP6ContentListener.cpp:1726
void pageNumberingChange(const WPXPageNumberPosition, const unsigned short, const unsigned short) override
Definition WP6ContentListener.h:207
void setPageNumber(const unsigned short) override
Definition WP6ContentListener.h:229
void marginChange(const unsigned char side, const unsigned short margin) override
Definition WP6ContentListener.cpp:814
void columnChange(const WPXTextColumnType columnType, const unsigned char numColumns, const std::vector< double > &columnWidth, const std::vector< bool > &isFixedWidth) override
Definition WP6ContentListener.cpp:920
void commentAnnotation(const unsigned short textPID) override
Definition WP6ContentListener.cpp:1742
void startTable() override
Definition WP6ContentListener.cpp:1350
void insertTab(const unsigned char tabType, double tabPosition) override
Definition WP6ContentListener.cpp:475
void attributeChange(const bool isOn, const unsigned char attribute) override
Definition WP6ContentListener.cpp:725
void undoChange(const unsigned char undoType, const unsigned short undoLevel) override
Definition WP6ContentListener.cpp:1985
void justificationChange(const unsigned char justification) override
Definition WP6ContentListener.h:197
void headerFooterGroup(const unsigned char, const unsigned char, const unsigned short) override
Definition WP6ContentListener.h:227
void insertRow(const unsigned short rowHeight, const bool isMinimumHeight, const bool isHeaderRow) override
Definition WP6ContentListener.cpp:1377
void styleGroupOff(const unsigned char subGroup) override
Definition WP6ContentListener.cpp:1160
void updateOutlineDefinition(const unsigned short outlineHash, const unsigned char *numberingMethods, const unsigned char tabBehaviourFlag) override
Definition WP6ContentListener.cpp:998
void noteOn(const unsigned short textPID) override
Definition WP6ContentListener.cpp:1202
void boxOff() override
Definition WP6ContentListener.cpp:1692
void insertCell(const unsigned char colSpan, const unsigned char rowSpan, const unsigned char borderBits, const RGBSColor *cellFgColor, const RGBSColor *cellBgColor, const RGBSColor *cellBorderColor, const WPXVerticalAlignment cellVerticalAlignment, const bool useCellAttributes, const unsigned cellAttributes) override
Definition WP6ContentListener.cpp:1387
void defineTabStops(const bool isRelative, const std::vector< WPXTabStop > &tabStops, const std::vector< bool > &usePreWP9LeaderMethods) override
Definition WP6ContentListener.cpp:458
WP6ContentListener(const WP6ContentListener &)
WP6ContentListener(std::list< WPXPageSpan > &pageList, WPXTableList tableList, librevenge::RVNGTextInterface *documentInterface)
Definition WP6ContentListener.cpp:157
void _paragraphNumberOn(const unsigned short outlineHash, const unsigned char level)
Definition WP6ContentListener.cpp:1815
void characterShadingChange(const unsigned char shading) override
Definition WP6ContentListener.cpp:680
void displayNumberReferenceGroupOff(const unsigned char subGroup) override
Definition WP6ContentListener.cpp:1068
void paragraphNumberOn(const unsigned short outlineHash, const unsigned char level, const unsigned char flag) override
Definition WP6ContentListener.cpp:1006
void fontChange(const unsigned short matchedFontPointSize, const unsigned short fontPID, const librevenge::RVNGString &fontName) override
Definition WP6ContentListener.cpp:700
void paragraphMarginChange(const unsigned char side, const signed short margin) override
Definition WP6ContentListener.cpp:861
void insertEOL() override
Definition WP6ContentListener.cpp:655
void boxOn(const unsigned char anchoringType, const unsigned char generalPositioningFlags, const unsigned char horizontalPositioningFlags, const signed short horizontalOffset, const unsigned char leftColumn, const unsigned char rightColumn, const unsigned char verticalPositioningFlags, const signed short verticalOffset, const unsigned char widthFlags, const unsigned short width, const unsigned char heightFlags, const unsigned short height, const unsigned char boxContentType, const unsigned short nativeWidth, const unsigned short nativeHeight, const librevenge::RVNGString &linkTarget) override
Definition WP6ContentListener.cpp:1447
void pageFormChange(const unsigned short, const unsigned short, const WPXFormOrientation) override
Definition WP6ContentListener.h:209
void insertCharacter(unsigned character) override
Definition WP6ContentListener.cpp:413
std::map< unsigned, librevenge::RVNGPropertyList > m_listDefinitions
Definition WP6ContentListener.h:279
void handleLineBreak() override
Definition WP6ContentListener.cpp:636
WP6Listener()
Definition WP6Listener.cpp:39
WP6OutlineDefinition()
Definition WP6ContentListener.cpp:54
void _updateNumberingMethods(const unsigned char *numberingMethods)
Definition WP6ContentListener.cpp:72
WPXNumberingType getListType(int level)
Definition WP6ContentListener.h:147
WPXNumberingType m_listTypes[WP6_NUM_LIST_LEVELS]
Definition WP6ContentListener.h:158
void update(const unsigned char *numberingMethods, const unsigned char tabBehaviourFlag)
Definition WP6ContentListener.cpp:67
Definition WP6ContentListener.h:55
void clear()
Definition WP6ContentListener.h:74
WP6StyleState getPreviousState() const
Definition WP6ContentListener.h:70
WP6StyleState getCurrentState() const
Definition WP6ContentListener.h:66
std::vector< WP6StyleState > m_stateSequence
Definition WP6ContentListener.h:81
void setCurrentState(WP6StyleState state)
Definition WP6ContentListener.h:61
WP6StyleStateSequence()
Definition WP6ContentListener.h:57
Definition WP6SubDocument.h:34
void lineSpacingChange(const double lineSpacing)
Definition WPXContentListener.cpp:1297
void endSubDocument()
Definition WPXContentListener.cpp:181
void endDocument()
Definition WPXContentListener.cpp:160
void insertBreak(const unsigned char breakType)
Definition WPXContentListener.cpp:1243
void startSubDocument()
Definition WPXContentListener.cpp:154
WPXContentListener(std::list< WPXPageSpan > &pageList, librevenge::RVNGTextInterface *documentInterface)
Definition WPXContentListener.cpp:127
void justificationChange(const unsigned char justification)
Definition WPXContentListener.cpp:1305
void startDocument()
Definition WPXContentListener.cpp:139
Definition WPXSubDocument.h:37
Definition WPXTableList.h:36
Definition WPXTable.h:50
WPXFormOrientation
Definition libwpd_internal.h:105
WPXPageNumberPosition
Definition libwpd_internal.h:97
#define WPD_NUM_ELEMENTS(array)
Definition libwpd_internal.h:53
WPXTextColumnType
Definition libwpd_internal.h:109
WPXNumberingType
Definition libwpd_internal.h:92
WPXSubDocumentType
Definition libwpd_internal.h:111
WPXVerticalAlignment
Definition libwpd_internal.h:107
WPXNoteType
Definition libwpd_internal.h:93
Definition libwpd_internal.h:167
unsigned m_noteTextPID
Definition WP6ContentListener.h:115
librevenge::RVNGString m_textAfterDisplayReference
Definition WP6ContentListener.h:92
librevenge::RVNGString m_numberText
Definition WP6ContentListener.h:91
librevenge::RVNGString m_textBeforeNumber
Definition WP6ContentListener.h:89
unsigned char m_leaderNumSpaces
Definition WP6ContentListener.h:123
bool m_isLinkOpened
Definition WP6ContentListener.h:120
bool m_putativeListElementHasDisplayReferenceNumber
Definition WP6ContentListener.h:113
double m_paragraphMarginBottomRelative
Definition WP6ContentListener.h:95
WP6ContentParsingState(const WP6ContentParsingState &)
librevenge::RVNGString m_textBeforeDisplayReference
Definition WP6ContentListener.h:90
unsigned m_numListExtraTabs
Definition WP6ContentListener.h:100
std::vector< WPXTabStop > m_tempTabStops
Definition WP6ContentListener.h:124
std::vector< bool > m_tempUsePreWP9LeaderMethod
Definition WP6ContentListener.h:125
WPXTableList m_tableList
Definition WP6ContentListener.h:103
double m_paragraphMarginBottomAbsolute
Definition WP6ContentListener.h:96
unsigned char m_oldListLevel
Definition WP6ContentListener.h:110
librevenge::RVNGString m_bodyText
Definition WP6ContentListener.h:88
bool m_putativeListElementHasParagraphNumber
Definition WP6ContentListener.h:112
~WP6ContentParsingState()
Definition WP6ContentListener.cpp:152
std::stack< WP6ListType > m_listTypeStack
Definition WP6ContentListener.h:108
WP6StyleStateSequence m_styleStateSequence
Definition WP6ContentListener.h:111
std::shared_ptr< WPXTable > m_currentTable
Definition WP6ContentListener.h:104
bool m_isListReference
Definition WP6ContentListener.h:101
WP6ContentParsingState(WPXTableList tableList, unsigned nextTableIndice=0)
Definition WP6ContentListener.cpp:105
WPXNumberingType m_currentPageNumberingType
Definition WP6ContentListener.h:127
librevenge::RVNGString m_textAfterNumber
Definition WP6ContentListener.h:93
bool m_isFrameOpened
Definition WP6ContentListener.h:118
std::stack< unsigned > m_listLevelStack
Definition WP6ContentListener.h:107
unsigned m_numNestedNotes
Definition WP6ContentListener.h:116
unsigned m_numRemovedParagraphBreaks
Definition WP6ContentListener.h:98
unsigned m_leaderCharacter
Definition WP6ContentListener.h:122
unsigned short m_currentOutlineHash
Definition WP6ContentListener.h:109
unsigned m_nextTableIndice
Definition WP6ContentListener.h:105
WP6ContentParsingState & operator=(const WP6ContentParsingState &)
Definition WP6ContentListener.h:135
bool m_isListElementOpenAtLevel
Definition WP6ContentListener.h:137
int m_level
Definition WP6ContentListener.h:136

Generated for libwpd by doxygen 1.14.0