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  ~CDRParser() override;
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, CDRStyle &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  unsigned m_waldoOutlId;
108  unsigned m_waldoFillId;
109 
110 };
111 
112 } // namespace libcdr
113 
114 #endif // __CDRPARSER_H__
115 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
bool _redirectX6Chunk(librevenge::RVNGInputStream **input, unsigned &length)
Definition: CDRParser.cpp:2420
Definition: CommonParser.h:22
~CDRParser() override
Definition: CDRParser.cpp:156
void readLineAndCurve(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1377
void readFlags(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2181
void readFont(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2504
void readMcfg(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2189
void readUidr(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2493
void readLoda(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2083
void readWaldoBmpf(librevenge::RVNGInputStream *input, unsigned id)
Definition: CDRParser.cpp:2346
void readEllipse(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1270
void readPolygonCoords(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:2219
void readVersion(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2409
unsigned m_waldoOutlId
Definition: CDRParser.h:107
bool parseRecord(librevenge::RVNGInputStream *input, const std::vector< unsigned > &blockLengths=std::vector< unsigned >(), unsigned level=0)
Definition: CDRParser.cpp:498
void readFild(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1755
void readBmpf(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2335
unsigned m_version
Definition: CDRParser.h:106
void readIccd(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2445
void readArtisticText(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3379
double readRectCoord(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:674
void readTxsm16(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3002
bool parseWaldoStructure(librevenge::RVNGInputStream *input, std::stack< WaldoRecordType1 > &waldoStack, const std::map< unsigned, WaldoRecordType1 > &records1, std::map< unsigned, WaldoRecordInfo > &records2)
Definition: CDRParser.cpp:334
unsigned m_waldoFillId
Definition: CDRParser.h:108
void readOpacity(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2325
std::map< unsigned, CDRFont > m_fonts
Definition: CDRParser.h:101
void readWaldoBmp(librevenge::RVNGInputStream *input, unsigned length, unsigned id)
Definition: CDRParser.cpp:2271
void readStyd(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3274
std::vector< librevenge::RVNGInputStream * > m_externalStreams
Definition: CDRParser.h:99
void readWaldoFill(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1568
void readWaldoTrfd(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:406
void readVpat(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2479
void readDisp(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1334
Definition: CDRCollector.h:29
void readRecord(unsigned fourCC, unsigned length, librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:592
std::map< unsigned, CDRFillStyle > m_fillStyles
Definition: CDRParser.h:102
void readWaldoRecord(librevenge::RVNGInputStream *input, const WaldoRecordInfo &info)
Definition: CDRParser.cpp:380
std::map< unsigned, CDRPath > m_arrows
Definition: CDRParser.h:104
void readPpdt(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2369
void readTxsm6(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3107
void readTxsm(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2828
Definition: CDRTypes.h:268
void readParagraphText(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3386
void readFtil(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2394
void readArrw(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1431
void readWaldoOutl(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1535
void readPath(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1402
void readStlt(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2552
Definition: CDRParser.h:27
void readSpnd(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2471
void readTrfd(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:1662
CDRParser & operator=(const CDRParser &)
CDRColor readColor(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:681
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:283
std::map< unsigned, CDRLineStyle > m_lineStyles
Definition: CDRParser.h:103
void readTxsm5(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3181
void readOutl(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2022
Definition: CDRTypes.h:52
void readWaldoLoda(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:446
void readPageSize(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:2264
void readPolygonTransform(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:2245
bool parseRecords(librevenge::RVNGInputStream *input, const std::vector< unsigned > &blockLengths=std::vector< unsigned >(), unsigned level=0)
Definition: CDRParser.cpp:483
void readBitmap(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1467
void readRectangle(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:1154
bool parseWaldo(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:161
void readBBox(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2460
void _readX6StyleString(librevenge::RVNGInputStream *input, unsigned length, CDRStyle &style)
Definition: CDRParser.cpp:3394
void readBmp(librevenge::RVNGInputStream *input, unsigned length)
Definition: CDRParser.cpp:2290
Definition: CDRTypes.h:136
void readUdta(librevenge::RVNGInputStream *input)
Definition: CDRParser.cpp:3255
Definition: CDRCollector.h:63

Generated for libcdr by doxygen 1.8.14