BBeBParser.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 BBEBPARSER_H_INCLUDED
11#define BBEBPARSER_H_INCLUDED
12
13#include <vector>
14#include <map>
15#include <memory>
16
17#include "BBeBCollector.h"
18
19
20namespace libebook
21{
22
23struct BBeBHeader;
24
26{
27 // disable copying
28 BBeBParser(const BBeBParser &other);
30
32 {
59 OBJECT_TYPE_TOC = 0x1e
60 };
61
63 {
64 unsigned offset;
65 unsigned size;
66 bool reading;
67 bool read;
68 };
69
70 typedef std::map<unsigned, BBeBIndexEntry> ObjectIndex_t;
71 typedef std::vector<unsigned> ToC_t;
72
73public:
74 BBeBParser(librevenge::RVNGInputStream *input, librevenge::RVNGTextInterface *document);
76
77 bool parse();
78
79 static bool isSupported(librevenge::RVNGInputStream *input);
80
81private:
82 void readHeader();
83 void readMetadata();
84 void readThumbnail();
85 void readObjectIndex();
86
87 void readObject(unsigned id, unsigned type = OBJECT_TYPE_UNSPECIFIED);
88
89 void readPageTreeObject(librevenge::RVNGInputStream *object);
90 void readPageObject(librevenge::RVNGInputStream *object);
91 void readFooterObject(librevenge::RVNGInputStream *object);
92 void readHeaderObject(librevenge::RVNGInputStream *object);
93 void readPageAtrObject(librevenge::RVNGInputStream *object, unsigned id);
94 void readBlockObject(librevenge::RVNGInputStream *object, unsigned id);
95 void readBlockAtrObject(librevenge::RVNGInputStream *object, unsigned id);
96 void readMiniPageObject(librevenge::RVNGInputStream *object);
97 void readBlockListObject(librevenge::RVNGInputStream *object);
98 void readTextObject(librevenge::RVNGInputStream *object);
99 void readTextAtrObject(librevenge::RVNGInputStream *object, unsigned id);
100 void readImageObject(librevenge::RVNGInputStream *object, unsigned id);
101 void readCanvasObject(librevenge::RVNGInputStream *object);
102 void readParagraphAtrObject(librevenge::RVNGInputStream *object, unsigned id);
103 void readImageStreamObject(librevenge::RVNGInputStream *object, unsigned id);
104 void readImportObject(librevenge::RVNGInputStream *object);
105 void readButtonObject(librevenge::RVNGInputStream *object);
106 void readWindowObject(librevenge::RVNGInputStream *object);
107 void readPopUpWinObject(librevenge::RVNGInputStream *object);
108 void readSoundObject(librevenge::RVNGInputStream *object);
109 void readPlaneStreamObject(librevenge::RVNGInputStream *object);
110 void readFontObject(librevenge::RVNGInputStream *object);
111 void readObjectInfoObject(librevenge::RVNGInputStream *object);
112 void readBookAtrObject(librevenge::RVNGInputStream *object);
113 void readSimpleTextObject(librevenge::RVNGInputStream *object);
114 void readTOCObject(librevenge::RVNGInputStream *object);
115
116 void readToCStream(librevenge::RVNGInputStream *input);
117
118 bool readAttribute(unsigned tag, librevenge::RVNGInputStream *input, BBeBAttributes &attributes);
119
120 void skipUnhandledTag(unsigned tag, librevenge::RVNGInputStream *input, const char *objectType);
121
122 bool isObjectRead(unsigned id) const;
123
124 double toInches(unsigned px) const;
125
126private:
128 librevenge::RVNGInputStream *m_input;
129 std::unique_ptr<BBeBHeader> m_header;
131 unsigned m_pageTree;
133};
134
135} // namespace libebook
136
137#endif // BBEBPARSER_H_INCLUDED
138/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
EBOOKDocument::Type type
Definition EBOOKDocument.cpp:325
XMLTreeNodePtr_t document
Definition EBOOKHTMLParser.cpp:163
qi::rule< Iterator, std::pair< int, Attributes_t >, qi::space_type > tag
Definition TealDocParser.cpp:229
Definition BBeBCollector.h:23
Definition BBeBParser.h:26
void readSimpleTextObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1119
void readMiniPageObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:749
void readImportObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1034
void readObjectInfoObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1083
unsigned m_pageTree
Definition BBeBParser.h:131
void skipUnhandledTag(unsigned tag, librevenge::RVNGInputStream *input, const char *objectType)
Definition BBeBParser.cpp:1392
void readToCStream(librevenge::RVNGInputStream *input)
Definition BBeBParser.cpp:1175
ObjectType
Definition BBeBParser.h:32
@ OBJECT_TYPE_PAGE_ATR
Definition BBeBParser.h:38
@ OBJECT_TYPE_MINI_PAGE
Definition BBeBParser.h:41
@ OBJECT_TYPE_SOUND
Definition BBeBParser.h:53
@ OBJECT_TYPE_PAGE_TREE
Definition BBeBParser.h:34
@ OBJECT_TYPE_CANVAS
Definition BBeBParser.h:46
@ OBJECT_TYPE_SSoftBookLE_TEXT
Definition BBeBParser.h:58
@ OBJECT_TYPE_OBJECT_INFO
Definition BBeBParser.h:56
@ OBJECT_TYPE_TEXT_ATR
Definition BBeBParser.h:44
@ OBJECT_TYPE_PARAGRAPH_ATR
Definition BBeBParser.h:47
@ OBJECT_TYPE_IMAGE_STREAM
Definition BBeBParser.h:48
@ OBJECT_TYPE_BUTTON
Definition BBeBParser.h:50
@ OBJECT_TYPE_IMAGE
Definition BBeBParser.h:45
@ OBJECT_TYPE_WINDOW
Definition BBeBParser.h:51
@ OBJECT_TYPE_FONT
Definition BBeBParser.h:55
@ OBJECT_TYPE_SoftBookORT
Definition BBeBParser.h:49
@ OBJECT_TYPE_TOC
Definition BBeBParser.h:59
@ OBJECT_TYPE_TEXT
Definition BBeBParser.h:43
@ OBJECT_TYPE_BLOCK_ATR
Definition BBeBParser.h:40
@ OBJECT_TYPE_PLANE_STREAM
Definition BBeBParser.h:54
@ OBJECT_TYPE_POP_UP_WIN
Definition BBeBParser.h:52
@ OBJECT_TYPE_FOOTER
Definition BBeBParser.h:37
@ OBJECT_TYPE_HEADER
Definition BBeBParser.h:36
@ OBJECT_TYPE_BLOCK
Definition BBeBParser.h:39
@ OBJECT_TYPE_BLOCK_LIST
Definition BBeBParser.h:42
@ OBJECT_TYPE_UNSPECIFIED
Definition BBeBParser.h:33
@ OBJECT_TYPE_PAGE
Definition BBeBParser.h:35
@ OBJECT_TYPE_BOOK_ATR
Definition BBeBParser.h:57
void readCanvasObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:955
void readWindowObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1048
void readBlockObject(librevenge::RVNGInputStream *object, unsigned id)
Definition BBeBParser.cpp:659
librevenge::RVNGInputStream * m_input
Definition BBeBParser.h:128
bool parse()
Definition BBeBParser.cpp:282
void readBlockAtrObject(librevenge::RVNGInputStream *object, unsigned id)
Definition BBeBParser.cpp:735
std::vector< unsigned > ToC_t
Definition BBeBParser.h:71
void readButtonObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1041
void readObject(unsigned id, unsigned type=OBJECT_TYPE_UNSPECIFIED)
Definition BBeBParser.cpp:382
void readPageObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:553
void readParagraphAtrObject(librevenge::RVNGInputStream *object, unsigned id)
Definition BBeBParser.cpp:962
void readHeader()
Definition BBeBParser.cpp:307
void readTextObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:763
void readPlaneStreamObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1069
void readTextAtrObject(librevenge::RVNGInputStream *object, unsigned id)
Definition BBeBParser.cpp:906
ObjectIndex_t m_objectIndex
Definition BBeBParser.h:130
double toInches(unsigned px) const
void readImageStreamObject(librevenge::RVNGInputStream *object, unsigned id)
Definition BBeBParser.cpp:976
~BBeBParser()
Definition BBeBParser.cpp:278
void readThumbnail()
Definition BBeBParser.cpp:361
BBeBCollector m_collector
Definition BBeBParser.h:127
bool readAttribute(unsigned tag, librevenge::RVNGInputStream *input, BBeBAttributes &attributes)
Definition BBeBParser.cpp:1205
void readFontObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1076
ToC_t m_toc
Definition BBeBParser.h:132
void readBookAtrObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1090
bool isObjectRead(unsigned id) const
Definition BBeBParser.cpp:1613
void readImageObject(librevenge::RVNGInputStream *object, unsigned id)
Definition BBeBParser.cpp:920
void readTOCObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1126
void readPopUpWinObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1055
void readFooterObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:631
void readBlockListObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:756
BBeBParser(const BBeBParser &other)
void readSoundObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:1062
std::unique_ptr< BBeBHeader > m_header
Definition BBeBParser.h:129
void readMetadata()
Definition BBeBParser.cpp:348
void readHeaderObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:638
void readObjectIndex()
Definition BBeBParser.cpp:366
static bool isSupported(librevenge::RVNGInputStream *input)
Definition BBeBParser.cpp:299
void readPageAtrObject(librevenge::RVNGInputStream *object, unsigned id)
Definition BBeBParser.cpp:645
BBeBParser & operator=(const BBeBParser &other)
std::map< unsigned, BBeBIndexEntry > ObjectIndex_t
Definition BBeBParser.h:70
void readPageTreeObject(librevenge::RVNGInputStream *object)
Definition BBeBParser.cpp:533
Definition BBeBCollector.cpp:19
Definition BBeBTypes.h:109
Definition BBeBParser.h:63
bool read
Definition BBeBParser.h:67
bool reading
Definition BBeBParser.h:66
unsigned size
Definition BBeBParser.h:65
unsigned offset
Definition BBeBParser.h:64

Generated for libe-book by doxygen 1.9.7