- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

VSDXParser.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* libvisio
3 * Version: MPL 1.1 / GPLv2+ / LGPLv2+
4 *
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License or as specified alternatively below. You may obtain a copy of
8 * the License at http://www.mozilla.org/MPL/
9 *
10 * Software distributed under the License is distributed on an "AS IS" basis,
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 * for the specific language governing rights and limitations under the
13 * License.
14 *
15 * Major Contributor(s):
16 * Copyright (C) 2012 Fridrich Strba <fridrich.strba@bluewin.ch>
17 *
18 *
19 * All Rights Reserved.
20 *
21 * For minor contributions see the git repository.
22 *
23 * Alternatively, the contents of this file may be used under the terms of
24 * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
25 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
26 * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
27 * instead of those above.
28 */
29
30 #ifndef __VSDXPARSER_H__
31 #define __VSDXPARSER_H__
32
33 #include <libwpd-stream/libwpd-stream.h>
34 #include <libwpg/libwpg.h>
35 #include "VSDXTheme.h"
36 #include "VSDXMLParserBase.h"
37
38 namespace libvisio
39 {
40
41 class VSDCollector;
42
43 class VSDXParser : public VSDXMLParserBase
44 {
45 using VSDXMLParserBase::readExtendedColourData;
46 using VSDXMLParserBase::readDoubleData;
47 using VSDXMLParserBase::readBoolData;
48 using VSDXMLParserBase::readLongData;
49
50 public:
51 explicit VSDXParser(WPXInputStream *input, libwpg::WPGPaintInterface *painter);
52 virtual ~VSDXParser();
53 bool parseMain();
54 bool extractStencils();
55
56 private:
57 VSDXParser();
58 VSDXParser(const VSDXParser &);
59 VSDXParser &operator=(const VSDXParser &);
60
61 // Helper functions
62
63 xmlChar *readStringData(xmlTextReaderPtr reader);
64
65 int getElementToken(xmlTextReaderPtr reader);
66 int getElementDepth(xmlTextReaderPtr reader);
67
68 int skipSection(xmlTextReaderPtr reader);
69
70 // Functions parsing the Visio 2013 OPC document structure
71
72 bool parseDocument(WPXInputStream *input, const char *name);
73 bool parseMasters(WPXInputStream *input, const char *name);
74 bool parseMaster(WPXInputStream *input, const char *name);
75 bool parsePages(WPXInputStream *input, const char *name);
76 bool parsePage(WPXInputStream *input, const char *name);
77 bool parseTheme(WPXInputStream *input, const char *name);
78 void processXmlDocument(WPXInputStream *input, VSDXRelationships &rels);
79 void processXmlNode(xmlTextReaderPtr reader);
80
81 // Functions reading the Visio 2013 OPC document content
82
83 void extractBinaryData(WPXInputStream *input, const char *name);
84
85 void readPageSheetProperties(xmlTextReaderPtr reader);
86
87 void readStyleProperties(xmlTextReaderPtr reader);
88
89 void readShapeProperties(xmlTextReaderPtr reader);
90
91 void getBinaryData(xmlTextReaderPtr reader);
92
93 void readParagraph(xmlTextReaderPtr reader);
94 void readCharacter(xmlTextReaderPtr reader);
95 void readFonts(xmlTextReaderPtr reader);
96
97 // Private data
98
99 WPXInputStream *m_input;
100 libwpg::WPGPaintInterface *m_painter;
101 int m_currentDepth;
102 VSDXRelationships *m_rels;
103 VSDXTheme m_currentTheme;
104 };
105
106 } // namespace libvisio
107
108 #endif // __VSDXPARSER_H__
109 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
libvisio::VSDXParser::getElementDepth
int getElementDepth(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:892
libvisio::VSDXParser::m_input
WPXInputStream * m_input
Definition: VSDXParser.h:99
libvisio::VSDXParser::readCharacter
void readCharacter(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1206
libvisio::VSDXParser::m_currentTheme
VSDXTheme m_currentTheme
Definition: VSDXParser.h:103
libvisio::VSDXParser::processXmlNode
void processXmlNode(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:369
libvisio::VSDXParser::parsePage
bool parsePage(WPXInputStream *input, const char *name)
Definition: VSDXParser.cpp:269
libvisio::VSDXMLParserBase::readBoolData
int readBoolData(boost::optional< bool > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2054
libvisio::VSDXParser::extractBinaryData
void extractBinaryData(WPXInputStream *input, const char *name)
Definition: VSDXParser.cpp:528
libvisio::VSDXParser::VSDXParser
VSDXParser()
libvisio::VSDXParser
Definition: VSDXParser.h:43
libvisio::VSDXParser::parseDocument
bool parseDocument(WPXInputStream *input, const char *name)
Definition: VSDXParser.cpp:145
libvisio::VSDXParser::getElementToken
int getElementToken(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:561
VSDXMLParserBase.h
libvisio::VSDXMLParserBase::readDoubleData
int readDoubleData(boost::optional< double > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1998
libvisio::VSDXParser::parseMasters
bool parseMasters(WPXInputStream *input, const char *name)
Definition: VSDXParser.cpp:200
libvisio::VSDXParser::readStyleProperties
void readStyleProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:701
libvisio::VSDXParser::~VSDXParser
virtual ~VSDXParser()
Definition: VSDXParser.cpp:87
libvisio::VSDXParser::m_painter
libwpg::WPGPaintInterface * m_painter
Definition: VSDXParser.h:100
libvisio::VSDXParser::readFonts
void readFonts(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:669
libvisio::VSDXRelationships
Definition: VSDXMLHelper.h:91
libvisio::VSDXParser::skipSection
int skipSection(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1254
libvisio::VSDXParser::parseMaster
bool parseMaster(WPXInputStream *input, const char *name)
Definition: VSDXParser.cpp:223
libvisio::VSDXMLParserBase::readLongData
int readLongData(boost::optional< long > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2026
libvisio::VSDXMLParserBase::readExtendedColourData
int readExtendedColourData(Colour &value, long &idx, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2119
libvisio::VSDXParser::parseMain
bool parseMain()
Definition: VSDXParser.cpp:93
libvisio::VSDXParser::getBinaryData
void getBinaryData(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1227
libvisio::VSDXParser::operator=
VSDXParser & operator=(const VSDXParser &)
libvisio::VSDXMLParserBase
Definition: VSDXMLParserBase.h:48
libvisio::VSDXParser::m_rels
VSDXRelationships * m_rels
Definition: VSDXParser.h:102
libvisio::VSDXParser::parsePages
bool parsePages(WPXInputStream *input, const char *name)
Definition: VSDXParser.cpp:246
VSDXTheme.h
libvisio::VSDXParser::readStringData
xmlChar * readStringData(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:550
libvisio::VSDXParser::processXmlDocument
void processXmlDocument(WPXInputStream *input, VSDXRelationships &rels)
Definition: VSDXParser.cpp:309
libvisio::VSDXParser::readPageSheetProperties
void readPageSheetProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:603
libvisio::VSDXTheme
Definition: VSDXTheme.h:71
libvisio::VSDXParser::readParagraph
void readParagraph(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:1185
libvisio::VSDXParser::extractStencils
bool extractStencils()
Definition: VSDXParser.cpp:139
libvisio::VSDXParser::parseTheme
bool parseTheme(WPXInputStream *input, const char *name)
Definition: VSDXParser.cpp:292
libvisio::VSDXParser::m_currentDepth
int m_currentDepth
Definition: VSDXParser.h:101
libvisio::VSDXParser::readShapeProperties
void readShapeProperties(xmlTextReaderPtr reader)
Definition: VSDXParser.cpp:897