BBeBCollector.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 BBEBCOLLECTOR_H_INCLUDED
11 #define BBEBCOLLECTOR_H_INCLUDED
12 
13 #include <string>
14 #include <stack>
15 
16 #include "BBeBTypes.h"
17 #include "libebook_utils.h"
18 
19 namespace libebook
20 {
21 
23 {
24  // -Weffc++
25  BBeBCollector(const BBeBCollector &other);
26  BBeBCollector &operator=(const BBeBCollector &other);
27 
29  {
31 
34  };
35  typedef std::map<unsigned, ImageStreamData> ImageDataMap_t;
36 
37  struct ImageData
38  {
39  unsigned dataId;
40  unsigned width;
41  unsigned height;
42  };
43  typedef std::map<unsigned, ImageData> ImageMap_t;
44 
45 public:
46  explicit BBeBCollector(librevenge::RVNGTextInterface *document);
48 
49  void startDocument();
50  void endDocument();
51 
52  void openPage(unsigned pageAtrID, const BBeBAttributes &attributes);
53  void closePage();
54 
55  void openBlock(unsigned atrID, const BBeBAttributes &attributes);
56  void closeBlock();
57 
58  void openTextBlock(unsigned atrID, const BBeBAttributes &attributes);
59  void closeTextBlock();
60 
61  void openParagraph(unsigned atrID, const BBeBAttributes &attributes);
62  void closeParagraph();
63 
64  void collectText(const std::string &text, const BBeBAttributes &attributes);
65  void insertLineBreak();
66 
67  void insertImage(unsigned id);
68 
70 
71  void collectBookAttributes(const BBeBAttributes &attributes);
72  void collectTextAttributes(unsigned id, const BBeBAttributes &attributes);
73  void collectBlockAttributes(unsigned id, const BBeBAttributes &attributes);
74  void collectPageAttributes(unsigned id, const BBeBAttributes &attributes);
75  void collectParagraphAttributes(unsigned id, const BBeBAttributes &attributes);
76 
77  void collectImage(unsigned id, unsigned dataId, unsigned width, unsigned height);
79 
80  void setDPI(double dpi);
81 
82 private:
83  void collectAttributes(unsigned id, const BBeBAttributes &attributes, BBeBAttributeMap_t &attributeMap);
84  void openBlock(unsigned atrID, const BBeBAttributes &attributes, const BBeBAttributeMap_t *attributeMap);
85 
86 private:
92  librevenge::RVNGTextInterface *const m_document;
93  std::stack<BBeBAttributes> m_currentAttributes;
96  double m_dpi;
98 };
99 
100 }
101 
102 #endif // BBEBCOLLECTOR_H_INCLUDED
103 
104 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
libebook::BBeBAttributes::fontFacename
boost::optional< std::string > fontFacename
Definition: BBeBTypes.h:117
libebook::BBEB_EMPTY_LINE_POSITION_AFTER
@ BBEB_EMPTY_LINE_POSITION_AFTER
Definition: BBeBTypes.h:35
libebook::BBeBCollector::m_paragraphAttributeMap
BBeBAttributeMap_t m_paragraphAttributeMap
Definition: BBeBCollector.h:91
mimetype
string mimetype
Definition: EBOOKOPFParser.cpp:50
libebook::EBOOKHTMLToken::background
@ background
Definition: EBOOKHTMLToken.h:167
libebook::EBOOKHTMLToken::color
@ color
Definition: EBOOKHTMLToken.h:181
libebook::BBeBCollector::collectImage
void collectImage(unsigned id, unsigned dataId, unsigned width, unsigned height)
Definition: BBeBCollector.cpp:455
libebook::BBEB_EMPTY_LINE_POSITION_UNKNOWN
@ BBEB_EMPTY_LINE_POSITION_UNKNOWN
Definition: BBeBTypes.h:33
libebook::BBeBAttributes::emptyLine
boost::optional< BBeBEmptyLine > emptyLine
Definition: BBeBTypes.h:134
libebook::BBeBCollector::m_firstParaInBlock
bool m_firstParaInBlock
Definition: BBeBCollector.h:97
libebook::BBeBCollector::setDPI
void setDPI(double dpi)
Definition: BBeBCollector.cpp:590
base
mspack_file base
Definition: HTMLHelpStream.cpp:62
libebook::BBeBCollector::m_dpi
double m_dpi
Definition: BBeBCollector.h:96
libebook::BBeBCollector::openPage
void openPage(unsigned pageAtrID, const BBeBAttributes &attributes)
Definition: BBeBCollector.cpp:350
libebook::BBeBCollector::closeParagraph
void closeParagraph()
Definition: BBeBCollector.cpp:400
libebook::BBeBEmptyLineMode
BBeBEmptyLineMode
Definition: BBeBTypes.h:38
libebook::EBOOKHTMLToken::height
@ height
Definition: EBOOKHTMLToken.h:198
libebook::BBeBCollector::ImageMap_t
std::map< unsigned, ImageData > ImageMap_t
Definition: BBeBCollector.h:43
libebook::RVNGInputStreamPtr_t
std::shared_ptr< librevenge::RVNGInputStream > RVNGInputStreamPtr_t
Definition: libebook_utils.h:54
libebook::BBeBAttributes::fontEscapement
boost::optional< unsigned > fontEscapement
Definition: BBeBTypes.h:114
libebook::BBeBCollector::m_currentAttributes
std::stack< BBeBAttributes > m_currentAttributes
Definition: BBeBCollector.h:93
libebook::BBeBAttributes::fontOrientation
boost::optional< unsigned > fontOrientation
Definition: BBeBTypes.h:115
libebook::BBeBAttributes::topMargin
boost::optional< unsigned > topMargin
Definition: BBeBTypes.h:137
libebook::BBEB_EMPTY_LINE_MODE_DOUBLE
@ BBEB_EMPTY_LINE_MODE_DOUBLE
Definition: BBeBTypes.h:43
libebook::BBeBCollector::closeTextBlock
void closeTextBlock()
Definition: BBeBCollector.cpp:378
libebook::BBEB_EMPTY_LINE_MODE_DASHED
@ BBEB_EMPTY_LINE_MODE_DASHED
Definition: BBeBTypes.h:42
libebook::BBeBCollector
Definition: BBeBCollector.h:22
libebook::BBeBCollector::collectParagraphAttributes
void collectParagraphAttributes(unsigned id, const BBeBAttributes &attributes)
Definition: BBeBCollector.cpp:450
libebook::BBeBCollector::operator=
BBeBCollector & operator=(const BBeBCollector &other)
libebook::BBeBCollector::insertLineBreak
void insertLineBreak()
Definition: BBeBCollector.cpp:415
libebook::BBeBAttributes::topSkip
boost::optional< unsigned > topSkip
Definition: BBeBTypes.h:136
libebook::BBeBAttributes::fontWidth
boost::optional< unsigned > fontWidth
Definition: BBeBTypes.h:113
libebook::BBeBCollector::closePage
void closePage()
Definition: BBeBCollector.cpp:356
libebook::BBeBCollector::collectText
void collectText(const std::string &text, const BBeBAttributes &attributes)
Definition: BBeBCollector.cpp:406
libebook::BBeBCollector::collectImageData
void collectImageData(unsigned id, BBeBImageType type, const RVNGInputStreamPtr_t &image)
Definition: BBeBCollector.cpp:550
libebook::BBEB_ALIGN_START
@ BBEB_ALIGN_START
Definition: BBeBTypes.h:49
libebook::BBeBCollector::openBlock
void openBlock(unsigned atrID, const BBeBAttributes &attributes)
Definition: BBeBCollector.cpp:362
libebook::EBOOKHTMLToken::get
@ get
Definition: EBOOKHTMLToken.h:283
libebook
Definition: BBeBCollector.cpp:18
libebook::BBeBAttributes::italic
bool italic
Definition: BBeBTypes.h:130
libebook::BBeBColor
Definition: BBeBTypes.h:88
value
qi::rule< Iterator, AttrValue_t, qi::space_type > value
Definition: TealDocParser.cpp:231
libebook::BBeBAttributes::locationX
boost::optional< unsigned > locationX
Definition: BBeBTypes.h:128
libebook::BBeBAttributes::width
boost::optional< unsigned > width
Definition: BBeBTypes.h:127
libebook::BBeBAttributes
Definition: BBeBTypes.h:108
libebook::BBeBColor::r
unsigned char r
Definition: BBeBTypes.h:94
libebook::BBeBCollector::closeBlock
void closeBlock()
Definition: BBeBCollector.cpp:367
libebook_utils.h
libebook::BBeBCollector::m_imageMap
ImageMap_t m_imageMap
Definition: BBeBCollector.h:95
libebook::BBeBAttributes::sub
bool sub
Definition: BBeBTypes.h:132
text
qi::rule< Iterator, AttrValue_t, qi::space_type > text
Definition: TealDocParser.cpp:232
libebook::BBeBCollector::m_textAttributeMap
BBeBAttributeMap_t m_textAttributeMap
Definition: BBeBCollector.h:88
libebook::BBeBAttributes::baseLineSkip
boost::optional< unsigned > baseLineSkip
Definition: BBeBTypes.h:122
libebook::BBeBCollector::m_document
librevenge::RVNGTextInterface *const m_document
Definition: BBeBCollector.h:92
libebook::BBeBCollector::m_pageAttributeMap
BBeBAttributeMap_t m_pageAttributeMap
Definition: BBeBCollector.h:90
libebook::BBeBAttributes::lineSpace
boost::optional< unsigned > lineSpace
Definition: BBeBTypes.h:123
libebook::BBeBColor::b
unsigned char b
Definition: BBeBTypes.h:96
libebook::EBOOKHTMLToken::a
@ a
Definition: EBOOKHTMLToken.h:32
libebook::BBeBCollector::openTextBlock
void openTextBlock(unsigned atrID, const BBeBAttributes &attributes)
Definition: BBeBCollector.cpp:372
libebook::readNBytes
const unsigned char * readNBytes(librevenge::RVNGInputStream *const input, const unsigned long numBytes)
Definition: libebook_utils.cpp:105
libebook::BBeBColor::g
unsigned char g
Definition: BBeBTypes.h:95
libebook::BBEB_IMAGE_TYPE_GIF
@ BBEB_IMAGE_TYPE_GIF
Definition: BBeBTypes.h:28
libebook::BBeBAttributes::parIndent
boost::optional< unsigned > parIndent
Definition: BBeBTypes.h:124
libebook::BBeBAttributes::textColor
boost::optional< BBeBColor > textColor
Definition: BBeBTypes.h:118
libebook::BBeBAttributes::fontWeight
boost::optional< unsigned > fontWeight
Definition: BBeBTypes.h:116
libebook::BBeBAttributes::oddSideMargin
boost::optional< unsigned > oddSideMargin
Definition: BBeBTypes.h:138
libebook::BBEB_IMAGE_TYPE_BMP
@ BBEB_IMAGE_TYPE_BMP
Definition: BBeBTypes.h:27
libebook::BBeBCollector::m_blockAttributeMap
BBeBAttributeMap_t m_blockAttributeMap
Definition: BBeBCollector.h:89
libebook::BBeBColor::a
unsigned char a
Definition: BBeBTypes.h:97
libebook::EBOOKHTMLToken::id
@ id
Definition: EBOOKHTMLToken.h:203
libebook::BBEB_IMAGE_TYPE_JPEG
@ BBEB_IMAGE_TYPE_JPEG
Definition: BBeBTypes.h:25
libebook::BBeBAttributes::letterSpace
boost::optional< unsigned > letterSpace
Definition: BBeBTypes.h:121
data
MSPackFileData * data
Definition: HTMLHelpStream.cpp:63
libebook::BBEB_IMAGE_TYPE_PNG
@ BBEB_IMAGE_TYPE_PNG
Definition: BBeBTypes.h:26
BBeBTypes.h
libebook::BBeBCollector::startDocument
void startDocument()
Definition: BBeBCollector.cpp:338
document
XMLTreeNodePtr_t document
Definition: EBOOKHTMLParser.cpp:163
libebook::BBeBAttributes::heading
bool heading
Definition: BBeBTypes.h:133
libebook::BBeBCollector::ImageData::height
unsigned height
Definition: BBeBCollector.h:41
libebook::BBeBCollector::ImageStreamData::ImageStreamData
ImageStreamData()
Definition: BBeBCollector.cpp:313
libebook::FictionBook2Token::image
@ image
Definition: FictionBook2Token.h:60
metadata
RVNGPropertyList metadata
Definition: EBOOKOPFParser.cpp:63
libebook::BBeBAttributes::textBgColor
boost::optional< BBeBColor > textBgColor
Definition: BBeBTypes.h:119
BBeBCollector.h
str
const char * str
Definition: EBOOKHTMLParser.cpp:46
libebook::BBeBCollector::collectAttributes
void collectAttributes(unsigned id, const BBeBAttributes &attributes, BBeBAttributeMap_t &attributeMap)
Definition: BBeBCollector.cpp:562
mode
hubbub_quirks_mode mode
Definition: EBOOKHTMLParser.cpp:164
libebook::BBeBAttributes::align
boost::optional< BBeBAlign > align
Definition: BBeBTypes.h:135
libebook::BBeBAttributes::parSkip
boost::optional< unsigned > parSkip
Definition: BBeBTypes.h:125
libebook::BBeBCollector::ImageData
Definition: BBeBCollector.h:37
libebook::BBeBImageType
BBeBImageType
Definition: BBeBTypes.h:22
libebook::BBeBCollector::collectPageAttributes
void collectPageAttributes(unsigned id, const BBeBAttributes &attributes)
Definition: BBeBCollector.cpp:445
libebook::BBeBCollector::ImageStreamData::image
RVNGInputStreamPtr_t image
Definition: BBeBCollector.h:32
libebook::BBeBAttributes::fontSize
boost::optional< unsigned > fontSize
Definition: BBeBTypes.h:112
name
string name
Definition: HTMLHelpStream.cpp:80
libebook::BBeBAttributes::sup
bool sup
Definition: BBeBTypes.h:131
libebook::BBeBCollector::openParagraph
void openParagraph(unsigned atrID, const BBeBAttributes &attributes)
Definition: BBeBCollector.cpp:383
libebook::BBeBCollector::ImageStreamData
Definition: BBeBCollector.h:28
libebook::BBEB_EMPTY_LINE_MODE_NONE
@ BBEB_EMPTY_LINE_MODE_NONE
Definition: BBeBTypes.h:40
libebook::BBEB_IMAGE_TYPE_UNKNOWN
@ BBEB_IMAGE_TYPE_UNKNOWN
Definition: BBeBTypes.h:24
libebook::BBeBCollector::collectBookAttributes
void collectBookAttributes(const BBeBAttributes &attributes)
Definition: BBeBCollector.cpp:430
libebook::BBeBCollector::endDocument
void endDocument()
Definition: BBeBCollector.cpp:344
libebook::BBeBAttributeMap_t
std::map< unsigned, BBeBAttributes > BBeBAttributeMap_t
Definition: BBeBTypes.h:142
libebook::BBeBCollector::~BBeBCollector
~BBeBCollector()
Definition: BBeBCollector.cpp:334
libebook::BBEB_ALIGN_END
@ BBEB_ALIGN_END
Definition: BBeBTypes.h:50
libebook::BBEB_EMPTY_LINE_POSITION_BEFORE
@ BBEB_EMPTY_LINE_POSITION_BEFORE
Definition: BBeBTypes.h:34
libebook::BBeBCollector::insertImage
void insertImage(unsigned id)
Definition: BBeBCollector.cpp:475
libebook::BBeBCollector::ImageStreamData::type
BBeBImageType type
Definition: BBeBCollector.h:33
libebook::BBEB_ALIGN_CENTER
@ BBEB_ALIGN_CENTER
Definition: BBeBTypes.h:51
libebook::BBeBAttributes::locationY
boost::optional< unsigned > locationY
Definition: BBeBTypes.h:129
EBOOK_DEBUG_MSG
#define EBOOK_DEBUG_MSG(M)
Definition: libebook_utils.h:44
libebook::BBeBAttributes::height
boost::optional< unsigned > height
Definition: BBeBTypes.h:126
libebook::BBeBAttributes::wordSpace
boost::optional< unsigned > wordSpace
Definition: BBeBTypes.h:120
libebook::BBEB_EMPTY_LINE_MODE_SOLID
@ BBEB_EMPTY_LINE_MODE_SOLID
Definition: BBeBTypes.h:41
type
EBOOKDocument::Type type
Definition: EBOOKDocument.cpp:325
libebook::BBeBCollector::collectTextAttributes
void collectTextAttributes(unsigned id, const BBeBAttributes &attributes)
Definition: BBeBCollector.cpp:435
libebook::BBeBCollector::BBeBCollector
BBeBCollector(const BBeBCollector &other)
libebook::BBeBCollector::ImageData::width
unsigned width
Definition: BBeBCollector.h:40
libebook::EBOOKHTMLToken::b
@ b
Definition: EBOOKHTMLToken.h:40
libebook::BBeBCollector::m_imageDataMap
ImageDataMap_t m_imageDataMap
Definition: BBeBCollector.h:94
libebook::BBeBCollector::m_bookAttributes
BBeBAttributes m_bookAttributes
Definition: BBeBCollector.h:87
libebook::BBeBMetadata
Definition: BBeBTypes.h:79
libebook::BBeBCollector::collectBlockAttributes
void collectBlockAttributes(unsigned id, const BBeBAttributes &attributes)
Definition: BBeBCollector.cpp:440
libebook::EBOOKHTMLToken::width
@ width
Definition: EBOOKHTMLToken.h:265
libebook::BBeBCollector::collectMetadata
void collectMetadata(const BBeBMetadata &metadata)
Definition: BBeBCollector.cpp:420
libebook::BBeBCollector::ImageData::dataId
unsigned dataId
Definition: BBeBCollector.h:39
libebook::BBeBCollector::ImageDataMap_t
std::map< unsigned, ImageStreamData > ImageDataMap_t
Definition: BBeBCollector.h:35
libebook::BBEB_EMPTY_LINE_MODE_DOTTED
@ BBEB_EMPTY_LINE_MODE_DOTTED
Definition: BBeBTypes.h:44
length
unsigned length
Definition: SoftBookParser.cpp:73
libebook::BBeBAttributes::evenSideMargin
boost::optional< unsigned > evenSideMargin
Definition: BBeBTypes.h:139

Generated for libe-book by doxygen 1.8.17