FictionBook2Collector.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 FICTIONBOOK2COLLECTOR_H_INCLUDED
11 #define FICTIONBOOK2COLLECTOR_H_INCLUDED
12 
13 #include <deque>
14 #include <string>
15 #include <unordered_map>
16 
17 #include "FictionBook2Style.h"
18 
19 namespace libebook
20 {
21 
23 {
24 public:
25  struct Binary
26  {
27  Binary(const std::string &contentType, const std::string &base64Data);
28 
29  const std::string m_contentType;
30  const std::string m_data;
31  };
32 
33  struct Span
34  {
35  explicit Span(const FictionBook2Style &style);
36 
38  std::string m_text;
39  };
40 
41  struct Paragraph
42  {
43  explicit Paragraph(const FictionBook2BlockFormat &format);
44 
46  std::deque<Span> m_spans;
47  };
48 
49  struct Note
50  {
51  Note();
52 
53  std::string m_title;
54  std::deque<Paragraph> m_paras;
55  };
56 
57  typedef std::unordered_map<std::string, Binary> BinaryMap_t;
58  typedef std::unordered_map<std::string, Note> NoteMap_t;
59 
60 public:
61  virtual ~FictionBook2Collector() = 0;
62 
63  virtual void defineMetadataEntry(const char *name, const char *value) = 0;
64  virtual void openMetadataEntry(const char *name) = 0;
65  virtual void closeMetadataEntry() = 0;
66 
67  virtual void defineID(const char *id) = 0;
68 
69  virtual void openPageSpan() = 0;
70  virtual void closePageSpan() = 0;
71 
72  virtual void openBlock() = 0;
73  virtual void closeBlock() = 0;
74 
75  virtual void openParagraph(const FictionBook2BlockFormat &format) = 0;
76  virtual void closeParagraph() = 0;
77 
78  virtual void openSpan(const FictionBook2Style &style) = 0;
79  virtual void closeSpan() = 0;
80 
81  virtual void insertText(const char *text) = 0;
82 
83  virtual void openTable(const FictionBook2BlockFormat &format) = 0;
84  virtual void closeTable() = 0;
85 
86  virtual void openTableRow(const FictionBook2BlockFormat &format) = 0;
87  virtual void closeTableRow() = 0;
88 
89  virtual void openTableCell(int rowspan, int colspan) = 0;
90  virtual void closeTableCell() = 0;
91  virtual void insertCoveredTableCell() = 0;
92 
93  virtual void insertFootnote(const char *id) = 0;
94 
95  virtual void insertBitmap(const char *id) = 0;
96  virtual void insertBitmapData(const char *contentType, const char *base64Data) = 0;
97 };
98 
99 }
100 
101 #endif // FICTIONBOOK2COLLECTOR_H_INCLUDED
102 
103 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
virtual void insertCoveredTableCell()=0
virtual void defineID(const char *id)=0
virtual void insertBitmap(const char *id)=0
virtual void openTableRow(const FictionBook2BlockFormat &format)=0
virtual void openTable(const FictionBook2BlockFormat &format)=0
Definition: FictionBook2Style.h:55
Definition: EBOOKHTMLToken.h:183
Paragraph(const FictionBook2BlockFormat &format)
Definition: FictionBook2Collector.cpp:27
virtual void openMetadataEntry(const char *name)=0
virtual void insertBitmapData(const char *contentType, const char *base64Data)=0
std::string m_text
Definition: FictionBook2Collector.h:38
const std::string m_data
Definition: FictionBook2Collector.h:30
virtual void openParagraph(const FictionBook2BlockFormat &format)=0
std::unordered_map< std::string, Note > NoteMap_t
Definition: FictionBook2Collector.h:58
virtual void closeMetadataEntry()=0
const FictionBook2BlockFormat m_format
Definition: FictionBook2Collector.h:45
Note()
Definition: FictionBook2Collector.cpp:33
Definition: FictionBook2Style.h:35
virtual void openTableCell(int rowspan, int colspan)=0
virtual void openSpan(const FictionBook2Style &style)=0
Definition: EBOOKHTMLToken.h:242
Definition: FictionBook2Collector.h:41
std::string m_title
Definition: FictionBook2Collector.h:53
const FictionBook2Style m_style
Definition: FictionBook2Collector.h:37
const char * name
Definition: EBOOKHTMLToken.cpp:44
std::deque< Span > m_spans
Definition: FictionBook2Collector.h:46
virtual void defineMetadataEntry(const char *name, const char *value)=0
std::deque< Paragraph > m_paras
Definition: FictionBook2Collector.h:54
virtual void insertText(const char *text)=0
virtual ~FictionBook2Collector()=0
Definition: FictionBook2Collector.cpp:39
Definition: EBOOKOPFToken.h:54
Definition: FictionBook2Collector.h:33
Binary(const std::string &contentType, const std::string &base64Data)
Definition: FictionBook2Collector.cpp:15
Definition: FictionBook2Collector.h:22
Definition: BBeBCollector.cpp:18
qi::rule< Iterator, AttrValue_t, qi::space_type > value
Definition: TealDocParser.cpp:231
const std::string m_contentType
Definition: FictionBook2Collector.h:29
Definition: FictionBook2Collector.h:25
Definition: FictionBook2Collector.h:49
virtual void insertFootnote(const char *id)=0
optional< Style > style
Definition: TealDocParser.cpp:105
qi::rule< Iterator, AttrValue_t, qi::space_type > text
Definition: TealDocParser.cpp:232
std::unordered_map< std::string, Binary > BinaryMap_t
Definition: FictionBook2Collector.h:57
Span(const FictionBook2Style &style)
Definition: FictionBook2Collector.cpp:21

Generated for libe-book by doxygen 1.8.14