CDRParser.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 libcdr 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 __CDRPARSER_H__
11#define __CDRPARSER_H__
12
13#include <memory>
14#include <vector>
15#include <map>
16#include <stack>
17#include <librevenge-stream/librevenge-stream.h>
18#include "CDRTypes.h"
19#include "CommonParser.h"
20
21namespace libcdr
22{
23
24class CDRCollector;
25
26class CDRParser : protected CommonParser
27{
28public:
29 explicit CDRParser(const std::vector<std::unique_ptr<librevenge::RVNGInputStream>> &externalStreams, CDRCollector *collector);
30 ~CDRParser() override;
31 bool parseRecords(librevenge::RVNGInputStream *input, const std::vector<unsigned> &blockLengths = std::vector<unsigned>(), unsigned level = 0);
32 bool parseWaldo(librevenge::RVNGInputStream *input);
33
34private:
38 bool parseWaldoStructure(librevenge::RVNGInputStream *input, std::stack<WaldoRecordType1> &waldoStack,
39 const std::map<unsigned, WaldoRecordType1> &records1,
40 std::map<unsigned, WaldoRecordInfo> &records2);
41 bool gatherWaldoInformation(librevenge::RVNGInputStream *input, std::vector<WaldoRecordInfo> &records, std::map<unsigned, WaldoRecordInfo> &records2,
42 std::map<unsigned, WaldoRecordInfo> &records3, std::map<unsigned, WaldoRecordInfo> &records4,
43 std::map<unsigned, WaldoRecordInfo> &records6, std::map<unsigned, WaldoRecordInfo> &records7,
44 std::map<unsigned, WaldoRecordInfo> &records8, std::map<unsigned, WaldoRecordInfo> recordsOther);
45 void readWaldoRecord(librevenge::RVNGInputStream *input, const WaldoRecordInfo &info);
46 bool parseRecord(librevenge::RVNGInputStream *input, const std::vector<unsigned> &blockLengths = std::vector<unsigned>(), unsigned level = 0);
47 void readRecord(unsigned fourCC, unsigned length, librevenge::RVNGInputStream *input);
48 double readRectCoord(librevenge::RVNGInputStream *input);
49 CDRColor readColor(librevenge::RVNGInputStream *input);
50
51 void readRectangle(librevenge::RVNGInputStream *input);
52 void readEllipse(librevenge::RVNGInputStream *input);
53 void readLineAndCurve(librevenge::RVNGInputStream *input);
54 void readBitmap(librevenge::RVNGInputStream *input);
55 void readPageSize(librevenge::RVNGInputStream *input);
56 void readWaldoBmp(librevenge::RVNGInputStream *input, unsigned length, unsigned id);
57 void readWaldoBmpf(librevenge::RVNGInputStream *input, unsigned id);
58 void readWaldoTrfd(librevenge::RVNGInputStream *input);
59 void readWaldoOutl(librevenge::RVNGInputStream *input);
60 void readWaldoFill(librevenge::RVNGInputStream *input);
61 void readWaldoLoda(librevenge::RVNGInputStream *input, unsigned length);
62 void readOpacity(librevenge::RVNGInputStream *input, unsigned length);
63 void readTrfd(librevenge::RVNGInputStream *input, unsigned length);
64 void readFild(librevenge::RVNGInputStream *input, unsigned length);
65 void readOutl(librevenge::RVNGInputStream *input, unsigned length);
66 void readLoda(librevenge::RVNGInputStream *input, unsigned length);
67 void readFlags(librevenge::RVNGInputStream *input, unsigned length);
68 void readMcfg(librevenge::RVNGInputStream *input, unsigned length);
69 void readPath(librevenge::RVNGInputStream *input);
70 void readArrw(librevenge::RVNGInputStream *input, unsigned length);
71 void readPolygonCoords(librevenge::RVNGInputStream *input);
72 void readPolygonTransform(librevenge::RVNGInputStream *input);
73 void readBmp(librevenge::RVNGInputStream *input, unsigned length);
74 void readBmpf(librevenge::RVNGInputStream *input, unsigned length);
75 void readPpdt(librevenge::RVNGInputStream *input, unsigned length);
76 void readFtil(librevenge::RVNGInputStream *input, unsigned length);
77 void readDisp(librevenge::RVNGInputStream *input, unsigned length);
78 void readVersion(librevenge::RVNGInputStream *input, unsigned length);
79 void readIccd(librevenge::RVNGInputStream *input, unsigned length);
80 void readBBox(librevenge::RVNGInputStream *input, unsigned length);
81 void readSpnd(librevenge::RVNGInputStream *input, unsigned length);
82 void readVpat(librevenge::RVNGInputStream *input, unsigned length);
83 void readUidr(librevenge::RVNGInputStream *input, unsigned length);
84 void readFont(librevenge::RVNGInputStream *input, unsigned length);
85 void readStlt(librevenge::RVNGInputStream *input, unsigned length);
86 void readStyd(librevenge::RVNGInputStream *input);
87 void readTxsm(librevenge::RVNGInputStream *input, unsigned length);
88 void readTxsm16(librevenge::RVNGInputStream *input);
89 void readTxsm6(librevenge::RVNGInputStream *input);
90 void readTxsm5(librevenge::RVNGInputStream *input);
91 void readUdta(librevenge::RVNGInputStream *input);
92 void readArtisticText(librevenge::RVNGInputStream *input);
93 void readParagraphText(librevenge::RVNGInputStream *input);
94
95 bool _redirectX6Chunk(librevenge::RVNGInputStream **input, unsigned &length);
96 void _readX6StyleString(librevenge::RVNGInputStream *input, unsigned length, CDRStyle &style);
97 void _skipX3Optional(librevenge::RVNGInputStream *input);
98 void _resolveColorPalette(CDRColor &color);
99
100 const std::vector<std::unique_ptr<librevenge::RVNGInputStream>> &m_externalStreams;
101
102 std::map<unsigned, CDRFont> m_fonts;
103 std::map<unsigned, CDRFillStyle> m_fillStyles;
104 std::map<unsigned, CDRLineStyle> m_lineStyles;
105 std::map<unsigned, CDRPath> m_arrows;
106
107 unsigned m_version;
110
111};
112
113} // namespace libcdr
114
115#endif // __CDRPARSER_H__
116/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition CDRCollector.h:62
Definition CDRParser.h:27
void readTxsm5(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:2897
const std::vector< std::unique_ptr< librevenge::RVNGInputStream > > & m_externalStreams
Definition CDRParser.h:100
void readTxsm16(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:2682
void _readX6StyleString(librevenge::RVNGInputStream *input, unsigned length, CDRStyle &style)
Definition CDRParser.cpp:3121
void readSpnd(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2112
void readWaldoRecord(librevenge::RVNGInputStream *input, const WaldoRecordInfo &info)
Definition CDRParser.cpp:463
void readPolygonCoords(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:1860
void readIccd(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2086
bool parseRecords(librevenge::RVNGInputStream *input, const std::vector< unsigned > &blockLengths=std::vector< unsigned >(), unsigned level=0)
Definition CDRParser.cpp:566
void readMcfg(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:1830
void readFild(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:1409
void readWaldoLoda(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:529
void readWaldoBmp(librevenge::RVNGInputStream *input, unsigned length, unsigned id)
Definition CDRParser.cpp:1912
void readArtisticText(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:3106
std::map< unsigned, CDRFont > m_fonts
Definition CDRParser.h:102
void readWaldoFill(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:1222
void readBmp(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:1931
void readUdta(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:2982
void readVpat(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2120
void readParagraphText(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:3113
void readStlt(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2193
std::map< unsigned, CDRPath > m_arrows
Definition CDRParser.h:105
void _resolveColorPalette(CDRColor &color)
Definition CDRParser.cpp:3248
std::map< unsigned, CDRLineStyle > m_lineStyles
Definition CDRParser.h:104
bool _redirectX6Chunk(librevenge::RVNGInputStream **input, unsigned &length)
Definition CDRParser.cpp:2061
void readRecord(unsigned fourCC, unsigned length, librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:675
void readFlags(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:1822
unsigned m_waldoOutlId
Definition CDRParser.h:108
void readPath(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:1056
void readPageSize(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:1905
void _skipX3Optional(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:3216
unsigned m_waldoFillId
Definition CDRParser.h:109
void readBitmap(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:1121
void readRectangle(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:815
void readWaldoBmpf(librevenge::RVNGInputStream *input, unsigned id)
Definition CDRParser.cpp:1987
void readTxsm6(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:2803
bool parseWaldo(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:244
void readWaldoOutl(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:1189
void readUidr(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2134
void readEllipse(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:931
void readArrw(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:1085
bool parseWaldoStructure(librevenge::RVNGInputStream *input, std::stack< WaldoRecordType1 > &waldoStack, const std::map< unsigned, WaldoRecordType1 > &records1, std::map< unsigned, WaldoRecordInfo > &records2)
Definition CDRParser.cpp:417
~CDRParser() override
Definition CDRParser.cpp:239
CDRColor readColor(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:764
void readPolygonTransform(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:1886
void readPpdt(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2010
bool gatherWaldoInformation(librevenge::RVNGInputStream *input, std::vector< WaldoRecordInfo > &records, std::map< unsigned, WaldoRecordInfo > &records2, std::map< unsigned, WaldoRecordInfo > &records3, std::map< unsigned, WaldoRecordInfo > &records4, std::map< unsigned, WaldoRecordInfo > &records6, std::map< unsigned, WaldoRecordInfo > &records7, std::map< unsigned, WaldoRecordInfo > &records8, std::map< unsigned, WaldoRecordInfo > recordsOther)
Definition CDRParser.cpp:366
void readLineAndCurve(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:1031
unsigned m_version
Definition CDRParser.h:107
void readFtil(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2035
void readFont(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2145
std::map< unsigned, CDRFillStyle > m_fillStyles
Definition CDRParser.h:103
void readTxsm(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2469
CDRParser(const CDRParser &)
bool parseRecord(librevenge::RVNGInputStream *input, const std::vector< unsigned > &blockLengths=std::vector< unsigned >(), unsigned level=0)
Definition CDRParser.cpp:581
void readLoda(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:1724
void readWaldoTrfd(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:489
void readStyd(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:3001
void readTrfd(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:1316
CDRParser & operator=(const CDRParser &)
void readVersion(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2050
void readOpacity(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:1966
void readOutl(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:1663
void readBBox(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:2101
void readDisp(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:988
void readBmpf(librevenge::RVNGInputStream *input, unsigned length)
Definition CDRParser.cpp:1976
double readRectCoord(librevenge::RVNGInputStream *input)
Definition CDRParser.cpp:757
Definition CommonParser.h:28
Definition CDRCollector.h:25
Definition CDRTypes.h:54
Definition CDRTypes.h:142
Definition CDRTypes.h:274

Generated for libcdr by doxygen 1.12.0