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 
21 namespace libcdr
22 {
23 
24 class CDRCollector;
25 
26 class CDRParser : protected CommonParser
27 {
28 public:
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 
34 private:
35  CDRParser();
36  CDRParser(const CDRParser &);
37  CDRParser &operator=(const CDRParser &);
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 
98  const std::vector<std::unique_ptr<librevenge::RVNGInputStream>> &m_externalStreams;
99 
100  std::map<unsigned, CDRFont> m_fonts;
101  std::map<unsigned, CDRFillStyle> m_fillStyles;
102  std::map<unsigned, CDRLineStyle> m_lineStyles;
103  std::map<unsigned, CDRPath> m_arrows;
104 
105  unsigned m_version;
106  unsigned m_waldoOutlId;
107  unsigned m_waldoFillId;
108 
109 };
110 
111 } // namespace libcdr
112 
113 #endif // __CDRPARSER_H__
114 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
bool _redirectX6Chunk(librevenge::RVNGInputStream **input, unsigned &length)
Definition: CDRParser.cpp:2421
Definition: CommonParser.h:27
~CDRParser() override
Definition: CDRParser.cpp:164
void readLineAndCurve(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1378
void readFlags(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2182
void readFont(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2505
void readMcfg(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2190
void readUidr(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2494
void readLoda(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2084
void readWaldoBmpf(librevenge::RVNGInputStream *input, unsigned id)
Definition: CDRParser.cpp:2347
void readEllipse(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1278
void readPolygonCoords(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:2220
void readVersion(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2410
unsigned m_waldoOutlId
Definition: CDRParser.h:106
bool parseRecord(librevenge::RVNGInputStream *input, const std::vector< unsigned > &blockLengths=std::vector< unsigned >(), unsigned level=0)
Definition: CDRParser.cpp:506
void readFild(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1756
void readBmpf(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2336
unsigned m_version
Definition: CDRParser.h:105
void readIccd(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2446
void readArtisticText(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3380
double readRectCoord(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:682
void readTxsm16(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3003
bool parseWaldoStructure(librevenge::RVNGInputStream *input, std::stack< WaldoRecordType1 > &waldoStack, const std::map< unsigned, WaldoRecordType1 > &records1, std::map< unsigned, WaldoRecordInfo > &records2)
Definition: CDRParser.cpp:342
unsigned m_waldoFillId
Definition: CDRParser.h:107
void readOpacity(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2326
std::map< unsigned, CDRFont > m_fonts
Definition: CDRParser.h:100
void readWaldoBmp(librevenge::RVNGInputStream *input, unsigned length, unsigned id)
Definition: CDRParser.cpp:2272
void readStyd(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3275
void readWaldoFill(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1569
void readWaldoTrfd(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:414
void readVpat(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2480
void readDisp(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1335
Definition: CDRCollector.h:24
void readRecord(unsigned fourCC, unsigned length, librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:600
std::map< unsigned, CDRFillStyle > m_fillStyles
Definition: CDRParser.h:101
void readWaldoRecord(librevenge::RVNGInputStream *input, const WaldoRecordInfo &info)
Definition: CDRParser.cpp:388
std::map< unsigned, CDRPath > m_arrows
Definition: CDRParser.h:103
void readPpdt(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2370
void readTxsm6(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3108
void readTxsm(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2829
Definition: CDRTypes.h:269
void readParagraphText(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3387
void readFtil(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2395
void readArrw(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1432
void readWaldoOutl(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1536
void readPath(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1403
void readStlt(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2553
Definition: CDRParser.h:26
void readSpnd(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2472
void readTrfd(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1663
CDRParser & operator=(const CDRParser &)
CDRColor readColor(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:689
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:291
std::map< unsigned, CDRLineStyle > m_lineStyles
Definition: CDRParser.h:102
void readTxsm5(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3182
void readOutl(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2023
Definition: CDRTypes.h:53
void readWaldoLoda(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:454
void readPageSize(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:2265
void readPolygonTransform(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:2246
bool parseRecords(librevenge::RVNGInputStream *input, const std::vector< unsigned > &blockLengths=std::vector< unsigned >(), unsigned level=0)
Definition: CDRParser.cpp:491
void readBitmap(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1468
void readRectangle(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1162
bool parseWaldo(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:169
void readBBox(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2461
void _readX6StyleString(librevenge::RVNGInputStream *input, unsigned length, CDRStyle &style)
Definition: CDRParser.cpp:3395
void readBmp(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2291
Definition: CDRTypes.h:137
void readUdta(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3256
Definition: CDRCollector.h:61
const std::vector< std::unique_ptr< librevenge::RVNGInputStream > > & m_externalStreams
Definition: CDRParser.h:98

Generated for libcdr by doxygen 1.8.13