ZMF4Parser.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 a part of the libzmf 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 ZMF4PARSER_H_INCLUDED
11#define ZMF4PARSER_H_INCLUDED
12
13#include <librevenge/librevenge.h>
14#include "libzmf_utils.h"
15#include "ZMF4Header.h"
16#include "ZMFCollector.h"
17#include "ZMFTypes.h"
18#include <functional>
19#include <vector>
20#include <map>
21#include <boost/optional.hpp>
22
23namespace libzmf
24{
25
27{
28 // disable copying
29 ZMF4Parser(const ZMF4Parser &other) = delete;
31
32public:
33 ZMF4Parser(const RVNGInputStreamPtr &input, librevenge::RVNGDrawingInterface *painter);
34 bool parse();
35
36private:
37 enum class ObjectType
38 {
39 UNKNOWN,
40 FILL,
42 PEN,
43 SHADOW,
44 ARROW,
45 FONT,
47 TEXT,
48 BITMAP,
57 ELLIPSE,
58 POLYGON,
59 CURVE,
60 IMAGE,
62 TABLE,
65 };
66
85
86 struct ObjectRef
87 {
90 };
91
93
95
96 std::vector<ObjectRef> readObjectRefs();
97
98 boost::optional<Fill> getFillByRefId(uint32_t id);
99 boost::optional<Pen> getPenByRefId(uint32_t id);
100 boost::optional<Shadow> getShadowByRefId(uint32_t id);
101 boost::optional<Transparency> getTransparencyByRefId(uint32_t id);
102 boost::optional<Font> getFontByRefId(uint32_t id);
103 boost::optional<ParagraphStyle> getParagraphStyleByRefId(uint32_t id);
104 boost::optional<Text> getTextByRefId(uint32_t id);
105 boost::optional<Image> getImageByRefId(uint32_t id);
107
109
112
114
115 void readCurveSectionTypes(std::vector<CurveType> &sectionTypes);
116 std::vector<Curve> readCurveComponents(std::function<Point()> readPointFunc);
117
120
121 void readPreviewBitmap();
122
124 void readPage();
126
127 void readPen();
128 void readFill();
129 void readTransparency();
130 void readShadow();
131
132 void readArrow();
133
134 void readBitmap();
135
136 void readImage();
137
138 void readFont();
139 void readParagraphStyle();
140 void readText();
141
142 void readTextFrame();
143
144 void readCurve();
145 void readRectangle();
146 void readEllipse();
147 void readPolygon();
148
149 void readTable();
150
153
155
157
159
161
163
164 std::map<uint32_t, Pen> m_pens;
165 std::map<uint32_t, Fill> m_fills;
166 std::map<uint32_t, Transparency> m_transparencies;
167 std::map<uint32_t, Shadow> m_shadows;
168 std::map<uint32_t, ArrowPtr> m_arrows;
169
170 std::map<uint32_t, Image> m_images;
171
172 std::map<uint32_t, Font> m_fonts;
173 std::map<uint32_t, ParagraphStyle> m_paragraphStyles;
174 std::map<uint32_t, Text> m_texts;
175};
176
177}
178
179#endif // ZMF4PARSER_H_INCLUDED
180
181/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition ZMF4Header.h:19
Definition ZMF4Parser.h:27
Point readUnscaledPoint()
Definition ZMF4Parser.cpp:320
ZMFCollector m_collector
Definition ZMF4Parser.h:154
void readArrow()
Definition ZMF4Parser.cpp:940
void readEllipse()
Definition ZMF4Parser.cpp:1256
void readPreviewBitmap()
Definition ZMF4Parser.cpp:498
std::map< uint32_t, Transparency > m_transparencies
Definition ZMF4Parser.h:166
void readFont()
Definition ZMF4Parser.cpp:1028
boost::optional< Fill > getFillByRefId(uint32_t id)
Definition ZMF4Parser.cpp:237
std::vector< Curve > readCurveComponents(std::function< Point()> readPointFunc)
Definition ZMF4Parser.cpp:379
boost::optional< Image > getImageByRefId(uint32_t id)
Definition ZMF4Parser.cpp:272
int m_pageNumber
Definition ZMF4Parser.h:160
void readCurveSectionTypes(std::vector< CurveType > &sectionTypes)
Definition ZMF4Parser.cpp:356
std::map< uint32_t, Font > m_fonts
Definition ZMF4Parser.h:172
BoundingBox readBoundingBox()
Definition ZMF4Parser.cpp:327
std::map< uint32_t, Fill > m_fills
Definition ZMF4Parser.h:165
Point readPoint()
Definition ZMF4Parser.cpp:313
static ObjectType parseObjectType(uint8_t type)
Definition ZMF4Parser.cpp:104
ZMF4Header m_header
Definition ZMF4Parser.h:156
void readFill()
Definition ZMF4Parser.cpp:678
ObjectType
Definition ZMF4Parser.h:38
void readPage()
Definition ZMF4Parser.cpp:533
boost::optional< ParagraphStyle > getParagraphStyleByRefId(uint32_t id)
Definition ZMF4Parser.cpp:262
std::map< uint32_t, ParagraphStyle > m_paragraphStyles
Definition ZMF4Parser.h:173
std::vector< ObjectRef > readObjectRefs()
Definition ZMF4Parser.cpp:201
void readPolygon()
Definition ZMF4Parser.cpp:1280
bool parse()
Definition ZMF4Parser.cpp:72
Style readStyle()
Definition ZMF4Parser.cpp:283
void readParagraphStyle()
Definition ZMF4Parser.cpp:1061
boost::optional< Transparency > getTransparencyByRefId(uint32_t id)
Definition ZMF4Parser.cpp:252
Gradient readGradient(uint32_t type)
Definition ZMF4Parser.cpp:432
const RVNGInputStreamPtr m_input
Definition ZMF4Parser.h:151
void readTable()
Definition ZMF4Parser.cpp:1323
void readLayer(const ObjectHeader &layerStartObjHeader)
Definition ZMF4Parser.cpp:594
ZMF4Parser & operator=(const ZMF4Parser &other)=delete
void readBitmap()
Definition ZMF4Parser.cpp:961
ZMF4Parser(const ZMF4Parser &other)=delete
uint32_t m_inputLength
Definition ZMF4Parser.h:152
std::map< uint32_t, ArrowPtr > m_arrows
Definition ZMF4Parser.h:168
void readCurve()
Definition ZMF4Parser.cpp:1233
boost::optional< Text > getTextByRefId(uint32_t id)
Definition ZMF4Parser.cpp:267
std::map< uint32_t, Shadow > m_shadows
Definition ZMF4Parser.h:167
Color readColor()
Definition ZMF4Parser.cpp:423
boost::optional< Shadow > getShadowByRefId(uint32_t id)
Definition ZMF4Parser.cpp:247
std::map< uint32_t, Text > m_texts
Definition ZMF4Parser.h:174
boost::optional< Font > getFontByRefId(uint32_t id)
Definition ZMF4Parser.cpp:257
boost::optional< Pen > getPenByRefId(uint32_t id)
Definition ZMF4Parser.cpp:242
std::map< uint32_t, Image > m_images
Definition ZMF4Parser.h:170
ObjectHeader readObjectHeader()
Definition ZMF4Parser.cpp:164
ArrowPtr getArrowByRefId(uint32_t id)
Definition ZMF4Parser.cpp:277
void readTransparency()
Definition ZMF4Parser.cpp:749
void readPen()
Definition ZMF4Parser.cpp:772
ZMFPageSettings m_pageSettings
Definition ZMF4Parser.h:158
void readShadow()
Definition ZMF4Parser.cpp:888
std::map< uint32_t, Pen > m_pens
Definition ZMF4Parser.h:164
void readRectangle()
Definition ZMF4Parser.cpp:1244
ObjectHeader m_currentObjectHeader
Definition ZMF4Parser.h:162
void readText()
Definition ZMF4Parser.cpp:1123
void readDocumentSettings()
Definition ZMF4Parser.cpp:507
void readTextFrame()
Definition ZMF4Parser.cpp:1196
void readImage()
Definition ZMF4Parser.cpp:997
Definition ZMFCollector.h:22
Definition BMIHeader.cpp:14
std::string prettyTypeName()
Definition libzmf_utils.h:68
std::shared_ptr< Arrow > ArrowPtr
Definition ZMFTypes.h:139
std::shared_ptr< librevenge::RVNGInputStream > RVNGInputStreamPtr
Definition libzmf_utils.h:80
Definition ZMFTypes.h:47
Definition ZMFTypes.h:98
Definition ZMFTypes.h:192
Definition ZMFTypes.h:25
Definition ZMFTypes.h:259
Definition ZMF4Parser.h:68
uint32_t size
Definition ZMF4Parser.h:70
ObjectType type
Definition ZMF4Parser.h:69
uint32_t nextObjectOffset
Definition ZMF4Parser.h:71
uint32_t refListStartOffset
Definition ZMF4Parser.h:74
ObjectHeader()
Definition ZMF4Parser.h:76
boost::optional< uint32_t > id
Definition ZMF4Parser.h:72
uint32_t refObjCount
Definition ZMF4Parser.h:73
Definition ZMF4Parser.h:87
uint32_t id
Definition ZMF4Parser.h:88
uint32_t tag
Definition ZMF4Parser.h:89
Definition ZMFTypes.h:390

Generated for libzmf by doxygen 1.10.0