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 <set>
14 #include <string>
15 #include <librevenge/librevenge.h>
16 #include "VSDXTheme.h"
17 #include "VSDXMLParserBase.h"
18 
19 namespace libvisio
20 {
21 
22 class VSDCollector;
23 
25 {
31 
32 
33 public:
34  explicit VSDXParser(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *painter);
35  ~VSDXParser() override;
36  bool parseMain() override;
37  bool extractStencils() override;
38 
39 private:
40  VSDXParser();
41  VSDXParser(const VSDXParser &);
43 
44  // Helper functions
45 
46  xmlChar *readStringData(xmlTextReaderPtr reader) override;
47 
48  int getElementToken(xmlTextReaderPtr reader) override;
49  int getElementDepth(xmlTextReaderPtr reader) override;
50 
51  int skipSection(xmlTextReaderPtr reader);
52 
53  // Functions parsing the Visio 2013 OPC document structure
54 
55  bool parseDocument(librevenge::RVNGInputStream *input, const char *name);
56  bool parseMasters(librevenge::RVNGInputStream *input, const char *name);
57  bool parseMaster(librevenge::RVNGInputStream *input, const char *name);
58  bool parsePages(librevenge::RVNGInputStream *input, const char *name);
59  bool parsePage(librevenge::RVNGInputStream *input, const char *name);
60  bool parseTheme(librevenge::RVNGInputStream *input, const char *name);
61  void parseMetaData(librevenge::RVNGInputStream *input, VSDXRelationships &rels);
62  void processXmlDocument(librevenge::RVNGInputStream *input, VSDXRelationships &rels);
63  void processXmlNode(xmlTextReaderPtr reader);
64 
65  // Functions reading the Visio 2013 OPC document content
66 
67  void extractBinaryData(librevenge::RVNGInputStream *input, const char *name);
68 
69  void readPageSheetProperties(xmlTextReaderPtr reader);
70 
71  void readStyleProperties(xmlTextReaderPtr reader);
72 
73  void readShapeProperties(xmlTextReaderPtr reader);
74 
75  void getBinaryData(xmlTextReaderPtr reader) override;
76 
77  void readLayer(xmlTextReaderPtr reader);
78  void readParagraph(xmlTextReaderPtr reader);
79  void readCharacter(xmlTextReaderPtr reader);
80  void readFonts(xmlTextReaderPtr reader);
81  void readTabs(xmlTextReaderPtr reader);
82  void readTabRow(xmlTextReaderPtr reader);
83 
84  // Private data
85 
86  librevenge::RVNGInputStream *m_input;
87  librevenge::RVNGDrawingInterface *m_painter;
91  // parsePage / parseMaster targets currently on the recursion stack
92  std::set<std::string> m_visitedParts;
93 };
94 
95 } // namespace libvisio
96 
97 #endif // __VSDXPARSER_H__
98 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
int getElementDepth(xmlTextReaderPtr reader) override
Definition: VSDXParser.cpp:983
void readCharacter(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1485
VSDXTheme m_currentTheme
Definition: VSDXParser.h:90
void processXmlNode(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:402
~VSDXParser() override
Definition: VSDXParser.cpp:61
int getElementToken(xmlTextReaderPtr reader) override
Definition: VSDXParser.cpp:593
int readStringData(VSDName &text, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2089
void extractBinaryData(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:561
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:24
std::set< std::string > m_visitedParts
Definition: VSDXParser.h:92
void readTabRow(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1428
void readStyleProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:746
void readFonts(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:715
void processXmlDocument(librevenge::RVNGInputStream *input, VSDXRelationships &rels)
Definition: VSDXParser.cpp:300
Definition: VSDXMLHelper.h:56
int skipSection(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1532
xmlChar * readStringData(xmlTextReaderPtr reader) override
Definition: VSDXParser.cpp:582
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:1506
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:89
bool parseDocument(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:115
void readTabs(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1400
void readLayer(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1358
librevenge::RVNGInputStream * m_input
Definition: VSDXParser.h:86
void readPageSheetProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:635
bool parseMasters(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:169
librevenge::RVNGDrawingInterface * m_painter
Definition: VSDXParser.h:87
Definition: VSDXTheme.h:84
void readParagraph(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1379
int readDoubleData(std::optional< double > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2105
int m_currentDepth
Definition: VSDXParser.h:88
bool parsePages(librevenge::RVNGInputStream *input, const char *name)
Definition: VSDXParser.cpp:209
void readShapeProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:988
void parseMetaData(librevenge::RVNGInputStream *input, VSDXRelationships &rels)
Definition: VSDXParser.cpp:265

Generated for libvisio by doxygen 1.8.10