VSDXParser.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is part of the libvisio project.
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 
10 #ifndef __VSDXPARSER_H__
11 #define __VSDXPARSER_H__
12 
13 #include <librevenge/librevenge.h>
14 #include "VSDXTheme.h"
15 #include "VSDXMLParserBase.h"
16 
17 namespace libvisio
18 {
19 
20 class VSDCollector;
21 
23 {
28 
29 public:
30  explicit VSDXParser(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *painter);
31  virtual ~VSDXParser();
32  bool parseMain();
33  bool extractStencils();
34 
35 private:
36  VSDXParser();
37  VSDXParser(const VSDXParser &);
39 
40  // Helper functions
41 
42  xmlChar *readStringData(xmlTextReaderPtr reader);
43 
44  int getElementToken(xmlTextReaderPtr reader);
45  int getElementDepth(xmlTextReaderPtr reader);
46 
47  int skipSection(xmlTextReaderPtr reader);
48 
49  // Functions parsing the Visio 2013 OPC document structure
50 
51  bool parseDocument(librevenge::RVNGInputStream *input, const char *name);
52  bool parseMasters(librevenge::RVNGInputStream *input, const char *name);
53  bool parseMaster(librevenge::RVNGInputStream *input, const char *name);
54  bool parsePages(librevenge::RVNGInputStream *input, const char *name);
55  bool parsePage(librevenge::RVNGInputStream *input, const char *name);
56  bool parseTheme(librevenge::RVNGInputStream *input, const char *name);
57  void processXmlDocument(librevenge::RVNGInputStream *input, VSDXRelationships &rels);
58  void processXmlNode(xmlTextReaderPtr reader);
59 
60  // Functions reading the Visio 2013 OPC document content
61 
62  void extractBinaryData(librevenge::RVNGInputStream *input, const char *name);
63 
64  void readPageSheetProperties(xmlTextReaderPtr reader);
65 
66  void readStyleProperties(xmlTextReaderPtr reader);
67 
68  void readShapeProperties(xmlTextReaderPtr reader);
69 
70  void getBinaryData(xmlTextReaderPtr reader);
71 
72  void readParagraph(xmlTextReaderPtr reader);
73  void readCharacter(xmlTextReaderPtr reader);
74  void readFonts(xmlTextReaderPtr reader);
75 
76  // Private data
77 
78  librevenge::RVNGInputStream *m_input;
79  librevenge::RVNGDrawingInterface *m_painter;
83 };
84 
85 } // namespace libvisio
86 
87 #endif // __VSDXPARSER_H__
88 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
int getElementDepth(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:892
void readCharacter(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1235
VSDXTheme m_currentTheme
Definition: VSDXParser.h:82
void processXmlNode(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:338
void extractBinaryData(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:497
int readBoolData(boost::optional< bool > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2033
bool parseMaster(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:192
Definition: VSDXParser.h:22
int getElementToken(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:530
int readDoubleData(boost::optional< double > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1977
void readStyleProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:670
virtual ~VSDXParser()
Definition: VSDXParser.cpp:58
void readFonts(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:638
void processXmlDocument(librevenge::RVNGInputStream *input, VSDXRelationships &rels)
Definition: VSDXParser.cpp:278
Definition: VSDXMLHelper.h:71
int skipSection(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1283
bool parsePage(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:238
int readLongData(boost::optional< long > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2005
int readExtendedColourData(Colour &value, long &idx, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2073
bool parseMain()
Definition: VSDXParser.cpp:62
void getBinaryData(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1256
VSDXParser & operator=(const VSDXParser &)
bool parseTheme(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:261
Definition: VSDXMLParserBase.h:28
VSDXRelationships * m_rels
Definition: VSDXParser.h:81
bool parseDocument(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:114
xmlChar * readStringData(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:519
librevenge::RVNGInputStream * m_input
Definition: VSDXParser.h:78
void readPageSheetProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:572
bool parseMasters(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:169
librevenge::RVNGDrawingInterface * m_painter
Definition: VSDXParser.h:79
Definition: VSDXTheme.h:56
void readParagraph(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1214
bool extractStencils()
Definition: VSDXParser.cpp:108
int m_currentDepth
Definition: VSDXParser.h:80
bool parsePages(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:215
void readShapeProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:897

Generated for libvisio by doxygen 1.8.6