EPUBTextElements.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_EPUBTEXTELEMENTS_H
00011 #define INCLUDED_EPUBTEXTELEMENTS_H
00012 
00013 #include <deque>
00014 #include <memory>
00015 
00016 #include <librevenge/librevenge.h>
00017 
00018 namespace libepubgen
00019 {
00020 
00021 class EPUBTextElement;
00022 
00023 class EPUBTextElements
00024 {
00025   // disable copying
00026   EPUBTextElements(const EPUBTextElements &);
00027   EPUBTextElements &operator=(const EPUBTextElements &);
00028 
00029 public:
00030   EPUBTextElements();
00031   ~EPUBTextElements();
00032 
00033   void append(const EPUBTextElements &elements);
00034 
00035   void write(librevenge::RVNGTextInterface *iface) const;
00036 
00037   void addCloseComment();
00038   void addCloseEndnote();
00039   void addCloseFooter();
00040   void addCloseFootnote();
00041   void addCloseFrame();
00042   void addCloseHeader();
00043   void addCloseLink();
00044   void addCloseListElement();
00045   void addCloseOrderedListLevel();
00046   void addCloseParagraph();
00047   void addCloseSpan();
00048   void addCloseTable();
00049   void addCloseTableCell();
00050   void addCloseTableRow();
00051   void addCloseUnorderedListLevel();
00052   void addInsertBinaryObject(const librevenge::RVNGPropertyList &propList);
00053   void addInsertCoveredTableCell(const librevenge::RVNGPropertyList &propList);
00054   void addInsertEquation(const librevenge::RVNGPropertyList &propList);
00055   void addInsertField(const librevenge::RVNGPropertyList &propList);
00056   void addInsertLineBreak();
00057   void addInsertSpace();
00058   void addInsertTab();
00059   void addInsertText(const librevenge::RVNGString &text);
00060   void addOpenComment(const librevenge::RVNGPropertyList &propList);
00061   void addOpenEndnote(const librevenge::RVNGPropertyList &propList);
00062   void addOpenFooter(const librevenge::RVNGPropertyList &propList);
00063   void addOpenFootnote(const librevenge::RVNGPropertyList &propList);
00064   void addOpenFrame(const librevenge::RVNGPropertyList &propList);
00065   void addOpenHeader(const librevenge::RVNGPropertyList &propList);
00066   void addOpenLink(const librevenge::RVNGPropertyList &propList);
00067   void addOpenListElement(const librevenge::RVNGPropertyList &propList);
00068   void addOpenOrderedListLevel(const librevenge::RVNGPropertyList &propList);
00069   void addOpenParagraph(const librevenge::RVNGPropertyList &propList);
00070   void addOpenSpan(const librevenge::RVNGPropertyList &propList);
00071   void addOpenTable(const librevenge::RVNGPropertyList &propList);
00072   void addOpenTableCell(const librevenge::RVNGPropertyList &propList);
00073   void addOpenTableRow(const librevenge::RVNGPropertyList &propList);
00074   void addOpenUnorderedListLevel(const librevenge::RVNGPropertyList &propList);
00075 
00076   bool empty() const
00077   {
00078     return m_elements.empty();
00079   }
00080 
00081 private:
00082   std::deque<std::unique_ptr<EPUBTextElement>> m_elements;
00083 };
00084 
00085 }
00086 
00087 #endif // INCLUDED_EPUBTEXTELEMENTS_H
00088 
00089 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */