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 KEYSVGGENERATOR_H_INCLUDED 00011 #define KEYSVGGENERATOR_H_INCLUDED 00012 00013 #include <stdio.h> 00014 #include <iostream> 00015 #include <sstream> 00016 #include <libwpd/libwpd.h> 00017 #include <libetonyek/libetonyek.h> 00018 00019 namespace libetonyek 00020 { 00021 00022 class KEYSVGGenerator : public KEYPresentationInterface 00023 { 00024 public: 00025 explicit KEYSVGGenerator(KEYStringVector &vec); 00026 virtual ~KEYSVGGenerator(); 00027 00028 virtual void startDocument(const ::WPXPropertyList &propList); 00029 virtual void endDocument(); 00030 00031 virtual void setDocumentMetaData(const ::WPXPropertyList &propList); 00032 00033 virtual void startSlide(const ::WPXPropertyList &propList); 00034 virtual void endSlide(); 00035 00036 virtual void setStyle(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &gradient); 00037 00038 virtual void startLayer(const ::WPXPropertyList &propList); 00039 virtual void endLayer(); 00040 00041 virtual void startEmbeddedGraphics(const ::WPXPropertyList & /*propList*/) {} 00042 virtual void endEmbeddedGraphics() {} 00043 00044 virtual void startGroup(const ::WPXPropertyList &propList); 00045 virtual void endGroup(); 00046 00047 virtual void drawRectangle(const ::WPXPropertyList &propList); 00048 virtual void drawEllipse(const ::WPXPropertyList &propList); 00049 virtual void drawPolyline(const ::WPXPropertyListVector &vertices); 00050 virtual void drawPolygon(const ::WPXPropertyListVector &vertices); 00051 virtual void drawPath(const ::WPXPropertyListVector &path); 00052 virtual void drawGraphicObject(const ::WPXPropertyList &propList, const ::WPXBinaryData &binaryData); 00053 00054 virtual void drawConnector(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &path); 00055 00056 virtual void startTextObject(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &path); 00057 virtual void endTextObject(); 00058 virtual void insertTab(); 00059 virtual void insertSpace(); 00060 virtual void insertText(const WPXString &text); 00061 virtual void insertLineBreak(); 00062 00063 virtual void insertField(const WPXString &type, const ::WPXPropertyList &propList); 00064 00065 virtual void openOrderedListLevel(const ::WPXPropertyList &propList); 00066 virtual void openUnorderedListLevel(const ::WPXPropertyList &propList); 00067 virtual void closeOrderedListLevel(); 00068 virtual void closeUnorderedListLevel(); 00069 virtual void openListElement(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &tabStops); 00070 virtual void closeListElement(); 00071 00072 virtual void openParagraph(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &tabStops); 00073 virtual void closeParagraph(); 00074 virtual void openSpan(const ::WPXPropertyList &propList); 00075 virtual void closeSpan(); 00076 00077 virtual void openTable(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &columns); 00078 virtual void openTableRow(const ::WPXPropertyList &propList); 00079 virtual void closeTableRow(); 00080 virtual void openTableCell(const ::WPXPropertyList &propList); 00081 virtual void closeTableCell(); 00082 virtual void insertCoveredTableCell(const ::WPXPropertyList &propList); 00083 virtual void closeTable(); 00084 00085 virtual void startComment(const ::WPXPropertyList &propList); 00086 virtual void endComment(); 00087 00088 virtual void startNotes(const ::WPXPropertyList &propList); 00089 virtual void endNotes(); 00090 00091 private: 00092 ::WPXPropertyListVector m_gradient; 00093 ::WPXPropertyList m_style; 00094 int m_gradientIndex; 00095 int m_patternIndex; 00096 int m_shadowIndex; 00097 void writeStyle(bool isClosed=true); 00098 void drawPolySomething(const ::WPXPropertyListVector &vertices, bool isClosed); 00099 00100 std::ostringstream m_outputSink; 00101 KEYStringVector &m_vec; 00102 }; 00103 00104 } // namespace libetonyek 00105 00106 #endif // KEYSVGGENERATOR_H_INCLUDED 00107 00108 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */