VSDXMLParserBase.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 __VSDXMLPARSERBASE_H__
11#define __VSDXMLPARSERBASE_H__
12
13#include <map>
14#include <memory>
15#include <stack>
16#include <string>
17#include <boost/optional.hpp>
18#include "VSDXMLHelper.h"
19#include "VSDCharacterList.h"
20#include "VSDParagraphList.h"
21#include "VSDShapeList.h"
22#include "VSDStencils.h"
23
24namespace libvisio
25{
26
27class VSDCollector;
28class XMLErrorWatcher;
29
31{
32public:
33 explicit VSDXMLParserBase();
34 virtual ~VSDXMLParserBase();
35 virtual bool parseMain() = 0;
36 virtual bool extractStencils() = 0;
37
38protected:
39 // Protected data
42 std::unique_ptr<VSDStencil> m_currentStencil;
46
51 std::map<unsigned, Colour> m_colours;
54 librevenge::RVNGBinaryData m_currentBinaryData;
55 std::stack<VSDShape> m_shapeStack;
56 std::stack<unsigned> m_shapeLevelStack;
61
62 std::map<unsigned, VSDName> m_fonts;
63
64 std::map<unsigned, VSDTabStop> *m_currentTabSet;
65
67
68 // Helper functions
69
70 int readByteData(unsigned char &value, xmlTextReaderPtr reader);
71 int readByteData(boost::optional<unsigned char> &value, xmlTextReaderPtr reader);
72 int readUnsignedData(boost::optional<unsigned> &value, xmlTextReaderPtr reader);
73 int readLongData(boost::optional<long> &value, xmlTextReaderPtr reader);
74 int readLongData(long &value, xmlTextReaderPtr reader);
75 int readDoubleData(boost::optional<double> &value, xmlTextReaderPtr reader);
76 int readDoubleData(double &value, xmlTextReaderPtr reader);
77 int readBoolData(boost::optional<bool> &value, xmlTextReaderPtr reader);
78 int readBoolData(bool &value, xmlTextReaderPtr reader);
79 int readExtendedColourData(Colour &value, long &idx, xmlTextReaderPtr reader);
80 int readExtendedColourData(Colour &value, xmlTextReaderPtr reader);
81 int readExtendedColourData(boost::optional<Colour> &value, xmlTextReaderPtr reader);
82 int readNURBSData(boost::optional<NURBSData> &data, xmlTextReaderPtr reader);
83 int readPolylineData(boost::optional<PolylineData> &data, xmlTextReaderPtr reader);
84 int readStringData(VSDName &text, xmlTextReaderPtr reader);
85 void readTriggerId(unsigned &id, xmlTextReaderPtr reader);
86
87 virtual xmlChar *readStringData(xmlTextReaderPtr reader) = 0;
88 unsigned getIX(xmlTextReaderPtr reader);
89 virtual void _handleLevelChange(unsigned level);
90 void _flushShape();
91
92 virtual int getElementToken(xmlTextReaderPtr reader) = 0;
93 virtual int getElementDepth(xmlTextReaderPtr reader) = 0;
94
95 // Functions reading the DiagramML document content
96
97 void readEllipticalArcTo(xmlTextReaderPtr reader);
98 void readEllipse(xmlTextReaderPtr reader);
99 void readGeometry(xmlTextReaderPtr reader);
100 void readMoveTo(xmlTextReaderPtr reader);
101 void readLineTo(xmlTextReaderPtr reader);
102 void readArcTo(xmlTextReaderPtr reader);
103 void readNURBSTo(xmlTextReaderPtr reader);
104 void readPolylineTo(xmlTextReaderPtr reader);
105 void readInfiniteLine(xmlTextReaderPtr reader);
106 void readRelCubBezTo(xmlTextReaderPtr reader);
107 void readRelEllipticalArcTo(xmlTextReaderPtr reader);
108 void readRelLineTo(xmlTextReaderPtr reader);
109 void readRelMoveTo(xmlTextReaderPtr reader);
110 void readRelQuadBezTo(xmlTextReaderPtr reader);
111 void readForeignData(xmlTextReaderPtr reader);
112 virtual void getBinaryData(xmlTextReaderPtr reader) = 0;
113 void readShape(xmlTextReaderPtr reader);
114 void readColours(xmlTextReaderPtr reader);
115 void readPage(xmlTextReaderPtr reader);
116 void readText(xmlTextReaderPtr reader);
117 void readCharIX(xmlTextReaderPtr reader);
118 void readParaIX(xmlTextReaderPtr reader);
119 void readLayerIX(xmlTextReaderPtr reader);
120 void readLayerMember(xmlTextReaderPtr reader);
121
122 void readStyleSheet(xmlTextReaderPtr reader);
123 void readPageSheet(xmlTextReaderPtr reader);
124
125 void readSplineStart(xmlTextReaderPtr reader);
126 void readSplineKnot(xmlTextReaderPtr reader);
127
128 void readStencil(xmlTextReaderPtr reader);
129
130 void handlePagesStart(xmlTextReaderPtr reader);
131 void handlePagesEnd(xmlTextReaderPtr reader);
132 void handlePageStart(xmlTextReaderPtr reader);
133 void handlePageEnd(xmlTextReaderPtr reader);
134 void handleMastersStart(xmlTextReaderPtr reader);
135 void handleMastersEnd(xmlTextReaderPtr reader);
136 void handleMasterStart(xmlTextReaderPtr reader);
137 void handleMasterEnd(xmlTextReaderPtr reader);
138 void skipPages(xmlTextReaderPtr reader);
139 void skipMasters(xmlTextReaderPtr reader);
140
141private:
144
145 void initColours();
146};
147
148} // namespace libvisio
149
150#endif // __VSDXMLPARSERBASE_H__
151/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition: VSDCollector.h:21
Definition: VSDFieldList.h:82
Definition: VSDGeometryList.h:48
Definition: VSDTypes.h:179
Definition: VSDShapeList.h:20
Definition: VSDStencils.h:27
Definition: VSDStencils.h:78
Definition: VSDXMLParserBase.h:31
virtual int getElementDepth(xmlTextReaderPtr reader)=0
virtual void getBinaryData(xmlTextReaderPtr reader)=0
void handleMasterStart(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1905
int readNURBSData(boost::optional< NURBSData > &data, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1963
void readGeometry(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:47
void readRelLineTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:771
VSDXMLParserBase(const VSDXMLParserBase &)
void readParaIX(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1405
void handleMastersStart(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1882
int readStringData(VSDName &text, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2073
std::stack< unsigned > m_shapeLevelStack
Definition: VSDXMLParserBase.h:56
void readPageSheet(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1567
bool m_isStencilStarted
Definition: VSDXMLParserBase.h:44
void initColours()
Definition: VSDXMLParserBase.cpp:998
void readText(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1079
unsigned m_currentGeometryListIndex
Definition: VSDXMLParserBase.h:60
void readLayerMember(xmlTextReaderPtr reader)
void readNURBSTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:456
std::unique_ptr< VSDStencil > m_currentStencil
Definition: VSDXMLParserBase.h:42
VSDShapeList m_shapeList
Definition: VSDXMLParserBase.h:53
void handleMasterEnd(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1914
void readStencil(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1693
void readStyleSheet(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1551
void readArcTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:270
std::map< unsigned, VSDName > m_fonts
Definition: VSDXMLParserBase.h:62
virtual bool parseMain()=0
void readEllipse(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:390
void readTriggerId(unsigned &id, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2238
VSDStencils m_stencils
Definition: VSDXMLParserBase.h:41
VSDXMLParserBase & operator=(const VSDXMLParserBase &)
void readColours(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1027
void handleMastersEnd(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1896
void readRelCubBezTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:705
void readPolylineTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:527
int readByteData(unsigned char &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2163
int readUnsignedData(boost::optional< unsigned > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2154
virtual ~VSDXMLParserBase()
Definition: VSDXMLParserBase.cpp:41
unsigned m_currentLevel
Definition: VSDXMLParserBase.h:49
librevenge::RVNGBinaryData m_currentBinaryData
Definition: VSDXMLParserBase.h:54
bool m_extractStencils
Definition: VSDXMLParserBase.h:47
void readSplineKnot(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1639
virtual int getElementToken(xmlTextReaderPtr reader)=0
virtual bool extractStencils()=0
unsigned m_currentShapeLevel
Definition: VSDXMLParserBase.h:50
virtual void _handleLevelChange(unsigned level)
Definition: VSDXMLParserBase.cpp:1841
int readDoubleData(boost::optional< double > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2089
void handlePagesStart(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1847
VSDCollector * m_collector
Definition: VSDXMLParserBase.h:40
void readRelMoveTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:821
std::map< unsigned, VSDTabStop > * m_currentTabSet
Definition: VSDXMLParserBase.h:64
void handlePageStart(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1862
bool m_isShapeStarted
Definition: VSDXMLParserBase.h:57
int readBoolData(boost::optional< bool > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2141
void readForeignData(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1706
bool m_isInStyles
Definition: VSDXMLParserBase.h:48
unsigned m_currentStencilID
Definition: VSDXMLParserBase.h:45
virtual xmlChar * readStringData(xmlTextReaderPtr reader)=0
void skipMasters(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1935
void readLineTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:220
VSDShape m_shape
Definition: VSDXMLParserBase.h:43
void readCharIX(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1172
void readRelEllipticalArcTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:639
int readPolylineData(boost::optional< PolylineData > &data, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2016
void handlePagesEnd(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1855
void readShape(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:929
void readMoveTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:170
unsigned getIX(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2229
bool m_isPageStarted
Definition: VSDXMLParserBase.h:58
void handlePageEnd(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1869
VSDGeometryList * m_currentGeometryList
Definition: VSDXMLParserBase.h:59
void readRelQuadBezTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:871
void _flushShape()
Definition: VSDXMLParserBase.cpp:1744
void skipPages(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1949
int readExtendedColourData(Colour &value, long &idx, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2180
void readSplineStart(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1573
void readEllipticalArcTo(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:324
void readLayerIX(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1354
VSDFieldList m_fieldList
Definition: VSDXMLParserBase.h:52
void readInfiniteLine(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:581
XMLErrorWatcher * m_watcher
Definition: VSDXMLParserBase.h:66
std::map< unsigned, Colour > m_colours
Definition: VSDXMLParserBase.h:51
int readLongData(boost::optional< long > &value, xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:2115
void readPage(xmlTextReaderPtr reader)
Definition: VSDXMLParserBase.cpp:1059
VSDXMLParserBase()
Definition: VSDXMLParserBase.cpp:28
std::stack< VSDShape > m_shapeStack
Definition: VSDXMLParserBase.h:55
Definition: libvisio_xml.h:25
Definition: VisioDocument.h:30
Definition: VSDTypes.h:73

Generated for libvisio by doxygen 1.9.2