00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 00002 /* 00003 * This file is part of the libetonyek project. 00004 * 00005 * This Source Code Form is subject to the terms of the Mozilla Public 00006 * License, v. 2.0. If a copy of the MPL was not distributed with this 00007 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 00008 */ 00009 00010 #ifndef KEY2PARSER_H_INCLUDED 00011 #define KEY2PARSER_H_INCLUDED 00012 00013 #include "KEY2ParserUtils.h" 00014 #include "KEYParser.h" 00015 #include "KEYTypes.h" 00016 00017 namespace libetonyek 00018 { 00019 00020 class KEYStyle; 00021 00022 class KEY2Parser : public KEYParser, private KEY2ParserUtils 00023 { 00024 public: 00025 KEY2Parser(const WPXInputStreamPtr_t &input, const WPXInputStreamPtr_t &package, KEYCollector *collector, const KEYDefaults &defaults); 00026 virtual ~KEY2Parser(); 00027 00028 // NOTE: KEY2TableParser uses these to avoid code duplication 00029 void parseGeometry(const KEYXMLReader &reader); 00030 void parseTextBody(const KEYXMLReader &reader); 00031 00032 private: 00033 virtual void processXmlNode(const KEYXMLReader &reader); 00034 virtual KEYXMLReader::TokenizerFunction_t getTokenizer() const; 00035 00036 void parseDrawables(const KEYXMLReader &reader); 00037 void parseLayer(const KEYXMLReader &reader); 00038 void parseLayers(const KEYXMLReader &reader); 00039 void parseMasterSlide(const KEYXMLReader &reader); 00040 void parseMasterSlides(const KEYXMLReader &reader); 00041 void parseMetadata(const KEYXMLReader &reader); 00042 void parseNotes(const KEYXMLReader &reader); 00043 void parsePage(const KEYXMLReader &reader); 00044 void parseProxyMasterLayer(const KEYXMLReader &reader); 00045 void parseSlide(const KEYXMLReader &reader); 00046 void parseSlideList(const KEYXMLReader &reader); 00047 void parseStickyNotes(const KEYXMLReader &reader); 00048 void parseStyles(const KEYXMLReader &reader, bool anonymous); 00049 void parseStylesheet(const KEYXMLReader &reader); 00050 void parseTheme(const KEYXMLReader &reader); 00051 void parseThemeList(const KEYXMLReader &reader); 00052 00053 void parseBezier(const KEYXMLReader &reader); 00054 void parseConnectionLine(const KEYXMLReader &reader); 00055 void parseGroup(const KEYXMLReader &reader); 00056 void parseImage(const KEYXMLReader &reader); 00057 void parseLine(const KEYXMLReader &reader); 00058 void parseMedia(const KEYXMLReader &reader); 00059 void parsePath(const KEYXMLReader &reader); 00060 void parseShape(const KEYXMLReader &reader); 00061 void parseStickyNote(const KEYXMLReader &reader); 00062 void parsePlaceholder(const KEYXMLReader &reader, bool title = false); 00063 00064 void parseBezierPath(const KEYXMLReader &reader); 00065 void parseCallout2Path(const KEYXMLReader &reader); 00066 void parseConnectionPath(const KEYXMLReader &reader); 00067 void parsePointPath(const KEYXMLReader &reader); 00068 void parseScalarPath(const KEYXMLReader &reader); 00069 00070 void parseContent(const KEYXMLReader &reader); 00071 void parseData(const KEYXMLReader &reader); 00072 void parseFiltered(const KEYXMLReader &reader); 00073 void parseFilteredImage(const KEYXMLReader &reader); 00074 void parseImageMedia(const KEYXMLReader &reader); 00075 void parseLeveled(const KEYXMLReader &reader); 00076 void parseUnfiltered(const KEYXMLReader &reader); 00077 void parseMovieMedia(const KEYXMLReader &reader); 00078 void parseSelfContainedMovie(const KEYXMLReader &reader); 00079 void parseOtherDatas(const KEYXMLReader &reader); 00080 00081 void parseBr(const KEYXMLReader &reader); 00082 void parseLayout(const KEYXMLReader &reader); 00083 void parseLink(const KEYXMLReader &reader); 00084 void parseP(const KEYXMLReader &reader); 00085 void parseSpan(const KEYXMLReader &reader); 00086 void parseTab(const KEYXMLReader &reader); 00087 void parseText(const KEYXMLReader &reader); 00088 void parseTextStorage(const KEYXMLReader &reader); 00089 00090 void emitLayoutStyle(const ID_t &id); 00091 00092 private: 00093 WPXInputStreamPtr_t m_package; 00094 unsigned m_version; 00095 }; 00096 00097 } 00098 00099 #endif // KEY2PARSER_H_INCLUDED 00100 00101 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */