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);
27 
29  {
30  librevenge::RVNGInputStream *image;
32  };
33  typedef std::map<unsigned, ImageStreamData> ImageDataMap_t;
34 
35  struct ImageData
36  {
37  unsigned dataId;
38  unsigned width;
39  unsigned height;
40  };
41  typedef std::map<unsigned, ImageData> ImageMap_t;
42 
43 public:
44  explicit LRFCollector(librevenge::RVNGTextInterface *document);
45  ~LRFCollector();
46 
47  void startDocument();
48  void endDocument();
49 
50  void openPage(unsigned pageAtrID, const LRFAttributes &attributes);
51  void closePage();
52 
53  void openBlock(unsigned atrID, const LRFAttributes &attributes);
54  void closeBlock();
55 
56  void openTextBlock(unsigned atrID, const LRFAttributes &attributes);
57  void closeTextBlock();
58 
59  void openParagraph(unsigned atrID, const LRFAttributes &attributes);
60  void closeParagraph();
61 
62  void collectText(const std::string &text, const LRFAttributes &attributes);
63  void insertLineBreak();
64 
65  void insertImage(unsigned id);
66 
68 
69  void collectBookAttributes(const LRFAttributes &attributes);
70  void collectTextAttributes(unsigned id, const LRFAttributes &attributes);
71  void collectBlockAttributes(unsigned id, const LRFAttributes &attributes);
72  void collectPageAttributes(unsigned id, const LRFAttributes &attributes);
73  void collectParagraphAttributes(unsigned id, const LRFAttributes &attributes);
74 
75  void collectImage(unsigned id, unsigned dataId, unsigned width, unsigned height);
76  void collectImageData(unsigned id, LRFImageType type, librevenge::RVNGInputStream *image);
77 
78  void setDPI(double dpi);
79 
80 private:
81  void collectAttributes(unsigned id, const LRFAttributes &attributes, LRFAttributeMap_t &attributeMap);
82  void openBlock(unsigned atrID, const LRFAttributes &attributes, const LRFAttributeMap_t *attributeMap);
83 
84 private:
90  librevenge::RVNGTextInterface *const m_document;
91  std::stack<LRFAttributes> m_currentAttributes;
94  double m_dpi;
96 };
97 
98 }
99 
100 #endif // LRFCOLLECTOR_H_INCLUDED
101 
102 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
EBOOKDocument::Type type
Definition: EBOOKDocument.cpp:328
XMLTreeNodePtr_t document
Definition: EBOOKHTMLParser.cpp:169
RVNGPropertyList metadata
Definition: EBOOKOPFParser.cpp:63
Definition: LRFCollector.h:23
std::map< unsigned, ImageData > ImageMap_t
Definition: LRFCollector.h:41
void openPage(unsigned pageAtrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:343
void closeBlock()
Definition: LRFCollector.cpp:360
LRFAttributeMap_t m_paragraphAttributeMap
Definition: LRFCollector.h:89
void collectMetadata(const LRFMetadata &metadata)
Definition: LRFCollector.cpp:413
~LRFCollector()
Definition: LRFCollector.cpp:325
std::stack< LRFAttributes > m_currentAttributes
Definition: LRFCollector.h:91
void collectText(const std::string &text, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:399
void insertImage(unsigned id)
Definition: LRFCollector.cpp:468
void insertLineBreak()
Definition: LRFCollector.cpp:408
void startDocument()
Definition: LRFCollector.cpp:331
void collectAttributes(unsigned id, const LRFAttributes &attributes, LRFAttributeMap_t &attributeMap)
Definition: LRFCollector.cpp:555
void collectTextAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:428
void collectParagraphAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:443
void collectImageData(unsigned id, LRFImageType type, librevenge::RVNGInputStream *image)
Definition: LRFCollector.cpp:543
void collectBookAttributes(const LRFAttributes &attributes)
Definition: LRFCollector.cpp:423
librevenge::RVNGTextInterface *const m_document
Definition: LRFCollector.h:90
void closeTextBlock()
Definition: LRFCollector.cpp:371
double m_dpi
Definition: LRFCollector.h:94
void openTextBlock(unsigned atrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:365
void setDPI(double dpi)
Definition: LRFCollector.cpp:583
void closeParagraph()
Definition: LRFCollector.cpp:393
void endDocument()
Definition: LRFCollector.cpp:337
void closePage()
Definition: LRFCollector.cpp:349
LRFAttributeMap_t m_blockAttributeMap
Definition: LRFCollector.h:87
LRFAttributes m_bookAttributes
Definition: LRFCollector.h:85
ImageMap_t m_imageMap
Definition: LRFCollector.h:93
LRFCollector(const LRFCollector &other)
bool m_firstParaInBlock
Definition: LRFCollector.h:95
void openBlock(unsigned atrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:355
void collectImage(unsigned id, unsigned dataId, unsigned width, unsigned height)
Definition: LRFCollector.cpp:448
void collectBlockAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:433
ImageDataMap_t m_imageDataMap
Definition: LRFCollector.h:92
std::map< unsigned, ImageStreamData > ImageDataMap_t
Definition: LRFCollector.h:33
void collectPageAttributes(unsigned id, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:438
void openParagraph(unsigned atrID, const LRFAttributes &attributes)
Definition: LRFCollector.cpp:376
LRFAttributeMap_t m_textAttributeMap
Definition: LRFCollector.h:86
LRFAttributeMap_t m_pageAttributeMap
Definition: LRFCollector.h:88
LRFCollector & operator=(const LRFCollector &other)
@ width
Definition: EBOOKHTMLToken.h:267
@ text
Definition: EBOOKHTMLToken.h:259
@ height
Definition: EBOOKHTMLToken.h:200
@ image
Definition: FB2Token.h:62
Definition: CHMParser.cpp:21
std::map< unsigned, LRFAttributes > LRFAttributeMap_t
Definition: LRFTypes.h:142
LRFImageType
Definition: LRFTypes.h:23
Definition: LRFTypes.h:109
Definition: LRFCollector.h:36
unsigned width
Definition: LRFCollector.h:38
unsigned dataId
Definition: LRFCollector.h:37
unsigned height
Definition: LRFCollector.h:39
Definition: LRFCollector.h:29
LRFImageType type
Definition: LRFCollector.h:31
librevenge::RVNGInputStream * image
Definition: LRFCollector.h:30
Definition: LRFTypes.h:80

Generated for libe-book by doxygen 1.9.1