VSDXParser.h
Go to the documentation of this file.
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* This file is part of the libvisio project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef __VSDXPARSER_H__
#define __VSDXPARSER_H__
#include <set>
#include <string>
#include <librevenge/librevenge.h>
#include "VSDXTheme.h"
#include "VSDXMLParserBase.h"
namespace libvisio
{
class VSDCollector;
class VSDXParser : public VSDXMLParserBase
{
using VSDXMLParserBase::readExtendedColourData;
using VSDXMLParserBase::readDoubleData;
using VSDXMLParserBase::readBoolData;
using VSDXMLParserBase::readLongData;
using VSDXMLParserBase::readStringData;
public:
explicit VSDXParser(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *painter);
~VSDXParser() override;
bool parseMain() override;
bool extractStencils() override;
private:
VSDXParser();
VSDXParser(const VSDXParser &);
VSDXParser &operator=(const VSDXParser &);
// Helper functions
xmlChar *readStringData(xmlTextReaderPtr reader) override;
int getElementToken(xmlTextReaderPtr reader) override;
int getElementDepth(xmlTextReaderPtr reader) override;
int skipSection(xmlTextReaderPtr reader);
// Functions parsing the Visio 2013 OPC document structure
bool parseDocument(librevenge::RVNGInputStream *input, const char *name);
bool parseMasters(librevenge::RVNGInputStream *input, const char *name);
bool parseMaster(librevenge::RVNGInputStream *input, const char *name);
bool parsePages(librevenge::RVNGInputStream *input, const char *name);
bool parsePage(librevenge::RVNGInputStream *input, const char *name);
bool parseTheme(librevenge::RVNGInputStream *input, const char *name);
void parseMetaData(librevenge::RVNGInputStream *input, VSDXRelationships &rels);
void processXmlDocument(librevenge::RVNGInputStream *input, VSDXRelationships &rels);
void processXmlNode(xmlTextReaderPtr reader);
// Functions reading the Visio 2013 OPC document content
void extractBinaryData(librevenge::RVNGInputStream *input, const char *name);
void readPageSheetProperties(xmlTextReaderPtr reader);
void readStyleProperties(xmlTextReaderPtr reader);
void readShapeProperties(xmlTextReaderPtr reader);
void getBinaryData(xmlTextReaderPtr reader) override;
void readLayer(xmlTextReaderPtr reader);
void readParagraph(xmlTextReaderPtr reader);
void readCharacter(xmlTextReaderPtr reader);
void readFonts(xmlTextReaderPtr reader);
void readTabs(xmlTextReaderPtr reader);
void readTabRow(xmlTextReaderPtr reader);
// Private data
librevenge::RVNGInputStream *m_input;
librevenge::RVNGDrawingInterface *m_painter;
int m_currentDepth;
VSDXRelationships *m_rels;
VSDXTheme m_currentTheme;
// parsePage / parseMaster targets currently on the recursion stack
std::set<std::string> m_visitedParts;
};
} // namespace libvisio
#endif // __VSDXPARSER_H__
/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
VSDXMLParserBase.h
VSDXTheme.h
libvisio::VSDCollector
Definition VSDCollector.h:21
libvisio::VSDXMLParserBase::readDoubleData
int readDoubleData(std::optional< double > &value, xmlTextReaderPtr reader)
Definition VSDXMLParserBase.cpp:2105
libvisio::VSDXMLParserBase::readStringData
int readStringData(VSDName &text, xmlTextReaderPtr reader)
Definition VSDXMLParserBase.cpp:2089
libvisio::VSDXMLParserBase::readBoolData
int readBoolData(std::optional< bool > &value, xmlTextReaderPtr reader)
Definition VSDXMLParserBase.cpp:2157
libvisio::VSDXMLParserBase::readExtendedColourData
int readExtendedColourData(Colour &value, long &idx, xmlTextReaderPtr reader)
Definition VSDXMLParserBase.cpp:2196
libvisio::VSDXMLParserBase::VSDXMLParserBase
VSDXMLParserBase()
Definition VSDXMLParserBase.cpp:29
libvisio::VSDXMLParserBase::readLongData
int readLongData(std::optional< long > &value, xmlTextReaderPtr reader)
Definition VSDXMLParserBase.cpp:2131
libvisio::VSDXParser::VSDXParser
VSDXParser()
libvisio::VSDXParser::parseDocument
bool parseDocument(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:115
libvisio::VSDXParser::readShapeProperties
void readShapeProperties(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:988
libvisio::VSDXParser::readTabs
void readTabs(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1400
libvisio::VSDXParser::m_rels
VSDXRelationships * m_rels
Definition VSDXParser.h:89
libvisio::VSDXParser::getElementToken
int getElementToken(xmlTextReaderPtr reader) override
Definition VSDXParser.cpp:593
libvisio::VSDXParser::m_painter
librevenge::RVNGDrawingInterface * m_painter
Definition VSDXParser.h:87
libvisio::VSDXParser::readCharacter
void readCharacter(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1485
libvisio::VSDXParser::extractStencils
bool extractStencils() override
Definition VSDXParser.cpp:109
libvisio::VSDXParser::m_currentDepth
int m_currentDepth
Definition VSDXParser.h:88
libvisio::VSDXParser::m_currentTheme
VSDXTheme m_currentTheme
Definition VSDXParser.h:90
libvisio::VSDXParser::operator=
VSDXParser & operator=(const VSDXParser &)
libvisio::VSDXParser::skipSection
int skipSection(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1532
libvisio::VSDXParser::parseMasters
bool parseMasters(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:169
libvisio::VSDXParser::readStringData
xmlChar * readStringData(xmlTextReaderPtr reader) override
Definition VSDXParser.cpp:582
libvisio::VSDXParser::m_visitedParts
std::set< std::string > m_visitedParts
Definition VSDXParser.h:92
libvisio::VSDXParser::processXmlNode
void processXmlNode(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:402
libvisio::VSDXParser::extractBinaryData
void extractBinaryData(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:561
libvisio::VSDXParser::parseMetaData
void parseMetaData(librevenge::RVNGInputStream *input, VSDXRelationships &rels)
Definition VSDXParser.cpp:265
libvisio::VSDXParser::VSDXParser
VSDXParser(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *painter)
Definition VSDXParser.cpp:51
libvisio::VSDXParser::readStyleProperties
void readStyleProperties(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:746
libvisio::VSDXParser::m_input
librevenge::RVNGInputStream * m_input
Definition VSDXParser.h:86
libvisio::VSDXParser::processXmlDocument
void processXmlDocument(librevenge::RVNGInputStream *input, VSDXRelationships &rels)
Definition VSDXParser.cpp:300
libvisio::VSDXParser::readFonts
void readFonts(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:715
libvisio::VSDXParser::parseMaster
bool parseMaster(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:189
libvisio::VSDXParser::parsePages
bool parsePages(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:209
libvisio::VSDXParser::VSDXParser
VSDXParser(const VSDXParser &)
libvisio::VSDXParser::getBinaryData
void getBinaryData(xmlTextReaderPtr reader) override
Definition VSDXParser.cpp:1506
libvisio::VSDXParser::readPageSheetProperties
void readPageSheetProperties(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:635
libvisio::VSDXParser::parsePage
bool parsePage(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:229
libvisio::VSDXParser::readTabRow
void readTabRow(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1428
libvisio::VSDXParser::getElementDepth
int getElementDepth(xmlTextReaderPtr reader) override
Definition VSDXParser.cpp:983
libvisio::VSDXParser::~VSDXParser
~VSDXParser() override
Definition VSDXParser.cpp:61
libvisio::VSDXParser::readLayer
void readLayer(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1358
libvisio::VSDXParser::parseMain
bool parseMain() override
Definition VSDXParser.cpp:65
libvisio::VSDXParser::parseTheme
bool parseTheme(librevenge::RVNGInputStream *input, const char *name)
Definition VSDXParser.cpp:249
libvisio::VSDXParser::readParagraph
void readParagraph(xmlTextReaderPtr reader)
Definition VSDXParser.cpp:1379
libvisio::VSDXRelationships
Definition VSDXMLHelper.h:57
libvisio::VSDXTheme
Definition VSDXTheme.h:85
libvisio
Definition libvisio_utils.h:47