00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 00002 /* libvisio 00003 * Version: MPL 1.1 / GPLv2+ / LGPLv2+ 00004 * 00005 * The contents of this file are subject to the Mozilla Public License Version 00006 * 1.1 (the "License"); you may not use this file except in compliance with 00007 * the License or as specified alternatively below. You may obtain a copy of 00008 * the License at http://www.mozilla.org/MPL/ 00009 * 00010 * Software distributed under the License is distributed on an "AS IS" basis, 00011 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 00012 * for the specific language governing rights and limitations under the 00013 * License. 00014 * 00015 * Major Contributor(s): 00016 * Copyright (C) 2012 Fridrich Strba <fridrich.strba@bluewin.ch> 00017 * 00018 * 00019 * All Rights Reserved. 00020 * 00021 * For minor contributions see the git repository. 00022 * 00023 * Alternatively, the contents of this file may be used under the terms of 00024 * either the GNU General Public License Version 2 or later (the "GPLv2+"), or 00025 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"), 00026 * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable 00027 * instead of those above. 00028 */ 00029 00030 #ifndef __VDXPARSER_H__ 00031 #define __VDXPARSER_H__ 00032 00033 #include <libwpd-stream/libwpd-stream.h> 00034 #include <libwpg/libwpg.h> 00035 #include "VSDXMLParserBase.h" 00036 00037 namespace libvisio 00038 { 00039 00040 class VSDCollector; 00041 00042 class VDXParser : public VSDXMLParserBase 00043 { 00044 using VSDXMLParserBase::readExtendedColourData; 00045 using VSDXMLParserBase::readDoubleData; 00046 using VSDXMLParserBase::readBoolData; 00047 using VSDXMLParserBase::readLongData; 00048 00049 public: 00050 explicit VDXParser(WPXInputStream *input, libwpg::WPGPaintInterface *painter); 00051 virtual ~VDXParser(); 00052 bool parseMain(); 00053 bool extractStencils(); 00054 00055 private: 00056 VDXParser(); 00057 VDXParser(const VDXParser &); 00058 VDXParser &operator=(const VDXParser &); 00059 00060 // Helper functions 00061 00062 xmlChar *readStringData(xmlTextReaderPtr reader); 00063 00064 int getElementToken(xmlTextReaderPtr reader); 00065 int getElementDepth(xmlTextReaderPtr reader); 00066 00067 // Functions to read the DatadiagramML document structure 00068 00069 bool processXmlDocument(WPXInputStream *input); 00070 void processXmlNode(xmlTextReaderPtr reader); 00071 00072 // Functions reading the DiagramML document content 00073 00074 void readLine(xmlTextReaderPtr reader); 00075 void readFillAndShadow(xmlTextReaderPtr reader); 00076 void readXFormData(xmlTextReaderPtr reader); 00077 void readTxtXForm(xmlTextReaderPtr reader); 00078 void readPageProps(xmlTextReaderPtr reader); 00079 void readFonts(xmlTextReaderPtr reader); 00080 void readTextBlock(xmlTextReaderPtr reader); 00081 void readForeignInfo(xmlTextReaderPtr reader); 00082 00083 void getBinaryData(xmlTextReaderPtr reader); 00084 00085 // Private data 00086 00087 WPXInputStream *m_input; 00088 libwpg::WPGPaintInterface *m_painter; 00089 }; 00090 00091 } // namespace libvisio 00092 00093 #endif // __VDXPARSER_H__ 00094 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */