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: */