EPUBHTMLGenerator.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 libepubgen 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 INCLUDED_EPUBHTMLGENERATOR_H
00011 #define INCLUDED_EPUBHTMLGENERATOR_H
00012 
00013 #include <memory>
00014 
00015 #include <librevenge/librevenge.h>
00016 
00017 #include "EPUBXMLSink.h"
00018 
00019 namespace libepubgen
00020 {
00021 
00022 struct EPUBHTMLGeneratorImpl;
00023 class EPUBImageManager;
00024 class EPUBFontManager;
00025 class EPUBListStyleManager;
00026 class EPUBSpanStyleManager;
00027 class EPUBParagraphStyleManager;
00028 class EPUBTableStyleManager;
00029 class EPUBPath;
00030 class EPUBXMLSink;
00031 
00032 class EPUBHTMLGenerator : public librevenge::RVNGTextInterface
00033 {
00034 public:
00035   EPUBHTMLGenerator(EPUBXMLSink &document, EPUBImageManager &imageManager, EPUBFontManager &fontManager, EPUBListStyleManager &listStyleManager, EPUBParagraphStyleManager &paragraphStyleManager, EPUBSpanStyleManager &spanStyleManager, EPUBTableStyleManager &tableStyleManager, const EPUBPath &path, const EPUBPath &stylesheetPath, EPUBStylesMethod stylesMethod, EPUBLayoutMethod layoutMethod, int version);
00036   ~EPUBHTMLGenerator() override;
00037 
00038   void setDocumentMetaData(const librevenge::RVNGPropertyList &propList) override;
00039 
00040   void startDocument(const librevenge::RVNGPropertyList &propList) override;
00041   void endDocument() override;
00042 
00043   void defineEmbeddedFont(const librevenge::RVNGPropertyList &propList) override;
00044 
00045   void definePageStyle(const librevenge::RVNGPropertyList &) override;
00046   void openPageSpan(const librevenge::RVNGPropertyList &propList) override;
00047   void closePageSpan() override;
00048   void openHeader(const librevenge::RVNGPropertyList &propList) override;
00049   void closeHeader() override;
00050   void openFooter(const librevenge::RVNGPropertyList &propList) override;
00051   void closeFooter() override;
00052 
00053   void defineSectionStyle(const librevenge::RVNGPropertyList &) override;
00054   void openSection(const librevenge::RVNGPropertyList &propList) override;
00055   void closeSection() override;
00056 
00057   void defineParagraphStyle(const librevenge::RVNGPropertyList &) override;
00058   void openParagraph(const librevenge::RVNGPropertyList &propList) override;
00059   void closeParagraph() override;
00060 
00061   void defineCharacterStyle(const librevenge::RVNGPropertyList &) override;
00062   void openSpan(const librevenge::RVNGPropertyList &propList) override;
00063   void closeSpan() override;
00064 
00065   void openLink(const librevenge::RVNGPropertyList &propList) override;
00066   void closeLink() override;
00067 
00068   void insertTab() override;
00069   void insertText(const librevenge::RVNGString &text) override;
00070   void insertSpace() override;
00071   void insertLineBreak() override;
00072   void insertField(const librevenge::RVNGPropertyList &propList) override;
00073 
00074   void openOrderedListLevel(const librevenge::RVNGPropertyList &propList) override;
00075   void openUnorderedListLevel(const librevenge::RVNGPropertyList &propList) override;
00076   void closeOrderedListLevel() override;
00077   void closeUnorderedListLevel() override;
00078   void openListElement(const librevenge::RVNGPropertyList &propList) override;
00079   void closeListElement() override;
00080 
00081   void openFootnote(const librevenge::RVNGPropertyList &propList) override;
00082   void closeFootnote() override;
00083   void openEndnote(const librevenge::RVNGPropertyList &propList) override;
00084   void closeEndnote() override;
00085   void openComment(const librevenge::RVNGPropertyList &propList) override;
00086   void closeComment() override;
00087   void openTextBox(const librevenge::RVNGPropertyList &propList) override;
00088   void closeTextBox() override;
00089 
00090   void openTable(const librevenge::RVNGPropertyList &propList) override;
00091   void openTableRow(const librevenge::RVNGPropertyList &propList) override;
00092   void closeTableRow() override;
00093   void openTableCell(const librevenge::RVNGPropertyList &propList) override;
00094   void closeTableCell() override;
00095   void insertCoveredTableCell(const librevenge::RVNGPropertyList &propList) override;
00096   void closeTable() override;
00097 
00098   void openFrame(const librevenge::RVNGPropertyList &propList) override;
00099   void closeFrame() override;
00100 
00101   void openGroup(const librevenge::RVNGPropertyList &propList) override;
00102   void closeGroup() override;
00103 
00104   void defineGraphicStyle(const librevenge::RVNGPropertyList &propList) override;
00105   void drawRectangle(const librevenge::RVNGPropertyList &propList) override;
00106   void drawEllipse(const librevenge::RVNGPropertyList &propList) override;
00107   void drawPolygon(const librevenge::RVNGPropertyList &propList) override;
00108   void drawPolyline(const librevenge::RVNGPropertyList &propList) override;
00109   void drawPath(const librevenge::RVNGPropertyList &propList) override;
00110   void drawConnector(const librevenge::RVNGPropertyList &propList) override;
00111 
00112   void insertBinaryObject(const librevenge::RVNGPropertyList &propList) override;
00113   void insertEquation(const librevenge::RVNGPropertyList &propList) override;
00114 
00116   void getPageProperties(librevenge::RVNGPropertyList &propList) const;
00118   void setPageProperties(const librevenge::RVNGPropertyList &propList);
00119 
00120 private:
00121   EPUBXMLSink &openPopup();
00122   void closePopup(EPUBXMLSink &main);
00123 
00124   std::unique_ptr<EPUBHTMLGeneratorImpl> m_impl;
00125 
00126   // Unimplemented to prevent compiler from creating crasher ones
00127   EPUBHTMLGenerator(const EPUBHTMLGenerator &);
00128   EPUBHTMLGenerator &operator=(const EPUBHTMLGenerator &);
00129 };
00130 
00131 typedef std::shared_ptr<EPUBHTMLGenerator> EPUBHTMLGeneratorPtr_t;
00132 
00133 }
00134 
00135 #endif /* EPUBHTMLGENERATOR_H */
00136 
00137 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */