1 /* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */ 2 3 /* libmwaw 4 * Version: MPL 2.0 / LGPLv2+ 5 * 6 * The contents of this file are subject to the Mozilla Public License Version 7 * 2.0 (the "License"); you may not use this file except in compliance with 8 * the License or as specified alternatively below. You may obtain a copy of 9 * the License at http://www.mozilla.org/MPL/ 10 * 11 * Software distributed under the License is distributed on an "AS IS" basis, 12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 13 * for the specific language governing rights and limitations under the 14 * License. 15 * 16 * Major Contributor(s): 17 * Copyright (C) 2006 Ariya Hidayat (ariya@kde.org) 18 * Copyright (C) 2004 Marc Oude Kotte (marc@solcon.nl) 19 * Copyright (C) 2002 William Lachance (wrlach@gmail.com) 20 * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net) 21 * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch) 22 * Copyright (C) 2006, 2007 Andrew Ziem 23 * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr) 24 * 25 * 26 * All Rights Reserved. 27 * 28 * For minor contributions see the git repository. 29 * 30 * Alternatively, the contents of this file may be used under the terms of 31 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"), 32 * in which case the provisions of the LGPLv2+ are applicable 33 * instead of those above. 34 */ 35 36 #ifndef MWAW_GRAPHIC_ENCODER_HXX 37 #define MWAW_GRAPHIC_ENCODER_HXX 38 39 #include <librevenge/librevenge.h> 40 #include "libmwaw_internal.hxx" 41 42 class MWAWPropertyHandlerEncoder; 43 44 namespace MWAWGraphicEncoderInternal 45 { 46 struct State; 47 } 48 /** main class used to define store librevenge::RVNGDrawingInterface 49 lists of command in a librevenge::RVNGBinaryData. \see MWAWGraphicDecoder 50 can be used to decode back the pictures... 51 52 \note as this class implements the functions librevenge::RVNGDrawingInterface, 53 the documentation is not duplicated.. 54 */ 55 class MWAWGraphicEncoder final : public librevenge::RVNGDrawingInterface 56 { 57 public: 58 /// constructor 59 MWAWGraphicEncoder(); 60 /// destructor 61 ~MWAWGraphicEncoder() final; 62 /// return the final graphic 63 bool getBinaryResult(MWAWEmbeddedObject &result); 64 65 void startDocument(const librevenge::RVNGPropertyList &propList) final; 66 void endDocument() final; 67 68 void defineEmbeddedFont(const librevenge::RVNGPropertyList &propList) final; 69 70 void setDocumentMetaData(const librevenge::RVNGPropertyList &propList) final; 71 void startPage(const librevenge::RVNGPropertyList &propList) final; 72 void endPage() final; 73 void startMasterPage(const librevenge::RVNGPropertyList &propList) final; 74 void endMasterPage() final; 75 76 void setStyle(const librevenge::RVNGPropertyList &propList) final; 77 void startLayer(const librevenge::RVNGPropertyList &propList) final; 78 void endLayer() final; 79 void startEmbeddedGraphics(const librevenge::RVNGPropertyList &propList) final; 80 void endEmbeddedGraphics() final; 81 void openGroup(const librevenge::RVNGPropertyList &propList) final; 82 void closeGroup() final; 83 84 85 void drawRectangle(const librevenge::RVNGPropertyList &propList) final; 86 void drawEllipse(const librevenge::RVNGPropertyList &propList) final; 87 void drawPolygon(const librevenge::RVNGPropertyList &vertices) final; 88 void drawPolyline(const librevenge::RVNGPropertyList &vertices) final; 89 void drawPath(const librevenge::RVNGPropertyList &path) final; 90 void drawConnector(const librevenge::RVNGPropertyList &propList) final; 91 92 void drawGraphicObject(const librevenge::RVNGPropertyList &propList) final; 93 94 void startTextObject(const librevenge::RVNGPropertyList &propList) final; 95 void endTextObject() final; 96 97 void startTableObject(const librevenge::RVNGPropertyList &propList) final; 98 void endTableObject() final; 99 void openTableRow(const librevenge::RVNGPropertyList &propList) final; 100 void closeTableRow() final; 101 void openTableCell(const librevenge::RVNGPropertyList &propList) final; 102 void closeTableCell() final; 103 void insertCoveredTableCell(const librevenge::RVNGPropertyList &propList) final; 104 105 void insertTab() final; 106 void insertSpace() final; 107 void insertText(const librevenge::RVNGString &text) final; 108 void insertLineBreak() final; 109 void insertField(const librevenge::RVNGPropertyList &propList) final; 110 111 void openLink(const librevenge::RVNGPropertyList &propList) final; 112 void closeLink() final; 113 void openOrderedListLevel(const librevenge::RVNGPropertyList &propList) final; 114 void openUnorderedListLevel(const librevenge::RVNGPropertyList &propList) final; 115 void closeOrderedListLevel() final; 116 void closeUnorderedListLevel() final; 117 void openListElement(const librevenge::RVNGPropertyList &propList) final; 118 void closeListElement() final; 119 120 void defineParagraphStyle(const librevenge::RVNGPropertyList &propList) final; 121 void openParagraph(const librevenge::RVNGPropertyList &propList) final; 122 void closeParagraph() final; 123 124 void defineCharacterStyle(const librevenge::RVNGPropertyList &propList) final; 125 void openSpan(const librevenge::RVNGPropertyList &propList) final; 126 void closeSpan() final; 127 128 protected: 129 //! the actual state 130 std::shared_ptr<MWAWGraphicEncoderInternal::State> m_state; 131 }; 132 133 #endif 134 135 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab: 136