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 KEY6PARSER_H_INCLUDED 00011 #define KEY6PARSER_H_INCLUDED 00012 00013 #include "IWAParser.h" 00014 00015 namespace libetonyek 00016 { 00017 00018 class KEYCollector; 00019 00020 class KEY6Parser : public IWAParser 00021 { 00022 public: 00023 KEY6Parser(const RVNGInputStreamPtr_t &fragments, const RVNGInputStreamPtr_t &package, KEYCollector &collector); 00024 00025 private: 00026 virtual bool parseDocument(); 00027 00028 bool dispatchShape(unsigned id); 00029 00030 bool parsePresentation(unsigned id); 00031 bool parseSlideList(unsigned id); 00032 bool parseSlide(unsigned id, bool master); 00033 bool parsePlaceholder(unsigned id); 00034 void parseNotes(unsigned id); 00035 00036 bool parseStickyNote(const IWAMessage &msg); 00037 00038 const IWORKStylePtr_t querySlideStyle(unsigned id) const; 00039 00040 void parseSlideStyle(unsigned id, IWORKStylePtr_t &style); 00041 00042 private: 00043 KEYCollector &m_collector; 00044 00045 mutable StyleMap_t m_slideStyles; 00046 }; 00047 00048 } 00049 00050 #endif 00051 00052 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */