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 
41 class WPXTable;
42 
49  };
50 
52 
53 const int STATE_MEMORY = 3;
55 {
56 public:
58  {
59  clear();
60  }
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 
80 private:
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 
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 
115  unsigned m_noteTextPID;
117 
119 
121 
123  unsigned char m_leaderNumSpaces;
124  std::vector<WPXTabStop> m_tempTabStops;
125  std::vector<bool> m_tempUsePreWP9LeaderMethod;
126 
128 
129 private:
132 };
133 
135 {
136  int m_level;
138 };
139 
141 {
142 public:
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 
154 protected:
155  void _updateNumberingMethods(const unsigned char *numberingMethods);
156 
157 private:
159 };
160 
162 {
163 public:
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 
263 protected:
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 
273 private:
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: */
WPXNumberingType
Definition: libwpd_internal.h:92
bool m_isFrameOpened
Definition: WP6ContentListener.h:118
Definition: WP6ContentListener.h:43
void insertGraphicsData(const unsigned short packetId) override
Definition: WP6ContentListener.cpp:1709
Definition: WP6ContentListener.h:47
void pageFormChange(const unsigned short, const unsigned short, const WPXFormOrientation) override
Definition: WP6ContentListener.h:209
librevenge::RVNGString m_numberText
Definition: WP6ContentListener.h:91
void insertEOL() override
Definition: WP6ContentListener.cpp:655
void _flushText() override
Definition: WP6ContentListener.cpp:1826
Definition: WP6Listener.h:40
void characterColorChange(const unsigned char red, const unsigned char green, const unsigned char blue) override
Definition: WP6ContentListener.cpp:669
void addTableColumnDefinition(const unsigned width, const unsigned leftGutter, const unsigned rightGutter, const unsigned attributes, const unsigned char alignment) override
Definition: WP6ContentListener.cpp:1325
Definition: WP6ContentListener.h:48
Definition: WP6ContentListener.h:45
WP6StyleStateSequence()
Definition: WP6ContentListener.h:57
void defineTabStops(const bool isRelative, const std::vector< WPXTabStop > &tabStops, const std::vector< bool > &usePreWP9LeaderMethods) override
Definition: WP6ContentListener.cpp:458
Definition: WPXTable.h:49
void _handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice=0) override
Definition: WP6ContentListener.cpp:1768
void insertRow(const unsigned short rowHeight, const bool isMinimumHeight, const bool isHeaderRow) override
Definition: WP6ContentListener.cpp:1377
void insertTextBox(const WP6SubDocument *subDocument) override
Definition: WP6ContentListener.cpp:1726
void setPageNumber(const unsigned short) override
Definition: WP6ContentListener.h:229
void justificationChange(const unsigned char justification)
Definition: WPXContentListener.cpp:1304
Definition: WP6ContentListener.h:46
void startSubDocument()
Definition: WPXContentListener.cpp:153
librevenge::RVNGString m_textBeforeNumber
Definition: WP6ContentListener.h:89
std::map< unsigned short, WP6OutlineDefinition > m_outlineDefineHash
Definition: WP6ContentListener.h:278
void endDocument()
Definition: WPXContentListener.cpp:159
Definition: WP6ContentListener.h:51
WPXNumberingType m_currentPageNumberingType
Definition: WP6ContentListener.h:127
WPXTextColumnType
Definition: libwpd_internal.h:109
void characterShadingChange(const unsigned char shading) override
Definition: WP6ContentListener.cpp:680
const int STATE_MEMORY
Definition: WP6ContentListener.h:53
Definition: WP6ContentListener.h:51
bool m_putativeListElementHasDisplayReferenceNumber
Definition: WP6ContentListener.h:113
void paragraphNumberOn(const unsigned short outlineHash, const unsigned char level, const unsigned char flag) override
Definition: WP6ContentListener.cpp:1006
WP6StyleStateSequence m_styleStateSequence
Definition: WP6ContentListener.h:111
WP6StyleState
Definition: WP6ContentListener.h:43
double m_paragraphMarginBottomAbsolute
Definition: WP6ContentListener.h:96
unsigned m_nextTableIndice
Definition: WP6ContentListener.h:105
void setAlignmentCharacter(const unsigned character) override
Definition: WP6ContentListener.cpp:385
void displayNumberReferenceGroupOff(const unsigned char subGroup) override
Definition: WP6ContentListener.cpp:1068
void insertBreak(const unsigned char breakType)
Definition: WPXContentListener.cpp:1242
void marginChange(const unsigned char side, const unsigned short margin) override
Definition: WP6ContentListener.cpp:814
std::vector< bool > m_tempUsePreWP9LeaderMethod
Definition: WP6ContentListener.h:125
void endTable() override
Definition: WP6ContentListener.cpp:1435
void pageNumberingChange(const WPXPageNumberPosition, const unsigned short, const unsigned short) override
Definition: WP6ContentListener.h:207
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
unsigned m_numListExtraTabs
Definition: WP6ContentListener.h:100
~WP6ContentParsingState()
Definition: WP6ContentListener.cpp:152
WP6ListType
Definition: WP6ContentListener.h:51
Definition: WP6ContentListener.h:43
librevenge::RVNGString m_textBeforeDisplayReference
Definition: WP6ContentListener.h:90
void indentFirstLineChange(const signed short offset) override
Definition: WP6ContentListener.cpp:903
WPXSubDocumentType
Definition: libwpd_internal.h:111
void attributeChange(const bool isOn, const unsigned char attribute) override
Definition: WP6ContentListener.cpp:725
bool m_putativeListElementHasParagraphNumber
Definition: WP6ContentListener.h:112
void fontChange(const unsigned short matchedFontPointSize, const unsigned short fontPID, const librevenge::RVNGString &fontName) override
Definition: WP6ContentListener.cpp:700
Definition: WPXContentListener.h:146
bool m_isListElementOpenAtLevel
Definition: WP6ContentListener.h:137
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 handleLineBreak() override
Definition: WP6ContentListener.cpp:636
void headerFooterGroup(const unsigned char, const unsigned char, const unsigned short) override
Definition: WP6ContentListener.h:227
Definition: WP6ContentListener.h:134
Definition: WP6ContentListener.h:43
librevenge::RVNGString m_textAfterDisplayReference
Definition: WP6ContentListener.h:92
void paragraphMarginChange(const unsigned char side, const signed short margin) override
Definition: WP6ContentListener.cpp:861
void commentAnnotation(const unsigned short textPID) override
Definition: WP6ContentListener.cpp:1742
Definition: WPXTable.h:79
void startTable() override
Definition: WP6ContentListener.cpp:1350
void updateOutlineDefinition(const unsigned short outlineHash, const unsigned char *numberingMethods, const unsigned char tabBehaviourFlag) override
Definition: WP6ContentListener.cpp:998
Definition: WP6ContentListener.h:54
void globalOff() override
Definition: WP6ContentListener.cpp:1193
WP6ContentParsingState & operator=(const WP6ContentParsingState &)
WP6StyleState getPreviousState() const
Definition: WP6ContentListener.h:70
Definition: WP6SubDocument.h:33
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 lineSpacingChange(const double lineSpacing) override
Definition: WP6ContentListener.h:193
int m_level
Definition: WP6ContentListener.h:136
void styleGroupOn(const unsigned char subGroup) override
Definition: WP6ContentListener.cpp:1125
std::vector< WP6StyleState > m_stateSequence
Definition: WP6ContentListener.h:81
void justificationChange(const unsigned char justification) override
Definition: WP6ContentListener.h:197
void styleGroupOff(const unsigned char subGroup) override
Definition: WP6ContentListener.cpp:1160
void boxOff() override
Definition: WP6ContentListener.cpp:1692
WPXNumberingType getListType(int level)
Definition: WP6ContentListener.h:147
unsigned char m_oldListLevel
Definition: WP6ContentListener.h:110
void spacingAfterParagraphChange(const double spacingRelative, const double spacingAbsolute) override
Definition: WP6ContentListener.cpp:798
void _changeList() override
Definition: WP6ContentListener.cpp:1976
void setExtendedInformation(const unsigned short type, const librevenge::RVNGString &data) override
Definition: WP6ContentListener.cpp:238
void update(const unsigned char *numberingMethods, const unsigned char tabBehaviourFlag)
Definition: WP6ContentListener.cpp:67
WPXFormOrientation
Definition: libwpd_internal.h:105
Definition: WP6ContentListener.h:48
Definition: WP6ContentListener.h:140
void paragraphNumberOff() override
Definition: WP6ContentListener.cpp:1014
void insertCharacter(unsigned character) override
Definition: WP6ContentListener.cpp:413
void highlightChange(const bool isOn, const RGBSColor &color) override
Definition: WP6ContentListener.cpp:689
WP6ContentListener & operator=(const WP6ContentListener &)
Definition: WPXSubDocument.h:34
void setCurrentState(WP6StyleState state)
Definition: WP6ContentListener.h:61
double m_paragraphMarginBottomRelative
Definition: WP6ContentListener.h:95
WPXNumberingType m_listTypes[WP6_NUM_LIST_LEVELS]
Definition: WP6ContentListener.h:158
unsigned m_numNestedNotes
Definition: WP6ContentListener.h:116
WPXVerticalAlignment
Definition: libwpd_internal.h:107
std::unique_ptr< WP6ContentParsingState > m_parseState
Definition: WP6ContentListener.h:276
unsigned short m_currentOutlineHash
Definition: WP6ContentListener.h:109
WPXTableList m_tableList
Definition: WP6ContentListener.h:103
void setPageNumberingType(const WPXNumberingType pageNumberingType) override
Definition: WP6ContentListener.cpp:1264
void startDocument() override
Definition: WP6ContentListener.h:167
void noteOn(const unsigned short textPID) override
Definition: WP6ContentListener.cpp:1202
#define WP6_NUM_LIST_LEVELS
Definition: WP6FileStructure.h:36
void defineTable(const unsigned char position, const unsigned short leftOffset) override
Definition: WP6ContentListener.cpp:1272
void _paragraphNumberOn(const unsigned short outlineHash, const unsigned char level)
Definition: WP6ContentListener.cpp:1815
void _updateNumberingMethods(const unsigned char *numberingMethods)
Definition: WP6ContentListener.cpp:72
std::stack< unsigned > m_listLevelStack
Definition: WP6ContentListener.h:107
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
unsigned m_noteTextPID
Definition: WP6ContentListener.h:115
void endSubDocument()
Definition: WPXContentListener.cpp:180
std::vector< WPXTabStop > m_tempTabStops
Definition: WP6ContentListener.h:124
void displayNumberReferenceGroupOn(const unsigned char subGroup, const unsigned char level) override
Definition: WP6ContentListener.cpp:1028
Definition: libwpd_internal.h:166
void insertBreak(const unsigned char breakType) override
Definition: WP6ContentListener.h:189
librevenge::RVNGString m_textAfterNumber
Definition: WP6ContentListener.h:93
void _handleListChange(const unsigned short outlineHash)
Definition: WP6ContentListener.cpp:1888
void setLeaderCharacter(const unsigned character, const unsigned char numSpaces) override
Definition: WP6ContentListener.cpp:393
unsigned char m_leaderNumSpaces
Definition: WP6ContentListener.h:123
WP6ContentParsingState(WPXTableList tableList, unsigned nextTableIndice=0)
Definition: WP6ContentListener.cpp:105
WPXPageNumberPosition
Definition: libwpd_internal.h:97
bool m_isLinkOpened
Definition: WP6ContentListener.h:120
unsigned m_leaderCharacter
Definition: WP6ContentListener.h:122
std::map< unsigned, librevenge::RVNGPropertyList > m_listDefinitions
Definition: WP6ContentListener.h:279
WP6StyleState getCurrentState() const
Definition: WP6ContentListener.h:66
Definition: WP6ContentListener.h:48
~WP6ContentListener() override
Definition: WP6ContentListener.cpp:165
Definition: WP6ContentListener.h:44
WPXTable * m_currentTable
Definition: WP6ContentListener.h:104
WP6ContentListener(std::list< WPXPageSpan > &pageList, WPXTableList tableList, librevenge::RVNGTextInterface *documentInterface)
Definition: WP6ContentListener.cpp:157
void startDocument()
Definition: WPXContentListener.cpp:138
void noteOff(const WPXNoteType noteType) override
Definition: WP6ContentListener.cpp:1227
void startSubDocument() override
Definition: WP6ContentListener.h:171
void globalOn(const unsigned char systemStyle) override
Definition: WP6ContentListener.cpp:1184
Definition: WP6ContentListener.h:161
void lineSpacingChange(const double lineSpacing)
Definition: WPXContentListener.cpp:1296
std::stack< WP6ListType > m_listTypeStack
Definition: WP6ContentListener.h:108
librevenge::RVNGString m_bodyText
Definition: WP6ContentListener.h:88
void endSubDocument() override
Definition: WP6ContentListener.h:235
unsigned m_numRemovedParagraphBreaks
Definition: WP6ContentListener.h:98
void suppressPageCharacteristics(const unsigned char) override
Definition: WP6ContentListener.h:228
void insertTab(const unsigned char tabType, double tabPosition) override
Definition: WP6ContentListener.cpp:475
void clear()
Definition: WP6ContentListener.h:74
WP6OutlineDefinition()
Definition: WP6ContentListener.cpp:54
void endDocument() override
Definition: WP6ContentListener.h:231
void pageMarginChange(const unsigned char, const unsigned short) override
Definition: WP6ContentListener.h:208
#define WPD_NUM_ELEMENTS(array)
Definition: libwpd_internal.h:53
WPXNoteType
Definition: libwpd_internal.h:93
bool m_isListReference
Definition: WP6ContentListener.h:101
void undoChange(const unsigned char undoType, const unsigned short undoLevel) override
Definition: WP6ContentListener.cpp:1985
Definition: WP6ContentListener.h:84

Generated for libwpd by doxygen 1.8.14