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 
44 {
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 &);
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;
104 };
105 
106 } // namespace libvisio
107 
108 #endif // __VSDXPARSER_H__
109 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */

Generated for libvisio by doxygen 1.8.4