1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* 3 * This file is part of the libetonyek project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 */ 9 10 #ifndef IWATEXT_H_INCLUDED 11 #define IWATEXT_H_INCLUDED 12 13 #include <functional> 14 #include <map> 15 #include <set> 16 #include <string> 17 18 #include <librevenge/librevenge.h> 19 20 #include "IWORKEnum.h" 21 #include "IWORKStyle_fwd.h" 22 23 namespace libetonyek 24 { 25 26 class IWORKLanguageManager; 27 class IWORKOutputElements; 28 class IWORKText; 29 30 class IWAText 31 { 32 public: 33 IWAText(const std::string &text, IWORKLanguageManager &langManager); 34 35 void setPageMasters(const std::map<unsigned, IWORKStylePtr_t> &pageMasters); 36 void setSections(const std::map<unsigned, IWORKStylePtr_t> §ions); 37 void setParagraphs(const std::map<unsigned, IWORKStylePtr_t> ¶s); 38 void setSpans(const std::map<unsigned, IWORKStylePtr_t> &spans); 39 40 void setLanguages(const std::map<unsigned, std::string> &langs); 41 void setLinks(const std::map<unsigned, std::string> &links); 42 void setListLevels(const std::map<unsigned, unsigned> &levels); 43 void setLists(const std::map<unsigned, IWORKStylePtr_t> &lists); 44 45 void setAttachments(const std::multimap<unsigned, std::function<void(unsigned, bool &)> > &attachments); 46 47 void parse(IWORKText &collector, const std::function<void(unsigned, IWORKStylePtr_t)> &openPageSpan=nullptr); 48 49 private: 50 const librevenge::RVNGString m_text; 51 IWORKLanguageManager &m_langManager; 52 53 std::map<unsigned, IWORKStylePtr_t> m_pageMasters; 54 std::map<unsigned, IWORKStylePtr_t> m_sections; 55 std::map<unsigned, IWORKStylePtr_t> m_paras; 56 std::map<unsigned, IWORKStylePtr_t> m_spans; 57 58 std::map<unsigned, std::string> m_langs; 59 std::map<unsigned, std::string> m_links; 60 std::map<unsigned, IWORKStylePtr_t> m_lists; 61 std::map<unsigned, unsigned> m_listLevels; 62 63 std::multimap<unsigned, std::function<void(unsigned, bool &)> > m_attachments; 64 }; 65 66 } 67 68 #endif 69 70 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */ 71