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 <map>
14#include <set>
15#include <stdint.h>
16
17#include <librevenge/librevenge.h>
18
19#include "PMDRecord.h"
20#include "geometry.h"
21
22namespace libpagemaker
23{
24
25class PMDCollector;
27{
28 typedef std::vector<PMDRecordContainer> RecordContainerList_t;
29 typedef std::map<uint16_t, std::vector<unsigned> > RecordTypeMap_t;
30
31 librevenge::RVNGInputStream *m_input;
32 unsigned long m_length;
37 std::map<uint32_t, PMDXForm> m_xFormMap;
38
39 struct ToCState;
40 class RecordIterator;
41
42 /* Private functions. */
43 void parseGlobalInfo(const PMDRecordContainer &container);
44 void parseFonts();
45 void parseColors();
46 void parsePages(const PMDRecordContainer &container);
47 void parseShapes(uint16_t seqNum, unsigned pageID);
48 void parseLine(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
49 void parseTextBox(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
50 void parseRectangle(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
51 void parsePolygon(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
52 void parseEllipse(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
53 void parseBitmap(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID);
54 void parseHeader(uint32_t *tocOffset, uint16_t *tocLength);
55 void readNextRecordFromTableOfContents(ToCState &state, bool subRecord, uint16_t subRecordType = 0);
56 void readTableOfContents(ToCState &state, uint32_t offset, unsigned records, bool subRecords, uint16_t subRecordType = 0);
57 void parseTableOfContents(uint32_t offset, uint16_t length);
58 void parseXforms();
59 const PMDXForm &getXForm(const uint32_t xFormId) const;
60
61 RecordIterator beginRecordsWithSeqNumber(uint16_t seqNum) const;
62 RecordIterator beginRecordsOfType(uint16_t recType) const;
64
65 /* Prevent copy and assignment */
68public:
69 PMDParser(librevenge::RVNGInputStream *, PMDCollector *);
70 void parse();
71};
72
73}
74
75#endif /* __PMDPARSER_H__ */
76
77/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Builder class for PMD Documents.
Definition PMDCollector.h:39
Definition PMDParser.cpp:94
Definition PMDParser.h:27
std::map< uint32_t, PMDXForm > m_xFormMap
Definition PMDParser.h:37
void parseLine(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition PMDParser.cpp:272
const PMDXForm & getXForm(const uint32_t xFormId) const
Definition PMDParser.cpp:216
void parseShapes(uint16_t seqNum, unsigned pageID)
Definition PMDParser.cpp:658
void parsePolygon(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition PMDParser.cpp:498
void parseXforms()
Definition PMDParser.cpp:780
RecordContainerList_t m_recordsInOrder
Definition PMDParser.h:36
PMDCollector * m_collector
Definition PMDParser.h:33
void parse()
Definition PMDParser.cpp:963
void parseHeader(uint32_t *tocOffset, uint16_t *tocLength)
Definition PMDParser.cpp:830
librevenge::RVNGInputStream * m_input
Definition PMDParser.h:31
void parseTextBox(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition PMDParser.cpp:304
RecordIterator beginRecordsWithSeqNumber(uint16_t seqNum) const
Definition PMDParser.cpp:996
std::vector< PMDRecordContainer > RecordContainerList_t
Definition PMDParser.h:28
PMDParser(const PMDParser &)
RecordIterator beginRecordsOfType(uint16_t recType) const
Definition PMDParser.cpp:1001
void parsePages(const PMDRecordContainer &container)
Definition PMDParser.cpp:808
void parseEllipse(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition PMDParser.cpp:570
void parseRectangle(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition PMDParser.cpp:460
RecordTypeMap_t m_records
Definition PMDParser.h:34
PMDParser & operator=(const PMDParser &)
unsigned long m_length
Definition PMDParser.h:32
void readNextRecordFromTableOfContents(ToCState &state, bool subRecord, uint16_t subRecordType=0)
Definition PMDParser.cpp:871
std::map< uint16_t, std::vector< unsigned > > RecordTypeMap_t
Definition PMDParser.h:29
RecordIterator endRecords() const
Definition PMDParser.cpp:1006
void parseBitmap(const PMDRecordContainer &container, unsigned recordIndex, unsigned pageID)
Definition PMDParser.cpp:609
void parseFonts()
Definition PMDParser.cpp:698
void parseTableOfContents(uint32_t offset, uint16_t length)
Definition PMDParser.cpp:953
void readTableOfContents(ToCState &state, uint32_t offset, unsigned records, bool subRecords, uint16_t subRecordType=0)
Definition PMDParser.cpp:924
void parseGlobalInfo(const PMDRecordContainer &container)
Definition PMDParser.cpp:251
void parseColors()
Definition PMDParser.cpp:731
bool m_bigEndian
Definition PMDParser.h:35
Definition geometry.h:23
Definition PMDParser.cpp:73
Definition PMDRecord.h:26
Definition geometry.h:37

Generated for libpagemaker by doxygen 1.9.8