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 {
29 
30 
31 public:
32  explicit VSDXParser(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *painter);
33  ~VSDXParser() override;
34  bool parseMain() override;
35  bool extractStencils() override;
36 
37 private:
38  VSDXParser();
39  VSDXParser(const VSDXParser &);
41 
42  // Helper functions
43 
44  xmlChar *readStringData(xmlTextReaderPtr reader) override;
45 
46  int getElementToken(xmlTextReaderPtr reader) override;
47  int getElementDepth(xmlTextReaderPtr reader) override;
48 
49  int skipSection(xmlTextReaderPtr reader);
50 
51  // Functions parsing the Visio 2013 OPC document structure
52 
53  bool parseDocument(librevenge::RVNGInputStream *input, const char *name);
54  bool parseMasters(librevenge::RVNGInputStream *input, const char *name);
55  bool parseMaster(librevenge::RVNGInputStream *input, const char *name);
56  bool parsePages(librevenge::RVNGInputStream *input, const char *name);
57  bool parsePage(librevenge::RVNGInputStream *input, const char *name);
58  bool parseTheme(librevenge::RVNGInputStream *input, const char *name);
59  void parseMetaData(librevenge::RVNGInputStream *input, VSDXRelationships &rels);
60  void processXmlDocument(librevenge::RVNGInputStream *input, VSDXRelationships &rels);
61  void processXmlNode(xmlTextReaderPtr reader);
62 
63  // Functions reading the Visio 2013 OPC document content
64 
65  void extractBinaryData(librevenge::RVNGInputStream *input, const char *name);
66 
67  void readPageSheetProperties(xmlTextReaderPtr reader);
68 
69  void readStyleProperties(xmlTextReaderPtr reader);
70 
71  void readShapeProperties(xmlTextReaderPtr reader);
72 
73  void getBinaryData(xmlTextReaderPtr reader) override;
74 
75  void readLayer(xmlTextReaderPtr reader);
76  void readParagraph(xmlTextReaderPtr reader);
77  void readCharacter(xmlTextReaderPtr reader);
78  void readFonts(xmlTextReaderPtr reader);
79  void readTabs(xmlTextReaderPtr reader);
80  void readTabRow(xmlTextReaderPtr reader);
81 
82  // Private data
83 
84  librevenge::RVNGInputStream *m_input;
85  librevenge::RVNGDrawingInterface *m_painter;
89 };
90 
91 } // namespace libvisio
92 
93 #endif // __VSDXPARSER_H__
94 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
int getElementDepth(xmlTextReaderPtr reader) override
Definition: VSDXParser.cpp:955
void readCharacter(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1457
VSDXTheme m_currentTheme
Definition: VSDXParser.h:88
void processXmlNode(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:374
~VSDXParser() override
Definition: VSDXParser.cpp:61
int getElementToken(xmlTextReaderPtr reader) override
Definition: VSDXParser.cpp:565
int readStringData(VSDName &text, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2089
void extractBinaryData(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:533
int readLongData(std::optional< long > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2131
bool parseMaster(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:189
int readBoolData(std::optional< bool > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2157
bool extractStencils() override
Definition: VSDXParser.cpp:109
Definition: VSDXParser.h:22
void readTabRow(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1400
void readStyleProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:718
void readFonts(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:687
void processXmlDocument(librevenge::RVNGInputStream *input, VSDXRelationships &rels)
Definition: VSDXParser.cpp:300
Definition: VSDXMLHelper.h:56
int skipSection(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1504
xmlChar * readStringData(xmlTextReaderPtr reader) override
Definition: VSDXParser.cpp:554
bool parsePage(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:229
int readExtendedColourData(Colour &value, long &idx, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2196
void getBinaryData(xmlTextReaderPtr reader) override
Definition: VSDXParser.cpp:1478
bool parseMain() override
Definition: VSDXParser.cpp:65
VSDXParser & operator=(const VSDXParser &)
Definition: libvisio_utils.h:46
bool parseTheme(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:249
Definition: VSDXMLParserBase.h:30
VSDXRelationships * m_rels
Definition: VSDXParser.h:87
bool parseDocument(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:115
void readTabs(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1372
void readLayer(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1330
librevenge::RVNGInputStream * m_input
Definition: VSDXParser.h:84
void readPageSheetProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:607
bool parseMasters(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:169
librevenge::RVNGDrawingInterface * m_painter
Definition: VSDXParser.h:85
Definition: VSDXTheme.h:84
void readParagraph(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1351
int readDoubleData(std::optional< double > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2105
int m_currentDepth
Definition: VSDXParser.h:86
bool parsePages(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:209
void readShapeProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:960
void parseMetaData(librevenge::RVNGInputStream *input, VSDXRelationships &rels)
Definition: VSDXParser.cpp:265

Generated for libvisio by doxygen 1.8.14