CMXParser.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 __CMXPARSER_H__
11 #define __CMXPARSER_H__
12 
13 #include <stdio.h>
14 #include <iostream>
15 #include <vector>
16 #include <map>
17 #include <libwpd-stream/libwpd-stream.h>
18 #include "CDRTypes.h"
19 #include "CommonParser.h"
20 
21 namespace libcdr
22 {
23 
24 class CDRCollector;
25 
26 class CMXParser : protected CommonParser
27 {
28 public:
29  explicit CMXParser(CDRCollector *collector);
30  virtual ~CMXParser();
31  bool parseRecords(WPXInputStream *input, long size = -1, unsigned level = 0);
32 
33 private:
34  CMXParser();
35  CMXParser(const CMXParser &);
36  CMXParser &operator=(const CMXParser &);
37  bool parseRecord(WPXInputStream *input, unsigned level = 0);
38  void readRecord(unsigned fourCC, unsigned &length, WPXInputStream *input);
39 
40  void readCMXHeader(WPXInputStream *input);
41  void readDisp(WPXInputStream *input, unsigned length);
42  void readCcmm(WPXInputStream *input, long &recordEnd);
43  void readPage(WPXInputStream *input, unsigned length);
44 
45  // Command readers
46  void readBeginPage(WPXInputStream *input);
47  void readBeginLayer(WPXInputStream *input);
48  void readBeginGroup(WPXInputStream *input);
49  void readPolyCurve(WPXInputStream *input);
50  void readEllipse(WPXInputStream *input);
51  void readRectangle(WPXInputStream *input);
52  void readJumpAbsolute(WPXInputStream *input);
53 
54  // Types readers
55  CDRTransform readMatrix(WPXInputStream *input);
56  CDRBox readBBox(WPXInputStream *input);
57  void readFill(WPXInputStream *input);
58 
59  // Complex types readers
60  void readRenderingAttributes(WPXInputStream *input);
61 
63  unsigned short m_unit;
64  double m_scale;
69  unsigned m_fillIndex;
71 };
72 
73 } // namespace libcdr
74 
75 #endif // __CMXPARSER_H__
76 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */

Generated for libcdr by doxygen 1.8.3.1