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 <stdio.h>
14 #include <iostream>
15 #include <vector>
16 #include <map>
17 #include <stack>
18 #include <librevenge-stream/librevenge-stream.h>
19 #include "CDRTypes.h"
20 #include "CommonParser.h"
21 
22 namespace libcdr
23 {
24 
25 class CDRCollector;
26 
27 class CDRParser : protected CommonParser
28 {
29 public:
30  explicit CDRParser(const std::vector<librevenge::RVNGInputStream *> &externalStreams, CDRCollector *collector);
31  virtual ~CDRParser();
32  bool parseRecords(librevenge::RVNGInputStream *input, const std::vector<unsigned> &blockLengths = std::vector<unsigned>(), unsigned level = 0);
33  bool parseWaldo(librevenge::RVNGInputStream *input);
34 
35 private:
36  CDRParser();
37  CDRParser(const CDRParser &);
38  CDRParser &operator=(const CDRParser &);
39  bool parseWaldoStructure(librevenge::RVNGInputStream *input, std::stack<WaldoRecordType1> &waldoStack,
40  const std::map<unsigned, WaldoRecordType1> &records1,
41  std::map<unsigned, WaldoRecordInfo> &records2);
42  bool gatherWaldoInformation(librevenge::RVNGInputStream *input, std::vector<WaldoRecordInfo> &records, std::map<unsigned, WaldoRecordInfo> &records2,
43  std::map<unsigned, WaldoRecordInfo> &records3, std::map<unsigned, WaldoRecordInfo> &records4,
44  std::map<unsigned, WaldoRecordInfo> &records6, std::map<unsigned, WaldoRecordInfo> &records7,
45  std::map<unsigned, WaldoRecordInfo> &records8, std::map<unsigned, WaldoRecordInfo> recordsOther);
46  void readWaldoRecord(librevenge::RVNGInputStream *input, const WaldoRecordInfo &info);
47  bool parseRecord(librevenge::RVNGInputStream *input, const std::vector<unsigned> &blockLengths = std::vector<unsigned>(), unsigned level = 0);
48  void readRecord(unsigned fourCC, unsigned length, librevenge::RVNGInputStream *input);
49  double readRectCoord(librevenge::RVNGInputStream *input);
50  CDRColor readColor(librevenge::RVNGInputStream *input);
51 
52  void readRectangle(librevenge::RVNGInputStream *input);
53  void readEllipse(librevenge::RVNGInputStream *input);
54  void readLineAndCurve(librevenge::RVNGInputStream *input);
55  void readBitmap(librevenge::RVNGInputStream *input);
56  void readPageSize(librevenge::RVNGInputStream *input);
57  void readWaldoBmp(librevenge::RVNGInputStream *input, unsigned length, unsigned id);
58  void readWaldoBmpf(librevenge::RVNGInputStream *input, unsigned id);
59  void readWaldoTrfd(librevenge::RVNGInputStream *input);
60  void readWaldoOutl(librevenge::RVNGInputStream *input);
61  void readWaldoFill(librevenge::RVNGInputStream *input);
62  void readWaldoLoda(librevenge::RVNGInputStream *input, unsigned length);
63  void readOpacity(librevenge::RVNGInputStream *input, unsigned length);
64  void readTrfd(librevenge::RVNGInputStream *input, unsigned length);
65  void readFild(librevenge::RVNGInputStream *input, unsigned length);
66  void readOutl(librevenge::RVNGInputStream *input, unsigned length);
67  void readLoda(librevenge::RVNGInputStream *input, unsigned length);
68  void readFlags(librevenge::RVNGInputStream *input, unsigned length);
69  void readMcfg(librevenge::RVNGInputStream *input, unsigned length);
70  void readPath(librevenge::RVNGInputStream *input);
71  void readArrw(librevenge::RVNGInputStream *input, unsigned length);
72  void readPolygonCoords(librevenge::RVNGInputStream *input);
73  void readPolygonTransform(librevenge::RVNGInputStream *input);
74  void readBmp(librevenge::RVNGInputStream *input, unsigned length);
75  void readBmpf(librevenge::RVNGInputStream *input, unsigned length);
76  void readPpdt(librevenge::RVNGInputStream *input, unsigned length);
77  void readFtil(librevenge::RVNGInputStream *input, unsigned length);
78  void readDisp(librevenge::RVNGInputStream *input, unsigned length);
79  void readVersion(librevenge::RVNGInputStream *input, unsigned length);
80  void readIccd(librevenge::RVNGInputStream *input, unsigned length);
81  void readBBox(librevenge::RVNGInputStream *input, unsigned length);
82  void readSpnd(librevenge::RVNGInputStream *input, unsigned length);
83  void readVpat(librevenge::RVNGInputStream *input, unsigned length);
84  void readUidr(librevenge::RVNGInputStream *input, unsigned length);
85  void readFont(librevenge::RVNGInputStream *input, unsigned length);
86  void readStlt(librevenge::RVNGInputStream *input, unsigned length);
87  void readStyd(librevenge::RVNGInputStream *input);
88  void readTxsm(librevenge::RVNGInputStream *input, unsigned length);
89  void readTxsm16(librevenge::RVNGInputStream *input);
90  void readTxsm6(librevenge::RVNGInputStream *input);
91  void readTxsm5(librevenge::RVNGInputStream *input);
92  void readUdta(librevenge::RVNGInputStream *input);
93  void readArtisticText(librevenge::RVNGInputStream *input);
94  void readParagraphText(librevenge::RVNGInputStream *input);
95 
96  bool _redirectX6Chunk(librevenge::RVNGInputStream **input, unsigned &length);
97  void _readX6StyleString(librevenge::RVNGInputStream *input, unsigned length, CDRCharacterStyle &style);
98 
99  std::vector<librevenge::RVNGInputStream *> m_externalStreams;
100 
101  std::map<unsigned, CDRFont> m_fonts;
102  std::map<unsigned, CDRFillStyle> m_fillStyles;
103  std::map<unsigned, CDRLineStyle> m_lineStyles;
104  std::map<unsigned, CDRPath> m_arrows;
105 
106  unsigned m_version;
107 
108 };
109 
110 } // namespace libcdr
111 
112 #endif // __CDRPARSER_H__
113 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
bool _redirectX6Chunk(librevenge::RVNGInputStream **input, unsigned &length)
Definition: CDRParser.cpp:2400
Definition: CommonParser.h:22
void readLineAndCurve(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1376
void readFlags(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2130
void readFont(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2484
virtual ~CDRParser()
Definition: CDRParser.cpp:160
void readMcfg(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2138
void readUidr(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2473
void readLoda(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2042
void readWaldoBmpf(librevenge::RVNGInputStream *input, unsigned id)
Definition: CDRParser.cpp:2331
void readEllipse(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1269
void readPolygonCoords(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:2168
void readVersion(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2389
bool parseRecord(librevenge::RVNGInputStream *input, const std::vector< unsigned > &blockLengths=std::vector< unsigned >(), unsigned level=0)
Definition: CDRParser.cpp:501
void readFild(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1719
void readBmpf(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2305
unsigned m_version
Definition: CDRParser.h:106
void readIccd(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2425
void readArtisticText(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3326
Definition: CDRTypes.h:136
double readRectCoord(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:677
void readTxsm16(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:2968
bool parseWaldoStructure(librevenge::RVNGInputStream *input, std::stack< WaldoRecordType1 > &waldoStack, const std::map< unsigned, WaldoRecordType1 > &records1, std::map< unsigned, WaldoRecordInfo > &records2)
Definition: CDRParser.cpp:338
void _readX6StyleString(librevenge::RVNGInputStream *input, unsigned length, CDRCharacterStyle &style)
Definition: CDRParser.cpp:3341
void readOpacity(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2295
std::map< unsigned, CDRFont > m_fonts
Definition: CDRParser.h:101
void readWaldoBmp(librevenge::RVNGInputStream *input, unsigned length, unsigned id)
Definition: CDRParser.cpp:2215
void readStyd(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3230
std::vector< librevenge::RVNGInputStream * > m_externalStreams
Definition: CDRParser.h:99
void readWaldoFill(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1540
void readWaldoTrfd(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:409
void readVpat(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2459
void readDisp(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1333
void readRecord(unsigned fourCC, unsigned length, librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:595
std::map< unsigned, CDRFillStyle > m_fillStyles
Definition: CDRParser.h:102
void readWaldoRecord(librevenge::RVNGInputStream *input, const WaldoRecordInfo &info)
Definition: CDRParser.cpp:383
std::map< unsigned, CDRPath > m_arrows
Definition: CDRParser.h:104
void readPpdt(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2354
void readTxsm6(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3071
void readTxsm(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2797
Definition: CDRTypes.h:255
void readParagraphText(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3333
void readFtil(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2374
void readArrw(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1417
void readWaldoOutl(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1508
void readPath(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1396
void readStlt(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2532
Definition: CDRParser.h:27
void readSpnd(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2451
void readTrfd(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1633
CDRParser & operator=(const CDRParser &)
CDRColor readColor(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:684
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:287
std::map< unsigned, CDRLineStyle > m_lineStyles
Definition: CDRParser.h:103
void readTxsm5(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3141
void readOutl(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1985
Definition: CDRTypes.h:52
void readWaldoLoda(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:449
void readPageSize(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:2208
void readPolygonTransform(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:2189
bool parseRecords(librevenge::RVNGInputStream *input, const std::vector< unsigned > &blockLengths=std::vector< unsigned >(), unsigned level=0)
Definition: CDRParser.cpp:486
void readBitmap(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1445
void readRectangle(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1157
bool parseWaldo(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:165
void readBBox(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2440
void readBmp(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2234
void readUdta(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3211
Definition: CDRCollector.h:59

Generated for libcdr by doxygen 1.8.6