LRFCollector.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is part of the libe-book 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 LRFCOLLECTOR_H_INCLUDED
11 #define LRFCOLLECTOR_H_INCLUDED
12 
13 #include <string>
14 #include <stack>
15 
16 #include "LRFTypes.h"
17 
18 
19 namespace libebook
20 {
21 
23 {
24  // -Weffc++
25  LRFCollector(const LRFCollector &other);
26  LRFCollector &operator=(const LRFCollector &other);
27 
28  struct ImageData
29  {
30  librevenge::RVNGInputStream *image;
32  };
33 
34  typedef std::map<unsigned, ImageData> ImageMap_t;
35 
36 public:
37  explicit LRFCollector(librevenge::RVNGTextInterface *document);
38  ~LRFCollector();
39 
40  void startDocument();
41  void endDocument();
42 
43  void openPage(unsigned pageAtrID, const LRFAttributes &attributes);
44  void closePage();
45 
46  void openBlock(unsigned atrID, const LRFAttributes &attributes);
47  void closeBlock();
48 
49  void openTextBlock(unsigned atrID, const LRFAttributes &attributes);
50  void closeTextBlock();
51 
52  void openParagraph(unsigned atrID, const LRFAttributes &attributes);
53  void closeParagraph();
54 
55  void collectText(const std::string &text, const LRFAttributes &attributes);
56  void insertLineBreak();
57 
59 
60  void collectBookAttributes(const LRFAttributes &attributes);
61  void collectTextAttributes(unsigned id, const LRFAttributes &attributes);
62  void collectBlockAttributes(unsigned id, const LRFAttributes &attributes);
63  void collectPageAttributes(unsigned id, const LRFAttributes &attributes);
64  void collectParagraphAttributes(unsigned id, const LRFAttributes &attributes);
65 
66  void collectImage(unsigned id);
67  void collectImageData(unsigned id, ImageType type, librevenge::RVNGInputStream *image);
68 
69 private:
70  void collectAttributes(unsigned id, const LRFAttributes &attributes, LRFAttributeMap_t &attributeMap);
71  void openBlock(unsigned atrID, const LRFAttributes &attributes, const LRFAttributeMap_t *attributeMap);
72 
73 private:
79  librevenge::RVNGTextInterface *const m_document;
80  std::stack<LRFAttributes> m_currentAttributes;
81  ImageMap_t m_imageMap;
82 };
83 
84 }
85 
86 #endif // LRFCOLLECTOR_H_INCLUDED
87 
88 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
LRFAttributes m_bookAttributes
Definition: LRFCollector.h:74
Definition: LRFTypes.h:75
void openParagraph(unsigned atrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:193
void openBlock(unsigned atrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:173
std::stack< LRFAttributes > m_currentAttributes
Definition: LRFCollector.h:80
~LRFCollector()
Definition: LRFCollector.cpp:143
LRFAttributeMap_t m_textAttributeMap
Definition: LRFCollector.h:75
void insertLineBreak()
Definition: LRFCollector.cpp:214
ImageMap_t m_imageMap
Definition: LRFCollector.h:81
void collectImage(unsigned id)
Definition: LRFCollector.cpp:254
void closeTextBlock()
Definition: LRFCollector.cpp:188
LRFCollector & operator=(const LRFCollector &other)
void openTextBlock(unsigned atrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:183
LRFAttributeMap_t m_blockAttributeMap
Definition: LRFCollector.h:76
LRFAttributeMap_t m_pageAttributeMap
Definition: LRFCollector.h:77
void collectPageAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:244
LRFCollector(const LRFCollector &other)
ImageType type
Definition: LRFCollector.h:31
void endDocument()
Definition: LRFCollector.cpp:155
Definition: FB2Token.h:62
EBOOKDocument::Type type
Definition: EBOOKDocument.cpp:317
void collectBookAttributes(const LRFAttributes &attributes)
Definition: LRFCollector.cpp:229
LRFAttributeMap_t m_paragraphAttributeMap
Definition: LRFCollector.h:78
Definition: LRFCollector.h:22
void collectBlockAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:239
Definition: EBOOKHTMLToken.h:259
RVNGPropertyList metadata
Definition: EBOOKOPFParser.cpp:63
void closePage()
Definition: LRFCollector.cpp:167
void collectMetadata(const LRFMetadata &metadata)
Definition: LRFCollector.cpp:219
void collectTextAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:234
librevenge::RVNGInputStream * image
Definition: LRFCollector.h:30
ImageType
Definition: LRFTypes.h:22
void collectImageData(unsigned id, ImageType type, librevenge::RVNGInputStream *image)
Definition: LRFCollector.cpp:301
void collectAttributes(unsigned id, const LRFAttributes &attributes, LRFAttributeMap_t &attributeMap)
Definition: LRFCollector.cpp:313
XMLTreeNodePtr_t document
Definition: EBOOKHTMLParser.cpp:169
Definition: CHMParser.cpp:20
void openPage(unsigned pageAtrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:161
void closeParagraph()
Definition: LRFCollector.cpp:199
Definition: LRFTypes.h:55
void startDocument()
Definition: LRFCollector.cpp:149
std::map< unsigned, ImageData > ImageMap_t
Definition: LRFCollector.h:34
void closeBlock()
Definition: LRFCollector.cpp:178
librevenge::RVNGTextInterface *const m_document
Definition: LRFCollector.h:79
Definition: LRFCollector.h:28
void collectParagraphAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:249
void collectText(const std::string &text, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:205
std::map< unsigned, LRFAttributes > LRFAttributeMap_t
Definition: LRFTypes.h:102

Generated for libe-book by doxygen 1.8.8