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 "WPXTableList.h"
31#include "libwpd_internal.h"
32#include "WPXSubDocument.h"
33#include "WPXPageSpan.h"
34#include "WPXListener.h"
35#include <cstddef>
36#include <memory>
37#include <vector>
38#include <list>
39#include <set>
40
42{
44 unsigned char m_positionBits;
46 std::vector < WPXColumnDefinition > m_columns;
47 std::vector < WPXColumnProperties > m_columnsProperties;
48};
49
51{
54
56 double m_fontSize;
57 std::unique_ptr<librevenge::RVNGString> m_fontName;
58 std::unique_ptr<RGBSColor> m_fontColor;
59 std::unique_ptr<RGBSColor> m_highlightColor;
60
64 unsigned char m_tempParagraphJustification; // TODO: remove this one after the tabs are properly implemented
66
72
76
78
79 std::vector<unsigned int> m_numRowsToSkip;
93
94 unsigned m_currentPage;
97
99 unsigned m_numColumns;
100 std::vector < WPXColumnDefinition > m_textColumns;
102
106
111 double m_paragraphMarginLeft; // resulting paragraph margin that is one of the paragraph
112 double m_paragraphMarginRight; // properties
115 double m_leftMarginByPageMarginChange; // part of the margin due to the PAGE margin change
116 double m_rightMarginByPageMarginChange; // inside a page that already has content.
117 double m_sectionMarginLeft; // In multicolumn sections, the above two will be rather interpreted
118 double m_sectionMarginRight; // as section margin change
119 double m_leftMarginByParagraphMarginChange; // part of the margin due to the PARAGRAPH
120 double m_rightMarginByParagraphMarginChange; // margin change (in WP6)
121 double m_leftMarginByTabs; // part of the margin due to the LEFT or LEFT/RIGHT Indent; the
122 double m_rightMarginByTabs; // only part of the margin that is reset at the end of a paragraph
123
124 double m_listReferencePosition; // position from the left page margin of the list number/bullet
125 double m_listBeginPosition; // position from the left page margin of the beginning of the list
126
127 double m_paragraphTextIndent; // resulting first line indent that is one of the paragraph properties
128 double m_textIndentByParagraphIndentChange; // part of the indent due to the PARAGRAPH indent (WP6???)
129 double m_textIndentByTabs; // part of the indent due to the "Back Tab" or "Left Tab"
130
131 unsigned char m_currentListLevel;
132
134 std::vector<WPXTabStop> m_tabStops;
136
137 std::set <const WPXSubDocument *> m_subDocuments;
138
142
143private:
146};
147
149{
150protected:
151 WPXContentListener(std::list<WPXPageSpan> &pageList, librevenge::RVNGTextInterface *documentInterface);
152 ~WPXContentListener() override;
153
154 void startDocument();
155 void startSubDocument();
156 void endDocument();
157 void endSubDocument();
158 void handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice);
159 void insertBreak(const unsigned char breakType);
160 void lineSpacingChange(const double lineSpacing);
161 void justificationChange(const unsigned char justification);
162
163 std::unique_ptr<WPXContentParsingState> m_ps; // parse state
164 librevenge::RVNGTextInterface *m_documentInterface;
165 librevenge::RVNGPropertyList m_metaData;
166
167 virtual void _handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice) = 0;
168 virtual void _flushText() = 0;
169 virtual void _changeList() = 0;
170
171 void _openSection();
172 void _closeSection();
173
174 void _openPageSpan();
175 void _closePageSpan();
176
177 void _appendParagraphProperties(librevenge::RVNGPropertyList &propList, const bool isListElement=false);
178 void _getTabStops(librevenge::RVNGPropertyListVector &tabStops);
179 void _appendJustification(librevenge::RVNGPropertyList &propList, int justification);
180 void _resetParagraphState(const bool isListElement=false);
181 virtual void _openParagraph();
182 void _closeParagraph();
183
184 void _openListElement();
185 void _closeListElement();
186
187 void _openSpan();
188 void _closeSpan();
189
190 void _openTable();
191 void _closeTable();
192 void _openTableRow(const double height, const bool isMinimumHeight, const bool isHeaderRow);
193 void _closeTableRow();
194 void _openTableCell(const unsigned char colSpan, const unsigned char rowSpan, const unsigned char borderBits,
195 const RGBSColor *cellFgColor, const RGBSColor *cellBgColor,
196 const RGBSColor *cellBorderColor,
197 const WPXVerticalAlignment cellVerticalAlignment);
198 void _closeTableCell();
199
200 double _movePositionToFirstColumn(double position);
201
202 double _getNextTabStop() const;
203 double _getPreviousTabStop() const;
204
205 void _insertText(const librevenge::RVNGString &textBuffer);
206
207 void _insertBreakIfNecessary(librevenge::RVNGPropertyList &propList);
208
209 void _insertPageNumberParagraph(WPXPageNumberPosition position, WPXNumberingType type, librevenge::RVNGString fontName, double fontSize);
210
211 unsigned _mapNonUnicodeCharacter(unsigned character);
212
213private:
216 librevenge::RVNGString _colorToString(const RGBSColor *color);
217 librevenge::RVNGString _mergeColorsToString(const RGBSColor *fgColor, const RGBSColor *bgColor);
218 unsigned _mapSymbolFontCharacter(unsigned character);
219 unsigned _mapDingbatsFontCharacter(unsigned character);
220};
221
222#endif /* WPXCONTENTLISTENER_H */
223/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
void lineSpacingChange(const double lineSpacing)
Definition WPXContentListener.cpp:1296
void _resetParagraphState(const bool isListElement=false)
Definition WPXContentListener.cpp:528
void _closeTable()
Definition WPXContentListener.cpp:970
virtual void _changeList()=0
virtual void _openParagraph()
Definition WPXContentListener.cpp:496
void _openSection()
Definition WPXContentListener.cpp:193
void _appendParagraphProperties(librevenge::RVNGPropertyList &propList, const bool isListElement=false)
Definition WPXContentListener.cpp:582
void endSubDocument()
Definition WPXContentListener.cpp:180
void _openTableRow(const double height, const bool isMinimumHeight, const bool isHeaderRow)
Definition WPXContentListener.cpp:999
void _closeSpan()
Definition WPXContentListener.cpp:899
virtual void _flushText()=0
void _closeListElement()
Definition WPXContentListener.cpp:772
std::unique_ptr< WPXContentParsingState > m_ps
Definition WPXContentListener.h:163
void endDocument()
Definition WPXContentListener.cpp:159
void _insertText(const librevenge::RVNGString &textBuffer)
Definition WPXContentListener.cpp:624
~WPXContentListener() override
Definition WPXContentListener.cpp:134
void _openSpan()
Definition WPXContentListener.cpp:791
WPXContentListener & operator=(const WPXContentListener &)
void insertBreak(const unsigned char breakType)
Definition WPXContentListener.cpp:1242
void _closeSection()
Definition WPXContentListener.cpp:233
double _movePositionToFirstColumn(double position)
Definition WPXContentListener.cpp:1430
void _closeTableCell()
Definition WPXContentListener.cpp:1172
void handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice)
Creates an new document state.
Definition WPXContentListener.cpp:1195
void startSubDocument()
Definition WPXContentListener.cpp:153
virtual void _handleSubDocument(const WPXSubDocument *subDocument, WPXSubDocumentType subDocumentType, WPXTableList tableList, unsigned nextTableIndice)=0
double _getNextTabStop() const
Definition WPXContentListener.cpp:1344
WPXContentListener(std::list< WPXPageSpan > &pageList, librevenge::RVNGTextInterface *documentInterface)
Definition WPXContentListener.cpp:126
void _closeTableRow()
Definition WPXContentListener.cpp:1034
librevenge::RVNGString _colorToString(const RGBSColor *color)
Definition WPXContentListener.cpp:1380
librevenge::RVNGPropertyList m_metaData
Definition WPXContentListener.h:165
unsigned _mapNonUnicodeCharacter(unsigned character)
Definition WPXContentListener.cpp:1450
void _insertBreakIfNecessary(librevenge::RVNGPropertyList &propList)
Definition WPXContentListener.cpp:660
unsigned _mapDingbatsFontCharacter(unsigned character)
Definition WPXContentListener.cpp:1506
void _getTabStops(librevenge::RVNGPropertyListVector &tabStops)
Definition WPXContentListener.cpp:673
double _getPreviousTabStop() const
Definition WPXContentListener.cpp:1362
unsigned _mapSymbolFontCharacter(unsigned character)
Definition WPXContentListener.cpp:1461
void justificationChange(const unsigned char justification)
Definition WPXContentListener.cpp:1304
void startDocument()
Definition WPXContentListener.cpp:138
void _closeParagraph()
Definition WPXContentListener.cpp:725
void _openListElement()
Definition WPXContentListener.cpp:742
void _openTable()
Definition WPXContentListener.cpp:911
void _openTableCell(const unsigned char colSpan, const unsigned char rowSpan, const unsigned char borderBits, const RGBSColor *cellFgColor, const RGBSColor *cellBgColor, const RGBSColor *cellBorderColor, const WPXVerticalAlignment cellVerticalAlignment)
Definition WPXContentListener.cpp:1101
void _insertPageNumberParagraph(WPXPageNumberPosition position, WPXNumberingType type, librevenge::RVNGString fontName, double fontSize)
Definition WPXContentListener.cpp:250
void _appendJustification(librevenge::RVNGPropertyList &propList, int justification)
Definition WPXContentListener.cpp:556
librevenge::RVNGTextInterface * m_documentInterface
Definition WPXContentListener.h:164
void _openPageSpan()
Definition WPXContentListener.cpp:295
WPXContentListener(const WPXContentListener &)
void _closePageSpan()
Definition WPXContentListener.cpp:482
librevenge::RVNGString _mergeColorsToString(const RGBSColor *fgColor, const RGBSColor *bgColor)
Definition WPXContentListener.cpp:1399
WPXListener(std::list< WPXPageSpan > &pageList)
Definition WPXListener.cpp:30
Definition WPXSubDocument.h:37
Definition WPXTableList.h:36
WPXFormOrientation
Definition libwpd_internal.h:105
WPXPageNumberPosition
Definition libwpd_internal.h:97
WPXNumberingType
Definition libwpd_internal.h:92
WPXSubDocumentType
Definition libwpd_internal.h:111
WPXVerticalAlignment
Definition libwpd_internal.h:107
Definition libwpd_internal.h:167
unsigned m_textAttributeBits
Definition WPXContentListener.h:55
double m_leftMarginByParagraphMarginChange
Definition WPXContentListener.h:119
~WPXContentParsingState()
Definition WPXContentListener.cpp:122
bool m_wasHeaderRow
Definition WPXContentListener.h:88
WPXContentParsingState(const WPXContentParsingState &)
bool m_firstParagraphInPageSpan
Definition WPXContentListener.h:77
bool m_isTableOpened
Definition WPXContentListener.h:84
double m_paragraphLineSpacing
Definition WPXContentListener.h:65
WPXTableDefinition m_tableDefinition
Definition WPXContentListener.h:80
WPXContentParsingState()
Definition WPXContentListener.cpp:31
bool m_isSectionOpened
Definition WPXContentListener.h:69
int m_currentTableCellNumberInRow
Definition WPXContentListener.h:83
unsigned m_numColumns
Definition WPXContentListener.h:99
double m_rightMarginByParagraphMarginChange
Definition WPXContentListener.h:120
bool m_isPageSpanBreakDeferred
Definition WPXContentListener.h:70
unsigned char m_paragraphJustificationBeforeTable
Definition WPXContentListener.h:92
double m_rightMarginByTabs
Definition WPXContentListener.h:122
bool m_isParagraphPageBreak
Definition WPXContentListener.h:62
double m_pageFormWidth
Definition WPXContentListener.h:104
std::set< const WPXSubDocument * > m_subDocuments
Definition WPXContentListener.h:137
bool m_isListElementOpened
Definition WPXContentListener.h:75
bool m_isHeaderFooterWithoutParagraph
Definition WPXContentListener.h:71
bool m_isPageSpanOpened
Definition WPXContentListener.h:68
int m_currentTableCol
Definition WPXContentListener.h:81
double m_pageFormLength
Definition WPXContentListener.h:103
bool m_isTableRowOpened
Definition WPXContentListener.h:85
double m_paragraphMarginRight
Definition WPXContentListener.h:112
double m_pageMarginLeft
Definition WPXContentListener.h:107
double m_textIndentByTabs
Definition WPXContentListener.h:129
bool m_isParagraphColumnBreak
Definition WPXContentListener.h:61
double m_paragraphTextIndent
Definition WPXContentListener.h:127
double m_listReferencePosition
Definition WPXContentListener.h:124
double m_paragraphMarginTop
Definition WPXContentListener.h:113
int m_currentTableRow
Definition WPXContentListener.h:82
bool m_isTextColumnWithoutParagraph
Definition WPXContentListener.h:101
bool m_sectionAttributesChanged
Definition WPXContentListener.h:98
double m_sectionMarginLeft
Definition WPXContentListener.h:117
WPXContentParsingState & operator=(const WPXContentParsingState &)
bool m_isTabPositionRelative
Definition WPXContentListener.h:135
double m_sectionMarginRight
Definition WPXContentListener.h:118
unsigned m_currentPageNumber
Definition WPXContentListener.h:96
double m_fontSize
Definition WPXContentListener.h:56
WPXSubDocumentType m_subDocumentType
Definition WPXContentListener.h:141
bool m_isParagraphOpened
Definition WPXContentListener.h:74
std::vector< WPXColumnDefinition > m_textColumns
Definition WPXContentListener.h:100
unsigned char m_paragraphJustification
Definition WPXContentListener.h:63
std::vector< WPXTabStop > m_tabStops
Definition WPXContentListener.h:134
unsigned m_cellAttributeBits
Definition WPXContentListener.h:91
bool m_isCellWithoutParagraph
Definition WPXContentListener.h:89
bool m_isDocumentStarted
Definition WPXContentListener.h:67
double m_leftMarginByPageMarginChange
Definition WPXContentListener.h:115
unsigned char m_currentListLevel
Definition WPXContentListener.h:131
unsigned m_currentPage
Definition WPXContentListener.h:94
unsigned char m_tempParagraphJustification
Definition WPXContentListener.h:64
std::vector< unsigned int > m_numRowsToSkip
Definition WPXContentListener.h:79
double m_paragraphMarginBottom
Definition WPXContentListener.h:114
unsigned m_numPagesRemainingInSpan
Definition WPXContentListener.h:95
double m_listBeginPosition
Definition WPXContentListener.h:125
double m_paragraphMarginLeft
Definition WPXContentListener.h:111
bool m_isTableColumnOpened
Definition WPXContentListener.h:86
bool m_isNote
Definition WPXContentListener.h:140
bool m_isTableCellOpened
Definition WPXContentListener.h:87
bool m_isSpanOpened
Definition WPXContentListener.h:73
double m_leftMarginByTabs
Definition WPXContentListener.h:121
double m_pageMarginRight
Definition WPXContentListener.h:108
WPXFormOrientation m_pageFormOrientation
Definition WPXContentListener.h:105
std::unique_ptr< librevenge::RVNGString > m_fontName
Definition WPXContentListener.h:57
double m_pageMarginTop
Definition WPXContentListener.h:109
double m_textIndentByParagraphIndentChange
Definition WPXContentListener.h:128
double m_pageMarginBottom
Definition WPXContentListener.h:110
bool m_isRowWithoutCell
Definition WPXContentListener.h:90
std::unique_ptr< RGBSColor > m_highlightColor
Definition WPXContentListener.h:59
std::unique_ptr< RGBSColor > m_fontColor
Definition WPXContentListener.h:58
bool m_inSubDocument
Definition WPXContentListener.h:139
unsigned m_alignmentCharacter
Definition WPXContentListener.h:133
double m_rightMarginByPageMarginChange
Definition WPXContentListener.h:116
Definition WPXContentListener.h:42
WPXTableDefinition()
Definition WPXContentListener.h:43
double m_leftOffset
Definition WPXContentListener.h:45
std::vector< WPXColumnProperties > m_columnsProperties
Definition WPXContentListener.h:47
std::vector< WPXColumnDefinition > m_columns
Definition WPXContentListener.h:46
unsigned char m_positionBits
Definition WPXContentListener.h:44

Generated for libwpd by doxygen 1.14.0