PMDParser.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 libpagemaker 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 __PMDPARSER_H__
11 #define __PMDPARSER_H__
12 
13 #include <librevenge/librevenge.h>
14 
15 #include <stdint.h>
16 #include <map>
17 
18 #include "PMDRecord.h"
19 #include "geometry.h"
20 
21 namespace libpagemaker
22 {
23 
24 class PMDCollector;
25 class PMDParser
26 {
27  librevenge::RVNGInputStream *m_input;
29  std::map<uint16_t, std::vector<unsigned> > m_records;
31  std::vector<PMDRecordContainer> m_recordsInOrder;
32  std::map<uint32_t, PMDXForm> m_xFormMap;
33 
34  /* Private functions. */
35  void parseGlobalInfo(const PMDRecordContainer &container);
36  void parseFonts();
37  void parseColors();
38  void parsePages(const PMDRecordContainer &container);
39  void parseShapes(uint16_t seqNum, unsigned pageID);
40  void parseLine(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
41  void parseTextBox(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
42  void parseRectangle(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
43  void parsePolygon(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
44  void parseEllipse(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
45  void parseBitmap(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
46  void parseHeader(uint32_t *tocOffset, uint16_t *tocLength);
47  unsigned readNextRecordFromTableOfContents(unsigned seqNum);
48  void parseTableOfContents(uint32_t offset, uint16_t length);
49  std::vector<PMDRecordContainer> getRecordsBySeqNum(const uint16_t seqNum);
50  std::vector<PMDRecordContainer> getRecordsByRecType(const uint16_t recType);
51  const PMDRecordContainer &getSingleRecordBySeqNum(const uint16_t seqNum) const;
52  void parseXforms();
53  const PMDXForm &getXForm(const uint32_t xFormId) const;
54 
55  /* Prevent copy and assignment */
56  PMDParser &operator=(const PMDParser &);
57  PMDParser(const PMDParser &);
58 public:
59  PMDParser(librevenge::RVNGInputStream *, PMDCollector *);
60  void parse();
61 };
62 
63 }
64 
65 #endif /* __PMDPARSER_H__ */
66 
67 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
void parsePages(const PMDRecordContainer &container)
Definition: PMDParser.cpp:643
bool m_bigEndian
Definition: PMDParser.h:30
void parseTableOfContents(uint32_t offset, uint16_t length)
Definition: PMDParser.cpp:738
void parseShapes(uint16_t seqNum, unsigned pageID)
Definition: PMDParser.cpp:488
const PMDXForm & getXForm(const uint32_t xFormId) const
Definition: PMDParser.cpp:86
void parseBitmap(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition: PMDParser.cpp:435
PMDParser(const PMDParser &)
void parseHeader(uint32_t *tocOffset, uint16_t *tocLength)
Definition: PMDParser.cpp:664
librevenge::RVNGInputStream * m_input
Definition: PMDParser.h:27
std::vector< PMDRecordContainer > getRecordsByRecType(const uint16_t recType)
Definition: PMDParser.cpp:53
Definition: PMDRecord.h:23
void parsePolygon(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition: PMDParser.cpp:327
void parseLine(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition: PMDParser.cpp:138
void parseGlobalInfo(const PMDRecordContainer &container)
Definition: PMDParser.cpp:121
PMDCollector * m_collector
Definition: PMDParser.h:28
void parseFonts()
Definition: PMDParser.cpp:531
std::vector< PMDRecordContainer > getRecordsBySeqNum(const uint16_t seqNum)
Definition: PMDParser.cpp:35
void parse()
Definition: PMDParser.cpp:756
PMDParser & operator=(const PMDParser &)
std::map< uint16_t, std::vector< unsigned > > m_records
Definition: PMDParser.h:29
Definition: geometry.h:20
void parseTextBox(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition: PMDParser.cpp:169
unsigned readNextRecordFromTableOfContents(unsigned seqNum)
Definition: PMDParser.cpp:705
void parseRectangle(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition: PMDParser.cpp:289
Builder class for PMD Documents.
Definition: PMDCollector.h:40
void parseXforms()
Definition: PMDParser.cpp:614
std::vector< PMDRecordContainer > m_recordsInOrder
Definition: PMDParser.h:31
std::map< uint32_t, PMDXForm > m_xFormMap
Definition: PMDParser.h:32
const PMDRecordContainer & getSingleRecordBySeqNum(const uint16_t seqNum) const
Definition: PMDParser.cpp:70
void parseColors()
Definition: PMDParser.cpp:564
void parseEllipse(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition: PMDParser.cpp:396
Definition: geometry.h:34
Definition: PMDParser.h:25

Generated for libpagemaker by doxygen 1.8.8