- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

WPSContentListener.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2 /* libwps
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, 2007 Andrew Ziem
11 * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch)
12 * Copyright (C) 2003-2005 William Lachance (william.lachance@sympatico.ca)
13 * Copyright (C) 2003 Marc Maurer (uwog@uwog.net)
14 *
15 * For minor contributions see the git repository.
16 *
17 * Alternatively, the contents of this file may be used under the terms
18 * of the GNU Lesser General Public License Version 2.1 or later
19 * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
20 * applicable instead of those above.
21 *
22 * For further information visit http://libwps.sourceforge.net
23 */
24
25 #ifndef WPSCONTENTLISTENER_H
26 #define WPSCONTENTLISTENER_H
27
28 #include <vector>
29
30 #include <librevenge/librevenge.h>
31
32 #include "libwps_internal.h"
33
34 #include "WPSListener.h"
35
36 class WPSList;
37 class WPSPageSpan;
38 struct WPSParagraph;
39 struct WPSTabStop;
40
41 struct WPSContentParsingState;
42 struct WPSDocumentParsingState;
43
44 class WPSContentListener : public WPSListener
45 {
46 public:
47 WPSContentListener(std::vector<WPSPageSpan> const &pageList, librevenge::RVNGTextInterface *documentInterface);
48 virtual ~WPSContentListener();
49
50 void setDocumentLanguage(int lcid);
51 void setMetaData(const librevenge::RVNGPropertyList &list);
52
53 void startDocument();
54 void endDocument();
55 void handleSubDocument(WPSSubDocumentPtr &subDocument, libwps::SubDocumentType subDocumentType);
56 bool isHeaderFooterOpened() const;
57
58 // ------ text data -----------
59
61 void insertCharacter(uint8_t character);
65 void insertUnicode(uint32_t character);
67 void insertUnicodeString(librevenge::RVNGString const &str);
68
69 void insertTab();
70 void insertEOL(bool softBreak=false);
71 void insertBreak(const uint8_t breakType);
72
73 // ------ text format -----------
75 void setFont(const WPSFont &font);
77 WPSFont const &getFont() const;
78
79 // ------ paragraph format -----------
81 bool isParagraphOpened() const;
83 void setParagraph(const WPSParagraph &para);
85 WPSParagraph const &getParagraph() const;
86
87 // ------ list format -----------
89 void setCurrentList(shared_ptr<WPSList> list);
91 shared_ptr<WPSList> getCurrentList() const;
92
93 // ------- fields ----------------
95 void insertField(WPSField const &field);
96
97 // ------- subdocument -----------------
99 enum NoteType { FOOTNOTE, ENDNOTE };
101 void insertNote(const NoteType noteType, WPSSubDocumentPtr &subDocument);
103 void insertLabelNote(const NoteType noteType, librevenge::RVNGString const &label, WPSSubDocumentPtr &subDocument);
105 void insertComment(WPSSubDocumentPtr &subDocument);
106
108 void insertPicture(WPSPosition const &pos, const librevenge::RVNGBinaryData &binaryData,
109 std::string type="image/pict",
110 librevenge::RVNGPropertyList frameExtras=librevenge::RVNGPropertyList());
112 void insertObject(WPSPosition const &pos, const WPSEmbeddedObject &obj,
113 librevenge::RVNGPropertyList frameExtras=librevenge::RVNGPropertyList());
114
116 void insertTextBox(WPSPosition const &pos, WPSSubDocumentPtr subDocument,
117 librevenge::RVNGPropertyList frameExtras=librevenge::RVNGPropertyList());
118
119
120 // ------- table -----------------
122 void openTable(std::vector<float> const &colWidth, librevenge::RVNGUnit unit);
124 void closeTable();
126 void openTableRow(float h, librevenge::RVNGUnit unit, bool headerRow=false);
128 void closeTableRow();
132 void openTableCell(WPSCell const &cell, librevenge::RVNGPropertyList const &extras=librevenge::RVNGPropertyList());
134 void closeTableCell();
136 void addEmptyTableCell(Vec2i const &pos, Vec2i span=Vec2i(1,1));
137
138 // ------- section ---------------
140 bool isSectionOpened() const;
142 int getSectionNumColumns() const;
144 bool openSection(std::vector<int> colsWidth=std::vector<int>(), librevenge::RVNGUnit unit=librevenge::RVNG_INCH);
146 bool closeSection();
147
148 protected:
149 void _openSection();
150 void _closeSection();
151
152 void _openPageSpan();
153 void _closePageSpan();
154 void _updatePageSpanDependent(bool set);
155
156 void _startSubDocument();
157 void _endSubDocument();
158
159 void _handleFrameParameters(librevenge::RVNGPropertyList &propList, WPSPosition const &pos);
160 bool _openFrame(WPSPosition const &pos, librevenge::RVNGPropertyList extras=librevenge::RVNGPropertyList());
161 void _closeFrame();
162
163 void _openParagraph();
164 void _closeParagraph();
165 void _appendParagraphProperties(librevenge::RVNGPropertyList &propList, const bool isListElement=false);
166 void _resetParagraphState(const bool isListElement=false);
167
168 void _openListElement();
169 void _closeListElement();
170 void _changeList();
171
172 void _openSpan();
173 void _closeSpan();
174
175 void _flushText();
176 void _flushDeferredTabs();
177
178 void _insertBreakIfNecessary(librevenge::RVNGPropertyList &propList);
179
183 shared_ptr<WPSContentParsingState> _pushParsingState();
185 void _popParsingState();
186
187 protected:
188 shared_ptr<WPSDocumentParsingState> m_ds; // main parse state
189 shared_ptr<WPSContentParsingState> m_ps; // parse state
190 std::vector<shared_ptr<WPSContentParsingState> > m_psStack;
191 librevenge::RVNGTextInterface *m_documentInterface;
192
193 private:
194 WPSContentListener(const WPSContentListener &);
195 WPSContentListener &operator=(const WPSContentListener &);
196 };
197
198 #endif
199 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
WPSContentListener::insertPicture
void insertPicture(WPSPosition const &pos, const librevenge::RVNGBinaryData &binaryData, std::string type="image/pict", librevenge::RVNGPropertyList frameExtras=librevenge::RVNGPropertyList())
adds a picture in given position
Definition: WPSContentListener.cpp:1124
WPSContentListener::_closeParagraph
void _closeParagraph()
Definition: WPSContentListener.cpp:731
WPSContentListener::startDocument
void startDocument()
Definition: WPSContentListener.cpp:525
WPSContentListener::insertEOL
void insertEOL(bool softBreak=false)
Definition: WPSContentListener.cpp:234
WPSContentListener::_updatePageSpanDependent
void _updatePageSpanDependent(bool set)
Definition: WPSContentListener.cpp:638
WPSContentListener::operator=
WPSContentListener & operator=(const WPSContentListener &)
WPSParagraph
class to store the paragraph properties
Definition: WPSParagraph.h:54
WPSContentListener::setMetaData
void setMetaData(const librevenge::RVNGPropertyList &list)
Definition: WPSContentListener.cpp:515
WPSContentListener::_insertBreakIfNecessary
void _insertBreakIfNecessary(librevenge::RVNGPropertyList &propList)
Definition: WPSContentListener.cpp:313
WPSContentListener::_flushText
void _flushText()
Definition: WPSContentListener.cpp:981
WPSContentListener::_closeListElement
void _closeListElement()
Definition: WPSContentListener.cpp:827
WPSDocumentParsingState
the document state
Definition: WPSContentListener.cpp:46
WPSSubDocumentPtr
shared_ptr< WPSSubDocument > WPSSubDocumentPtr
shared pointer to WPSSubDocument
Definition: libwps_internal.h:110
WPSContentListener::setDocumentLanguage
void setDocumentLanguage(int lcid)
Definition: WPSContentListener.cpp:507
WPSContentListener::insertLabelNote
void insertLabelNote(const NoteType noteType, librevenge::RVNGString const &label, WPSSubDocumentPtr &subDocument)
adds a label note
Definition: WPSContentListener.cpp:1026
WPSContentListener::_flushDeferredTabs
void _flushDeferredTabs()
Definition: WPSContentListener.cpp:958
WPSContentListener::m_ps
shared_ptr< WPSContentParsingState > m_ps
Definition: WPSContentListener.h:189
WPSFont
define the font properties
Definition: WPSFont.h:36
WPSContentListener::_popParsingState
void _popParsingState()
resets the previous parsing state
Definition: WPSContentListener.cpp:1708
WPSField
a field
Definition: libwps_internal.h:479
WPSContentParsingState
the content state
Definition: WPSContentListener.cpp:81
WPSContentListener::closeTable
void closeTable()
closes this table
Definition: WPSContentListener.cpp:1577
WPSListener
virtual class for content listener
Definition: WPSListener.h:36
WPSContentListener::_changeList
void _changeList()
Definition: WPSContentListener.cpp:844
WPSContentListener::_appendParagraphProperties
void _appendParagraphProperties(librevenge::RVNGPropertyList &propList, const bool isListElement=false)
Definition: WPSContentListener.cpp:773
WPSContentListener::openTable
void openTable(std::vector< float > const &colWidth, librevenge::RVNGUnit unit)
open a table
Definition: WPSContentListener.cpp:1540
WPSContentListener::_openPageSpan
void _openPageSpan()
Definition: WPSContentListener.cpp:570
WPSContentListener::insertBreak
void insertBreak(const uint8_t breakType)
Definition: WPSContentListener.cpp:267
WPSContentListener
Definition: WPSContentListener.h:44
WPSContentListener::endDocument
void endDocument()
Definition: WPSContentListener.cpp:541
WPSContentListener::ENDNOTE
Definition: WPSContentListener.h:99
WPSCell
a structure used to defined the cell position, and a format
Definition: WPSCell.h:251
WPSContentListener::m_documentInterface
librevenge::RVNGTextInterface * m_documentInterface
Definition: WPSContentListener.h:191
WPSContentListener::_startSubDocument
void _startSubDocument()
Definition: WPSContentListener.cpp:1520
WPSContentListener::insertTextBox
void insertTextBox(WPSPosition const &pos, WPSSubDocumentPtr subDocument, librevenge::RVNGPropertyList frameExtras=librevenge::RVNGPropertyList())
adds a textbox in given position
Definition: WPSContentListener.cpp:1111
WPSContentListener::getCurrentList
shared_ptr< WPSList > getCurrentList() const
returns the current list
Definition: WPSContentListener.cpp:398
WPSContentListener::closeTableRow
void closeTableRow()
closes this row
Definition: WPSContentListener.cpp:1615
WPSContentListener::NoteType
NoteType
defines the footnote type
Definition: WPSContentListener.h:99
WPSContentListener::setParagraph
void setParagraph(const WPSParagraph &para)
sets the actual paragraph
Definition: WPSContentListener.cpp:365
WPSContentListener::_closePageSpan
void _closePageSpan()
Definition: WPSContentListener.cpp:626
WPSContentListener::_endSubDocument
void _endSubDocument()
Definition: WPSContentListener.cpp:1526
libwps_internal.h
WPSContentListener::insertComment
void insertComment(WPSSubDocumentPtr &subDocument)
adds comment
Definition: WPSContentListener.cpp:1084
WPSContentListener::_pushParsingState
shared_ptr< WPSContentParsingState > _pushParsingState()
creates a new parsing state (copy of the actual state)
Definition: WPSContentListener.cpp:1688
libwps::SubDocumentType
SubDocumentType
Definition: libwps_internal.h:239
WPSList
a small structure used to store the informations about a list
Definition: WPSList.h:36
WPSContentListener::_openListElement
void _openListElement()
Definition: WPSContentListener.cpp:802
WPSContentListener::openTableRow
void openTableRow(float h, librevenge::RVNGUnit unit, bool headerRow=false)
open a row with given height.
Definition: WPSContentListener.cpp:1592
WPSContentListener::isHeaderFooterOpened
bool isHeaderFooterOpened() const
Definition: WPSContentListener.cpp:1515
WPSContentListener::getSectionNumColumns
int getSectionNumColumns() const
returns the actual number of columns ( or 1 if no section is opened )
Definition: WPSContentListener.cpp:433
WPSContentListener::m_ds
shared_ptr< WPSDocumentParsingState > m_ds
Definition: WPSContentListener.h:188
WPSContentListener::_openParagraph
void _openParagraph()
Definition: WPSContentListener.cpp:702
WPSContentListener::setFont
void setFont(const WPSFont &font)
set the actual font
Definition: WPSContentListener.cpp:333
WPSContentListener::insertTab
void insertTab()
adds an unicode character to a string ( with correct encoding ).
Definition: WPSContentListener.cpp:255
WPSContentListener::_handleFrameParameters
void _handleFrameParameters(librevenge::RVNGPropertyList &propList, WPSPosition const &pos)
Definition: WPSContentListener.cpp:1210
WPSContentListener::_openFrame
bool _openFrame(WPSPosition const &pos, librevenge::RVNGPropertyList extras=librevenge::RVNGPropertyList())
Definition: WPSContentListener.cpp:1153
WPSContentListener::insertCharacter
void insertCharacter(uint8_t character)
adds a basic character, ..
Definition: WPSContentListener.cpp:206
Vec2i
Vec2< int > Vec2i
Vec2 of int.
Definition: libwps_internal.h:712
WPSContentListener::_openSpan
void _openSpan()
Definition: WPSContentListener.cpp:920
WPSContentListener::openSection
bool openSection(std::vector< int > colsWidth=std::vector< int >(), librevenge::RVNGUnit unit=librevenge::RVNG_INCH)
open a section if possible
Definition: WPSContentListener.cpp:438
WPSContentListener::insertField
void insertField(WPSField const &field)
adds a field
Definition: WPSContentListener.cpp:406
WPSContentListener::WPSContentListener
WPSContentListener(std::vector< WPSPageSpan > const &pageList, librevenge::RVNGTextInterface *documentInterface)
Definition: WPSContentListener.cpp:192
WPSContentListener::isParagraphOpened
bool isParagraphOpened() const
returns true if a paragraph or a list is opened
Definition: WPSContentListener.cpp:355
WPSContentListener::setCurrentList
void setCurrentList(shared_ptr< WPSList > list)
function to set the actual list
Definition: WPSContentListener.cpp:392
WPSContentListener::closeSection
bool closeSection()
close a section
Definition: WPSContentListener.cpp:486
WPSContentListener::handleSubDocument
void handleSubDocument(WPSSubDocumentPtr &subDocument, libwps::SubDocumentType subDocumentType)
Definition: WPSContentListener.cpp:1429
WPSContentListener::_resetParagraphState
void _resetParagraphState(const bool isListElement=false)
Definition: WPSContentListener.cpp:754
WPSListener.h
WPSEmbeddedObject
small class use to define a embedded object
Definition: libwps_internal.h:431
WPSContentListener::insertObject
void insertObject(WPSPosition const &pos, const WPSEmbeddedObject &obj, librevenge::RVNGPropertyList frameExtras=librevenge::RVNGPropertyList())
adds an object with replacement picture in given position
Definition: WPSContentListener.cpp:1137
WPSTabStop
Definition: WPSParagraph.h:37
WPSPageSpan
Definition: WPSPageSpan.h:38
WPSContentListener::closeTableCell
void closeTableCell()
close a cell
Definition: WPSContentListener.cpp:1667
WPSContentListener::isSectionOpened
bool isSectionOpened() const
returns true if a section is opened
Definition: WPSContentListener.cpp:428
WPSContentListener::_closeFrame
void _closeFrame()
Definition: WPSContentListener.cpp:1198
WPSContentListener::_openSection
void _openSection()
Definition: WPSContentListener.cpp:645
WPSContentListener::insertNote
void insertNote(const NoteType noteType, WPSSubDocumentPtr &subDocument)
adds note
Definition: WPSContentListener.cpp:1015
WPSContentListener::insertUnicode
void insertUnicode(uint32_t character)
adds an unicode character
Definition: WPSContentListener.cpp:218
Vec2< int >
WPSPosition
Class to define the position of an object (textbox, picture, ..) in the document. ...
Definition: WPSPosition.h:39
WPSContentListener::FOOTNOTE
Definition: WPSContentListener.h:99
WPSContentListener::~WPSContentListener
virtual ~WPSContentListener()
Definition: WPSContentListener.cpp:199
WPSContentListener::_closeSection
void _closeSection()
Definition: WPSContentListener.cpp:683
WPSContentListener::_closeSpan
void _closeSpan()
Definition: WPSContentListener.cpp:945
WPSContentListener::insertUnicodeString
void insertUnicodeString(librevenge::RVNGString const &str)
adds a unicode string
Definition: WPSContentListener.cpp:227
WPSContentListener::addEmptyTableCell
void addEmptyTableCell(Vec2i const &pos, Vec2i span=Vec2i(1, 1))
add empty cell
Definition: WPSContentListener.cpp:1626
WPSContentListener::openTableCell
void openTableCell(WPSCell const &cell, librevenge::RVNGPropertyList const &extras=librevenge::RVNGPropertyList())
low level function to define a cell.
Definition: WPSContentListener.cpp:1647
WPSContentListener::getFont
WPSFont const & getFont() const
returns the actual font
Definition: WPSContentListener.cpp:347
WPSContentListener::m_psStack
std::vector< shared_ptr< WPSContentParsingState > > m_psStack
Definition: WPSContentListener.h:190
WPSContentListener::getParagraph
WPSParagraph const & getParagraph() const
returns the actual paragraph
Definition: WPSContentListener.cpp:360