LRFCollector.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* libe-book
3  * Version: MPL 2.0 / LGPLv2.1+
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  * Alternatively, the contents of this file may be used under the terms
10  * of the GNU Lesser General Public License Version 2.1 or later
11  * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
12  * applicable instead of those above.
13  *
14  * For further information visit http://libebook.sourceforge.net
15  */
16 
17 #ifndef LRFCOLLECTOR_H_INCLUDED
18 #define LRFCOLLECTOR_H_INCLUDED
19 
20 #include <string>
21 #include <stack>
22 
23 #include "LRFTypes.h"
24 
25 class WPXDocumentInterface;
26 
27 namespace libebook
28 {
29 
31 {
32  // -Weffc++
33  LRFCollector(const LRFCollector &other);
34  LRFCollector &operator=(const LRFCollector &other);
35 
36  struct ImageData
37  {
38  WPXInputStream *image;
40  };
41 
42  typedef std::map<unsigned, ImageData> ImageMap_t;
43 
44 public:
45  explicit LRFCollector(WPXDocumentInterface *document);
46  ~LRFCollector();
47 
48  void startDocument();
49  void endDocument();
50 
51  void openPage(unsigned pageAtrID, const LRFAttributes &attributes);
52  void closePage();
53 
54  void openBlock(unsigned atrID, const LRFAttributes &attributes);
55  void closeBlock();
56 
57  void openTextBlock(unsigned atrID, const LRFAttributes &attributes);
58  void closeTextBlock();
59 
60  void openParagraph(unsigned atrID, const LRFAttributes &attributes);
61  void closeParagraph();
62 
63  void collectText(const std::string &text, const LRFAttributes &attributes);
64  void insertLineBreak();
65 
66  void collectMetadata(const LRFMetadata &metadata);
67 
68  void collectBookAttributes(const LRFAttributes &attributes);
69  void collectTextAttributes(unsigned id, const LRFAttributes &attributes);
70  void collectBlockAttributes(unsigned id, const LRFAttributes &attributes);
71  void collectPageAttributes(unsigned id, const LRFAttributes &attributes);
72  void collectParagraphAttributes(unsigned id, const LRFAttributes &attributes);
73 
74  void collectImage(unsigned id);
75  void collectImageData(unsigned id, ImageType type, WPXInputStream *image);
76 
77 private:
78  void collectAttributes(unsigned id, const LRFAttributes &attributes, LRFAttributeMap_t &attributeMap);
79  void openBlock(unsigned atrID, const LRFAttributes &attributes, const LRFAttributeMap_t *attributeMap);
80 
81 private:
87  WPXDocumentInterface *const m_document;
88  std::stack<LRFAttributes> m_currentAttributes;
90 };
91 
92 }
93 
94 #endif // LRFCOLLECTOR_H_INCLUDED
95 
96 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
LRFAttributes m_bookAttributes
Definition: LRFCollector.h:82
Definition: LRFTypes.h:82
void openParagraph(unsigned atrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:203
Definition: FB2Token.h:66
void openBlock(unsigned atrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:183
std::stack< LRFAttributes > m_currentAttributes
Definition: LRFCollector.h:88
~LRFCollector()
Definition: LRFCollector.cpp:153
LRFAttributeMap_t m_textAttributeMap
Definition: LRFCollector.h:83
void insertLineBreak()
Definition: LRFCollector.cpp:224
ImageMap_t m_imageMap
Definition: LRFCollector.h:89
void collectImage(unsigned id)
Definition: LRFCollector.cpp:264
void closeTextBlock()
Definition: LRFCollector.cpp:198
WPXDocumentInterface *const m_document
Definition: LRFCollector.h:87
LRFCollector & operator=(const LRFCollector &other)
void openTextBlock(unsigned atrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:193
LRFAttributeMap_t m_blockAttributeMap
Definition: LRFCollector.h:84
LRFAttributeMap_t m_pageAttributeMap
Definition: LRFCollector.h:85
void collectPageAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:254
LRFCollector(const LRFCollector &other)
ImageType type
Definition: LRFCollector.h:39
void endDocument()
Definition: LRFCollector.cpp:165
void collectBookAttributes(const LRFAttributes &attributes)
Definition: LRFCollector.cpp:239
LRFAttributeMap_t m_paragraphAttributeMap
Definition: LRFCollector.h:86
Definition: LRFCollector.h:30
void collectBlockAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:249
void collectImageData(unsigned id, ImageType type, WPXInputStream *image)
Definition: LRFCollector.cpp:310
void closePage()
Definition: LRFCollector.cpp:177
void collectMetadata(const LRFMetadata &metadata)
Definition: LRFCollector.cpp:229
void collectTextAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:244
WPXInputStream * image
Definition: LRFCollector.h:38
Definition: FB2Token.h:124
ImageType
Definition: LRFTypes.h:29
void collectAttributes(unsigned id, const LRFAttributes &attributes, LRFAttributeMap_t &attributeMap)
Definition: LRFCollector.cpp:322
void openPage(unsigned pageAtrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:171
void closeParagraph()
Definition: LRFCollector.cpp:209
Definition: LRFTypes.h:62
void startDocument()
Definition: LRFCollector.cpp:159
std::map< unsigned, ImageData > ImageMap_t
Definition: LRFCollector.h:42
void closeBlock()
Definition: LRFCollector.cpp:188
Definition: LRFCollector.h:36
void collectParagraphAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:259
void collectText(const std::string &text, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:215
std::map< unsigned, LRFAttributes > LRFAttributeMap_t
Definition: LRFTypes.h:109

Generated for libe-book by doxygen 1.8.5