KEYSVGGenerator.h
Go to the documentation of this file.
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: */