WPXContentListener.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) 2006 Fridrich Strba (fridrich.strba@bluewin.ch)
11  *
12  * For minor contributions see the git repository.
13  *
14  * Alternatively, the contents of this file may be used under the terms
15  * of the GNU Lesser General Public License Version 2.1 or later
16  * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
17  * applicable instead of those above.
18  *
19  * For further information visit http://libwpd.sourceforge.net
20  */
21 
22 /* "This product is not manufactured, approved, or supported by
23  * Corel Corporation or Corel Corporation Limited."
24  */
25 
26 #ifndef WPXCONTENTLISTENER_H
27 #define WPXCONTENTLISTENER_H
28 
29 #include "WPXTable.h"
30 #include "libwpd_internal.h"
31 #include "WPXSubDocument.h"
32 #include "WPXPageSpan.h"
33 #include "WPXListener.h"
34 #include <vector>
35 #include <list>
36 #include <set>
37 
40 {
42  uint8_t m_positionBits;
43  double m_leftOffset;
44  std::vector < WPXColumnDefinition > m_columns;
45  std::vector < WPXColumnProperties > m_columnsProperties;
46 };
47 
50 {
53 
55  double m_fontSize;
59 
63  uint8_t m_tempParagraphJustification; // TODO: remove this one after the tabs are properly implemented
65 
71 
75 
77 
78  std::vector<unsigned int> m_numRowsToSkip;
92 
93  unsigned m_currentPage;
96 
98  unsigned m_numColumns;
99  std::vector < WPXColumnDefinition > m_textColumns;
101 
105 
110  double m_paragraphMarginLeft; // resulting paragraph margin that is one of the paragraph
111  double m_paragraphMarginRight; // properties
114  double m_leftMarginByPageMarginChange; // part of the margin due to the PAGE margin change
115  double m_rightMarginByPageMarginChange; // inside a page that already has content.
116  double m_sectionMarginLeft; // In multicolumn sections, the above two will be rather interpreted
117  double m_sectionMarginRight; // as section margin change
118  double m_leftMarginByParagraphMarginChange; // part of the margin due to the PARAGRAPH
119  double m_rightMarginByParagraphMarginChange; // margin change (in WP6)
120  double m_leftMarginByTabs; // part of the margin due to the LEFT or LEFT/RIGHT Indent; the
121  double m_rightMarginByTabs; // only part of the margin that is reset at the end of a paragraph
122 
123  double m_listReferencePosition; // position from the left page margin of the list number/bullet
124  double m_listBeginPosition; // position from the left page margin of the beginning of the list
125 
126  double m_paragraphTextIndent; // resulting first line indent that is one of the paragraph properties
127  double m_textIndentByParagraphIndentChange; // part of the indent due to the PARAGRAPH indent (WP6???)
128  double m_textIndentByTabs; // part of the indent due to the "Back Tab" or "Left Tab"
129 
131 
133  std::vector<WPXTabStop> m_tabStops;
135 
136  std::set <const WPXSubDocument *> m_subDocuments;
137 
139  bool m_isNote;
141 
142 private:
145 };
146 
148 {
149 protected:
150  WPXContentListener(std::list<WPXPageSpan> &pageList, WPXDocumentInterface *documentInterface);
151  virtual ~WPXContentListener();
152 
153  void startDocument();
154  void startSubDocument();
155  void endDocument();
156  void endSubDocument();
157  void handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice);
158  void insertBreak(const uint8_t breakType);
159  void lineSpacingChange(const double lineSpacing);
160  void justificationChange(const uint8_t justification);
161 
162  WPXContentParsingState *m_ps; // parse state
165 
166  virtual void _handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice) = 0;
167  virtual void _flushText() = 0;
168  virtual void _changeList() = 0;
169 
170  void _openSection();
171  void _closeSection();
172 
173  void _openPageSpan();
174  void _closePageSpan();
175 
176  void _appendParagraphProperties(WPXPropertyList &propList, const bool isListElement=false);
177  void _getTabStops(WPXPropertyListVector &tabStops);
178  void _appendJustification(WPXPropertyList &propList, int justification);
179  void _resetParagraphState(const bool isListElement=false);
180  virtual void _openParagraph();
181  void _closeParagraph();
182 
183  void _openListElement();
184  void _closeListElement();
185 
186  void _openSpan();
187  void _closeSpan();
188 
189  void _openTable();
190  void _closeTable();
191  void _openTableRow(const double height, const bool isMinimumHeight, const bool isHeaderRow);
192  void _closeTableRow();
193  void _openTableCell(const uint8_t colSpan, const uint8_t rowSpan, const uint8_t borderBits,
194  const RGBSColor *cellFgColor, const RGBSColor *cellBgColor,
195  const RGBSColor *cellBorderColor,
196  const WPXVerticalAlignment cellVerticalAlignment);
197  void _closeTableCell();
198 
199  double _movePositionToFirstColumn(double position);
200 
201  double _getNextTabStop() const;
202  double _getPreviousTabStop() const;
203 
204  void _insertText(const WPXString &textBuffer);
205 
207 
208  void _insertPageNumberParagraph(WPXPageNumberPosition position, WPXNumberingType type, WPXString fontName, double fontSize);
209 
210  uint32_t _mapNonUnicodeCharacter(uint32_t character);
211 
212 private:
215  WPXString _colorToString(const RGBSColor *color);
216  WPXString _mergeColorsToString(const RGBSColor *fgColor, const RGBSColor *bgColor);
217  uint32_t _mapSymbolFontCharacter(uint32_t character);
218  uint32_t _mapDingbatsFontCharacter(uint32_t character);
219 };
220 
221 #endif /* WPXCONTENTLISTENER_H */
222 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
WPXNumberingType
Definition: libwpd_internal.h:93
double m_leftMarginByPageMarginChange
Definition: WPXContentListener.h:114
bool m_isNote
Definition: WPXContentListener.h:139
void handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice)
Creates an new document state.
Definition: WPXContentListener.cpp:1182
double _getNextTabStop() const
Definition: WPXContentListener.cpp:1332
uint32_t _mapSymbolFontCharacter(uint32_t character)
Definition: WPXContentListener.cpp:1449
Definition: WPXString.h:32
bool m_isSectionOpened
Definition: WPXContentListener.h:68
double m_fontSize
Definition: WPXContentListener.h:55
virtual void _handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice)=0
WPXContentListener & operator=(const WPXContentListener &)
bool m_isCellWithoutParagraph
Definition: WPXContentListener.h:88
double m_leftMarginByParagraphMarginChange
Definition: WPXContentListener.h:118
unsigned m_currentPage
Definition: WPXContentListener.h:93
bool m_isHeaderFooterWithoutParagraph
Definition: WPXContentListener.h:70
std::vector< unsigned int > m_numRowsToSkip
Definition: WPXContentListener.h:78
void _openTableRow(const double height, const bool isMinimumHeight, const bool isHeaderRow)
Definition: WPXContentListener.cpp:986
double m_rightMarginByPageMarginChange
Definition: WPXContentListener.h:115
uint32_t _mapNonUnicodeCharacter(uint32_t character)
Definition: WPXContentListener.cpp:1438
double _getPreviousTabStop() const
Definition: WPXContentListener.cpp:1350
void insertBreak(const uint8_t breakType)
Definition: WPXContentListener.cpp:1230
void startSubDocument()
Definition: WPXContentListener.cpp:157
uint8_t m_paragraphJustificationBeforeTable
Definition: WPXContentListener.h:91
bool m_isListElementOpened
Definition: WPXContentListener.h:74
std::set< const WPXSubDocument * > m_subDocuments
Definition: WPXContentListener.h:136
uint8_t m_positionBits
Definition: WPXContentListener.h:42
void endDocument()
Definition: WPXContentListener.cpp:163
void _resetParagraphState(const bool isListElement=false)
Definition: WPXContentListener.cpp:527
void _openSection()
Definition: WPXContentListener.cpp:197
double m_rightMarginByTabs
Definition: WPXContentListener.h:121
void _closeListElement()
Definition: WPXContentListener.cpp:769
unsigned m_numColumns
Definition: WPXContentListener.h:98
uint8_t m_paragraphJustification
Definition: WPXContentListener.h:62
void _openTableCell(const uint8_t colSpan, const uint8_t rowSpan, const uint8_t borderBits, const RGBSColor *cellFgColor, const RGBSColor *cellBgColor, const RGBSColor *cellBorderColor, const WPXVerticalAlignment cellVerticalAlignment)
Definition: WPXContentListener.cpp:1088
virtual void _changeList()=0
unsigned m_numPagesRemainingInSpan
Definition: WPXContentListener.h:94
void _closeSection()
Definition: WPXContentListener.cpp:235
Definition: WPXListener.h:34
void _insertText(const WPXString &textBuffer)
Definition: WPXContentListener.cpp:623
void justificationChange(const uint8_t justification)
Definition: WPXContentListener.cpp:1292
void _openSpan()
Definition: WPXContentListener.cpp:788
double m_paragraphMarginBottom
Definition: WPXContentListener.h:113
Definition: WPXPropertyList.h:37
double m_paragraphMarginTop
Definition: WPXContentListener.h:112
bool m_inSubDocument
Definition: WPXContentListener.h:138
Definition: WPXPropertyListVector.h:35
double m_paragraphMarginRight
Definition: WPXContentListener.h:111
double m_textIndentByTabs
Definition: WPXContentListener.h:128
bool m_sectionAttributesChanged
Definition: WPXContentListener.h:97
virtual void _openParagraph()
Definition: WPXContentListener.cpp:497
WPXSubDocumentType
Definition: libwpd_internal.h:112
int m_currentTableRow
Definition: WPXContentListener.h:81
void _closeTableCell()
Definition: WPXContentListener.cpp:1159
bool m_isPageSpanOpened
Definition: WPXContentListener.h:67
int m_currentTableCol
Definition: WPXContentListener.h:80
void _insertBreakIfNecessary(WPXPropertyList &propList)
Definition: WPXContentListener.cpp:659
double m_pageFormWidth
Definition: WPXContentListener.h:103
bool m_isTableRowOpened
Definition: WPXContentListener.h:84
uint8_t m_tempParagraphJustification
Definition: WPXContentListener.h:63
void _openPageSpan()
Definition: WPXContentListener.cpp:296
Definition: libwpd_internal.h:168
Definition: WPXContentListener.h:147
double m_sectionMarginLeft
Definition: WPXContentListener.h:116
double m_pageMarginRight
Definition: WPXContentListener.h:107
Definition: WPXTable.h:82
WPXTableDefinition m_tableDefinition
Definition: WPXContentListener.h:79
void _openTable()
Definition: WPXContentListener.cpp:899
double m_listReferencePosition
Definition: WPXContentListener.h:123
uint32_t m_cellAttributeBits
Definition: WPXContentListener.h:90
std::vector< WPXTabStop > m_tabStops
Definition: WPXContentListener.h:133
~_WPXContentParsingState()
Definition: WPXContentListener.cpp:122
WPXString * m_fontName
Definition: WPXContentListener.h:56
_WPXContentParsingState & operator=(const _WPXContentParsingState &)
WPXContentListener(std::list< WPXPageSpan > &pageList, WPXDocumentInterface *documentInterface)
Definition: WPXContentListener.cpp:129
bool m_isTextColumnWithoutParagraph
Definition: WPXContentListener.h:100
std::vector< WPXColumnProperties > m_columnsProperties
Definition: WPXContentListener.h:45
WPXFormOrientation
Definition: libwpd_internal.h:106
Definition: WPXDocumentInterface.h:42
bool m_isRowWithoutCell
Definition: WPXContentListener.h:89
virtual ~WPXContentListener()
Definition: WPXContentListener.cpp:137
RGBSColor * m_fontColor
Definition: WPXContentListener.h:57
uint8_t m_currentListLevel
Definition: WPXContentListener.h:130
double m_leftMarginByTabs
Definition: WPXContentListener.h:120
void _appendJustification(WPXPropertyList &propList, int justification)
Definition: WPXContentListener.cpp:555
Definition: WPXSubDocument.h:35
bool m_wasHeaderRow
Definition: WPXContentListener.h:87
WPXString _mergeColorsToString(const RGBSColor *fgColor, const RGBSColor *bgColor)
Definition: WPXContentListener.cpp:1387
WPXString _colorToString(const RGBSColor *color)
Definition: WPXContentListener.cpp:1368
std::vector< WPXColumnDefinition > m_columns
Definition: WPXContentListener.h:44
double m_textIndentByParagraphIndentChange
Definition: WPXContentListener.h:127
WPXVerticalAlignment
Definition: libwpd_internal.h:108
double _movePositionToFirstColumn(double position)
Definition: WPXContentListener.cpp:1418
bool m_isPageSpanBreakDeferred
Definition: WPXContentListener.h:69
uint32_t _mapDingbatsFontCharacter(uint32_t character)
Definition: WPXContentListener.cpp:1494
void _closeTableRow()
Definition: WPXContentListener.cpp:1021
bool m_isParagraphPageBreak
Definition: WPXContentListener.h:61
void _closeTable()
Definition: WPXContentListener.cpp:957
double m_pageMarginLeft
Definition: WPXContentListener.h:106
uint32_t m_textAttributeBits
Definition: WPXContentListener.h:54
Definition: WPXContentListener.h:39
double m_sectionMarginRight
Definition: WPXContentListener.h:117
bool m_isParagraphColumnBreak
Definition: WPXContentListener.h:60
RGBSColor * m_highlightColor
Definition: WPXContentListener.h:58
std::vector< WPXColumnDefinition > m_textColumns
Definition: WPXContentListener.h:99
_WPXContentParsingState()
Definition: WPXContentListener.cpp:31
bool m_isTableColumnOpened
Definition: WPXContentListener.h:85
void endSubDocument()
Definition: WPXContentListener.cpp:184
void _openListElement()
Definition: WPXContentListener.cpp:741
void _appendParagraphProperties(WPXPropertyList &propList, const bool isListElement=false)
Definition: WPXContentListener.cpp:581
double m_pageMarginTop
Definition: WPXContentListener.h:108
bool m_isTableCellOpened
Definition: WPXContentListener.h:86
void _closeSpan()
Definition: WPXContentListener.cpp:887
void _closeParagraph()
Definition: WPXContentListener.cpp:724
WPXPageNumberPosition
Definition: libwpd_internal.h:98
double m_listBeginPosition
Definition: WPXContentListener.h:124
_WPXTableDefinition()
Definition: WPXContentListener.h:41
double m_leftOffset
Definition: WPXContentListener.h:43
WPXFormOrientation m_pageFormOrientation
Definition: WPXContentListener.h:104
double m_pageFormLength
Definition: WPXContentListener.h:102
double m_paragraphMarginLeft
Definition: WPXContentListener.h:110
virtual void _flushText()=0
WPXPropertyList m_metaData
Definition: WPXContentListener.h:164
Definition: WPXContentListener.h:49
double m_paragraphTextIndent
Definition: WPXContentListener.h:126
void startDocument()
Definition: WPXContentListener.cpp:142
void _getTabStops(WPXPropertyListVector &tabStops)
Definition: WPXContentListener.cpp:672
double m_pageMarginBottom
Definition: WPXContentListener.h:109
bool m_isParagraphOpened
Definition: WPXContentListener.h:73
void lineSpacingChange(const double lineSpacing)
Definition: WPXContentListener.cpp:1284
uint32_t m_alignmentCharacter
Definition: WPXContentListener.h:132
unsigned m_currentPageNumber
Definition: WPXContentListener.h:95
WPXDocumentInterface * m_documentInterface
Definition: WPXContentListener.h:163
bool m_isSpanOpened
Definition: WPXContentListener.h:72
bool m_isDocumentStarted
Definition: WPXContentListener.h:66
void _closePageSpan()
Definition: WPXContentListener.cpp:483
bool m_firstParagraphInPageSpan
Definition: WPXContentListener.h:76
bool m_isTableOpened
Definition: WPXContentListener.h:83
WPXContentParsingState * m_ps
Definition: WPXContentListener.h:162
bool m_isTabPositionRelative
Definition: WPXContentListener.h:134
WPXSubDocumentType m_subDocumentType
Definition: WPXContentListener.h:140
void _insertPageNumberParagraph(WPXPageNumberPosition position, WPXNumberingType type, WPXString fontName, double fontSize)
Definition: WPXContentListener.cpp:252
int m_currentTableCellNumberInRow
Definition: WPXContentListener.h:82
double m_rightMarginByParagraphMarginChange
Definition: WPXContentListener.h:119
double m_paragraphLineSpacing
Definition: WPXContentListener.h:64

Generated for libwpd by doxygen 1.8.5