PalmDocParser.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 PALMDOCPARSER_H_INCLUDED
11#define PALMDOCPARSER_H_INCLUDED
12
13#include <memory>
14#include <vector>
15
16#include <librevenge/librevenge.h>
17
18#include "PDBParser.h"
19
20
21namespace libebook
22{
23
24class EBOOKCharsetConverter;
25
27{
28 // disable copying
31
32public:
33 explicit PalmDocParser(librevenge::RVNGInputStream *input, librevenge::RVNGTextInterface *document = nullptr);
34 ~PalmDocParser() override;
35
36 static bool checkType(unsigned type, unsigned creator);
37
38private:
39 void readAppInfoRecord(librevenge::RVNGInputStream *record) override;
40 void readSortInfoRecord(librevenge::RVNGInputStream *record) override;
41 void readIndexRecord(librevenge::RVNGInputStream *record) override;
42 void readDataRecord(librevenge::RVNGInputStream *record, bool last) override;
43
44 void createConverter(const std::vector<char> &text);
45
46 void openDocument();
47 void closeDocument();
48 void handleText(const std::vector<char> &text);
49 void openParagraph();
50 void closeParagraph(bool continuing = false);
51 void handleCharacters(const char *text);
52
53private:
55 unsigned m_textLength;
56 unsigned m_recordCount;
57 unsigned m_recordSize;
58 unsigned m_read;
59
71
72 std::unique_ptr<EBOOKCharsetConverter> m_converter;
73};
74
75}
76
77#endif // PALMDOCPARSER_H_INCLUDED
78
79/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
EBOOKDocument::Type type
Definition: EBOOKDocument.cpp:325
XMLTreeNodePtr_t document
Definition: EBOOKHTMLParser.cpp:163
qi::rule< Iterator, AttrValue_t, qi::space_type > text
Definition: TealDocParser.cpp:232
Definition: PDBParser.h:26
Definition: PalmDocParser.h:27
void closeDocument()
Definition: PalmDocParser.cpp:158
bool m_openedDocument
Definition: PalmDocParser.h:70
~PalmDocParser() override
Definition: PalmDocParser.cpp:43
unsigned m_textLength
Definition: PalmDocParser.h:55
bool m_compressed
Definition: PalmDocParser.h:54
void readDataRecord(librevenge::RVNGInputStream *record, bool last) override
Definition: PalmDocParser.cpp:80
bool m_openedParagraph
Signalize that a paragraph is split at record break.
Definition: PalmDocParser.h:69
void readIndexRecord(librevenge::RVNGInputStream *record) override
Definition: PalmDocParser.cpp:62
void createConverter(const std::vector< char > &text)
Definition: PalmDocParser.cpp:122
void handleText(const std::vector< char > &text)
Definition: PalmDocParser.cpp:170
unsigned m_read
Definition: PalmDocParser.h:58
PalmDocParser & operator=(const PalmDocParser &)
void closeParagraph(bool continuing=false)
Definition: PalmDocParser.cpp:205
void openDocument()
Definition: PalmDocParser.cpp:134
void readAppInfoRecord(librevenge::RVNGInputStream *record) override
Definition: PalmDocParser.cpp:52
static bool checkType(unsigned type, unsigned creator)
Definition: PalmDocParser.cpp:47
void openParagraph()
Definition: PalmDocParser.cpp:198
unsigned m_recordSize
Definition: PalmDocParser.h:57
PalmDocParser(const PalmDocParser &)
void readSortInfoRecord(librevenge::RVNGInputStream *record) override
Definition: PalmDocParser.cpp:57
std::unique_ptr< EBOOKCharsetConverter > m_converter
Definition: PalmDocParser.h:72
unsigned m_recordCount
Definition: PalmDocParser.h:56
void handleCharacters(const char *text)
Definition: PalmDocParser.cpp:213
@ input
Definition: EBOOKHTMLToken.h:89
@ creator
Definition: EBOOKOPFToken.h:50
Definition: BBeBCollector.cpp:19

Generated for libe-book by doxygen 1.9.3