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
19namespace libvisio
20{
21
22class VSDCollector;
23
25{
31
32
33public:
34 explicit VSDXParser(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *painter);
35 ~VSDXParser() override;
36 bool parseMain() override;
37 bool extractStencils() override;
38
39private:
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: */
Definition VSDCollector.h:21
int readDoubleData(std::optional< double > &value, xmlTextReaderPtr reader)
Definition VSDXMLParserBase.cpp:2105
int readStringData(VSDName &text, xmlTextReaderPtr reader)
Definition VSDXMLParserBase.cpp:2089
int readBoolData(std::optional< bool > &value, xmlTextReaderPtr reader)
Definition VSDXMLParserBase.cpp:2157
int readExtendedColourData(Colour &value, long &idx, xmlTextReaderPtr reader)
Definition VSDXMLParserBase.cpp:2196
VSDXMLParserBase()
Definition VSDXMLParserBase.cpp:29
int readLongData(std::optional< long > &value, xmlTextReaderPtr reader)
Definition VSDXMLParserBase.cpp:2131
bool parseDocument(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:115
void readShapeProperties(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:988
void readTabs(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1400
VSDXRelationships * m_rels
Definition VSDXParser.h:89
int getElementToken(xmlTextReaderPtr reader) override
Definition VSDXParser.cpp:593
librevenge::RVNGDrawingInterface * m_painter
Definition VSDXParser.h:87
void readCharacter(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1485
bool extractStencils() override
Definition VSDXParser.cpp:109
int m_currentDepth
Definition VSDXParser.h:88
VSDXTheme m_currentTheme
Definition VSDXParser.h:90
VSDXParser & operator=(const VSDXParser &)
int skipSection(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1532
bool parseMasters(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:169
xmlChar * readStringData(xmlTextReaderPtr reader) override
Definition VSDXParser.cpp:582
std::set< std::string > m_visitedParts
Definition VSDXParser.h:92
void processXmlNode(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:402
void extractBinaryData(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:561
void parseMetaData(librevenge::RVNGInputStream *input, VSDXRelationships &rels)
Definition VSDXParser.cpp:265
VSDXParser(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *painter)
Definition VSDXParser.cpp:51
void readStyleProperties(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:746
librevenge::RVNGInputStream * m_input
Definition VSDXParser.h:86
void processXmlDocument(librevenge::RVNGInputStream *input, VSDXRelationships &rels)
Definition VSDXParser.cpp:300
void readFonts(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:715
bool parseMaster(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:189
bool parsePages(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:209
VSDXParser(const VSDXParser &)
void getBinaryData(xmlTextReaderPtr reader) override
Definition VSDXParser.cpp:1506
void readPageSheetProperties(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:635
bool parsePage(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:229
void readTabRow(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1428
int getElementDepth(xmlTextReaderPtr reader) override
Definition VSDXParser.cpp:983
~VSDXParser() override
Definition VSDXParser.cpp:61
void readLayer(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1358
bool parseMain() override
Definition VSDXParser.cpp:65
bool parseTheme(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:249
void readParagraph(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1379
Definition VSDXMLHelper.h:57
Definition VSDXTheme.h:85
Definition libvisio_utils.h:47

Generated for libvisio by doxygen 1.15.0