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 
43 
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 -----------------
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());
119  bool openGroup(WPSPosition const &pos);
121  void closeGroup();
122 
123  // ------- table -----------------
125  void openTable(std::vector<float> const &colWidth, librevenge::RVNGUnit unit);
127  void closeTable();
129  void openTableRow(float h, librevenge::RVNGUnit unit, bool headerRow=false);
131  void closeTableRow();
135  void openTableCell(WPSCell const &cell, librevenge::RVNGPropertyList const &extras=librevenge::RVNGPropertyList());
137  void closeTableCell();
139  void addEmptyTableCell(Vec2i const &pos, Vec2i span=Vec2i(1,1));
140 
141  // ------- section ---------------
143  bool isSectionOpened() const;
145  int getSectionNumColumns() const;
147  bool openSection(std::vector<int> colsWidth=std::vector<int>(), librevenge::RVNGUnit unit=librevenge::RVNG_INCH);
149  bool closeSection();
150 
151 protected:
152  void _openSection();
153  void _closeSection();
154 
155  void _openPageSpan();
156  void _closePageSpan();
157  void _updatePageSpanDependent(bool set);
158 
159  void _startSubDocument();
160  void _endSubDocument();
161 
162  void _handleFrameParameters(librevenge::RVNGPropertyList &propList, WPSPosition const &pos);
163  bool _openFrame(WPSPosition const &pos, librevenge::RVNGPropertyList extras=librevenge::RVNGPropertyList());
164  void _closeFrame();
165 
166  void _openParagraph();
167  void _closeParagraph();
168  void _appendParagraphProperties(librevenge::RVNGPropertyList &propList, const bool isListElement=false);
169  void _resetParagraphState(const bool isListElement=false);
170 
171  void _openListElement();
172  void _closeListElement();
173  void _changeList();
174 
175  void _openSpan();
176  void _closeSpan();
177 
178  void _flushText();
179  void _flushDeferredTabs();
180 
181  void _insertBreakIfNecessary(librevenge::RVNGPropertyList &propList);
182 
186  shared_ptr<WPSContentParsingState> _pushParsingState();
188  void _popParsingState();
189 
190 protected:
191  shared_ptr<WPSDocumentParsingState> m_ds; // main parse state
192  shared_ptr<WPSContentParsingState> m_ps; // parse state
193  std::vector<shared_ptr<WPSContentParsingState> > m_psStack;
194  librevenge::RVNGTextInterface *m_documentInterface;
195 
196 private:
199 };
200 
201 #endif
202 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
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:1127
void _closeParagraph()
Definition: WPSContentListener.cpp:734
void startDocument()
Definition: WPSContentListener.cpp:528
void insertEOL(bool softBreak=false)
Definition: WPSContentListener.cpp:237
void _updatePageSpanDependent(bool set)
Definition: WPSContentListener.cpp:641
WPSContentListener & operator=(const WPSContentListener &)
class to store the paragraph properties
Definition: WPSParagraph.h:54
void setMetaData(const librevenge::RVNGPropertyList &list)
Definition: WPSContentListener.cpp:518
void _insertBreakIfNecessary(librevenge::RVNGPropertyList &propList)
Definition: WPSContentListener.cpp:316
void _flushText()
Definition: WPSContentListener.cpp:984
void _closeListElement()
Definition: WPSContentListener.cpp:830
the document state
Definition: WPSContentListener.cpp:46
shared_ptr< WPSSubDocument > WPSSubDocumentPtr
shared pointer to WPSSubDocument
Definition: libwps_internal.h:126
void setDocumentLanguage(int lcid)
Definition: WPSContentListener.cpp:510
void insertLabelNote(const NoteType noteType, librevenge::RVNGString const &label, WPSSubDocumentPtr &subDocument)
adds a label note
Definition: WPSContentListener.cpp:1029
void _flushDeferredTabs()
Definition: WPSContentListener.cpp:961
shared_ptr< WPSContentParsingState > m_ps
Definition: WPSContentListener.h:192
define the font properties
Definition: WPSFont.h:36
void _popParsingState()
resets the previous parsing state
Definition: WPSContentListener.cpp:1775
bool openGroup(WPSPosition const &pos)
open a group
Definition: WPSContentListener.cpp:1156
a field
Definition: libwps_internal.h:500
the content state
Definition: WPSContentListener.cpp:81
void closeTable()
closes this table
Definition: WPSContentListener.cpp:1644
virtual class for content listener
Definition: WPSListener.h:36
void _changeList()
Definition: WPSContentListener.cpp:847
void _appendParagraphProperties(librevenge::RVNGPropertyList &propList, const bool isListElement=false)
Definition: WPSContentListener.cpp:776
void openTable(std::vector< float > const &colWidth, librevenge::RVNGUnit unit)
open a table
Definition: WPSContentListener.cpp:1607
void _openPageSpan()
Definition: WPSContentListener.cpp:573
void insertBreak(const uint8_t breakType)
Definition: WPSContentListener.cpp:270
Definition: WPSContentListener.h:44
void endDocument()
Definition: WPSContentListener.cpp:544
Definition: WPSContentListener.h:99
a structure used to defined the cell position, and a format
Definition: WPSCell.h:277
librevenge::RVNGTextInterface * m_documentInterface
Definition: WPSContentListener.h:194
void _startSubDocument()
Definition: WPSContentListener.cpp:1587
void insertTextBox(WPSPosition const &pos, WPSSubDocumentPtr subDocument, librevenge::RVNGPropertyList frameExtras=librevenge::RVNGPropertyList())
adds a textbox in given position
Definition: WPSContentListener.cpp:1114
shared_ptr< WPSList > getCurrentList() const
returns the current list
Definition: WPSContentListener.cpp:401
void closeTableRow()
closes this row
Definition: WPSContentListener.cpp:1682
NoteType
defines the footnote type
Definition: WPSContentListener.h:99
void setParagraph(const WPSParagraph &para)
sets the actual paragraph
Definition: WPSContentListener.cpp:368
void _closePageSpan()
Definition: WPSContentListener.cpp:629
void _endSubDocument()
Definition: WPSContentListener.cpp:1593
void insertComment(WPSSubDocumentPtr &subDocument)
adds comment
Definition: WPSContentListener.cpp:1087
shared_ptr< WPSContentParsingState > _pushParsingState()
creates a new parsing state (copy of the actual state)
Definition: WPSContentListener.cpp:1755
SubDocumentType
Definition: libwps_internal.h:260
a small structure used to store the informations about a list
Definition: WPSList.h:36
void closeGroup()
close a group
Definition: WPSContentListener.cpp:1208
void _openListElement()
Definition: WPSContentListener.cpp:805
void openTableRow(float h, librevenge::RVNGUnit unit, bool headerRow=false)
open a row with given height.
Definition: WPSContentListener.cpp:1659
bool isHeaderFooterOpened() const
Definition: WPSContentListener.cpp:1582
int getSectionNumColumns() const
returns the actual number of columns ( or 1 if no section is opened )
Definition: WPSContentListener.cpp:436
shared_ptr< WPSDocumentParsingState > m_ds
Definition: WPSContentListener.h:191
void _openParagraph()
Definition: WPSContentListener.cpp:705
void setFont(const WPSFont &font)
set the actual font
Definition: WPSContentListener.cpp:336
void insertTab()
adds an unicode character to a string ( with correct encoding ).
Definition: WPSContentListener.cpp:258
void _handleFrameParameters(librevenge::RVNGPropertyList &propList, WPSPosition const &pos)
Definition: WPSContentListener.cpp:1277
bool _openFrame(WPSPosition const &pos, librevenge::RVNGPropertyList extras=librevenge::RVNGPropertyList())
Definition: WPSContentListener.cpp:1220
void insertCharacter(uint8_t character)
adds a basic character, ..
Definition: WPSContentListener.cpp:209
Vec2< int > Vec2i
Vec2 of int.
Definition: libwps_internal.h:733
void _openSpan()
Definition: WPSContentListener.cpp:923
bool openSection(std::vector< int > colsWidth=std::vector< int >(), librevenge::RVNGUnit unit=librevenge::RVNG_INCH)
open a section if possible
Definition: WPSContentListener.cpp:441
void insertField(WPSField const &field)
adds a field
Definition: WPSContentListener.cpp:409
WPSContentListener(std::vector< WPSPageSpan > const &pageList, librevenge::RVNGTextInterface *documentInterface)
Definition: WPSContentListener.cpp:195
bool isParagraphOpened() const
returns true if a paragraph or a list is opened
Definition: WPSContentListener.cpp:358
void setCurrentList(shared_ptr< WPSList > list)
function to set the actual list
Definition: WPSContentListener.cpp:395
bool closeSection()
close a section
Definition: WPSContentListener.cpp:489
void handleSubDocument(WPSSubDocumentPtr &subDocument, libwps::SubDocumentType subDocumentType)
Definition: WPSContentListener.cpp:1496
void _resetParagraphState(const bool isListElement=false)
Definition: WPSContentListener.cpp:757
small class use to define a embedded object
Definition: libwps_internal.h:452
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:1140
Definition: WPSParagraph.h:37
Definition: WPSPageSpan.h:38
void closeTableCell()
close a cell
Definition: WPSContentListener.cpp:1734
bool isSectionOpened() const
returns true if a section is opened
Definition: WPSContentListener.cpp:431
void _closeFrame()
Definition: WPSContentListener.cpp:1265
void _openSection()
Definition: WPSContentListener.cpp:648
void insertNote(const NoteType noteType, WPSSubDocumentPtr &subDocument)
adds note
Definition: WPSContentListener.cpp:1018
void insertUnicode(uint32_t character)
adds an unicode character
Definition: WPSContentListener.cpp:221
Class to define the position of an object (textbox, picture, ..) in the document. ...
Definition: WPSPosition.h:39
Definition: WPSContentListener.h:99
virtual ~WPSContentListener()
Definition: WPSContentListener.cpp:202
void _closeSection()
Definition: WPSContentListener.cpp:686
void _closeSpan()
Definition: WPSContentListener.cpp:948
void insertUnicodeString(librevenge::RVNGString const &str)
adds a unicode string
Definition: WPSContentListener.cpp:230
void addEmptyTableCell(Vec2i const &pos, Vec2i span=Vec2i(1, 1))
add empty cell
Definition: WPSContentListener.cpp:1693
void openTableCell(WPSCell const &cell, librevenge::RVNGPropertyList const &extras=librevenge::RVNGPropertyList())
low level function to define a cell.
Definition: WPSContentListener.cpp:1714
WPSFont const & getFont() const
returns the actual font
Definition: WPSContentListener.cpp:350
std::vector< shared_ptr< WPSContentParsingState > > m_psStack
Definition: WPSContentListener.h:193
WPSParagraph const & getParagraph() const
returns the actual paragraph
Definition: WPSContentListener.cpp:363

Generated on Wed Apr 11 2018 00:19:12 for libwps by doxygen 1.8.5