WPG2Parser.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2 /* libwpg
3 * Version: MPL 2.0 / LGPLv2.1+
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 * Major Contributor(s):
10 * Copyright (C) 2006 Ariya Hidayat (ariya@kde.org)
11 * Copyright (C) 2005 Fridrich Strba (fridrich.strba@bluewin.ch)
12 * Copyright (C) 2004 Marc Oude Kotte (marc@solcon.nl)
13 *
14 * For minor contributions see the git repository.
15 *
16 * Alternatively, the contents of this file may be used under the terms
17 * of the GNU Lesser General Public License Version 2.1 or later
18 * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
19 * applicable instead of those above.
20 *
21 * For further information visit http://libwpg.sourceforge.net
22 */
23
24 /* "This product is not manufactured, approved, or supported by
25 * Corel Corporation or Corel Corporation Limited."
26 */
27
28 #ifndef __WPG2PARSER_H__
29 #define __WPG2PARSER_H__
30
31 #include "WPGXParser.h"
32 #include "WPGDashArray.h"
33 #include "WPGBitmap.h"
34 #include <librevenge/librevenge.h>
35
36 #include <limits>
37 #include <map>
38 #include <stack>
39 #include <vector>
40
41 class WPG2TransformMatrix
42 {
43 public:
44 double element[3][3];
45
46 WPG2TransformMatrix()
47 {
48 // identity transformation
49 element[0][0] = element[1][1] = 1;
50 element[2][2] = 1;
51 element[0][1] = element[0][2] = 0;
52 element[1][0] = element[1][2] = 0;
53 element[2][0] = element[2][1] = 0;
54 }
55
56 void transform(long &x, long &y) const
57 {
58 const double rx = element[0][0]*x + element[1][0]*y + element[2][0];
59 const double ry = element[0][1]*x + element[1][1]*y + element[2][1];
60 x = toLong(rx);
61 y = toLong(ry);
62 }
63
64 librevenge::RVNGPropertyList transformPoint(const ::librevenge::RVNGPropertyList &p) const
65 {
66 librevenge::RVNGPropertyList propList;
67 propList.insert("svg:x", (element[0][0]*p["svg:x"]->getDouble() + element[1][0]*p["svg:y"]->getDouble() + element[2][0]));
68 propList.insert("svg:y", (element[0][1]*p["svg:x"]->getDouble() + element[1][1]*p["svg:y"]->getDouble() + element[2][1]));
69 return propList;
70 }
71
72 librevenge::RVNGPropertyList transformRect(const ::librevenge::RVNGPropertyList &r) const
73 {
74 librevenge::RVNGPropertyList propList;
75 double oldx1 = r["svg:x"]->getDouble();
76 double oldy1 = r["svg:y"]->getDouble();
77 double oldx2 = r["svg:x"]->getDouble() + r["svg:width"]->getDouble();
78 double oldy2 = r["svg:y"]->getDouble() + r["svg:height"]->getDouble();
79
80 double newx1 = element[0][0]*oldx1 + element[1][0]*oldy1 + element[2][0];
81 double newy1 = element[0][1]*oldx1 + element[1][1]*oldy1 + element[2][1];
82 double newx2 = element[0][0]*oldx2 + element[1][0]*oldy2 + element[2][0];
83 double newy2 = element[0][1]*oldx2 + element[1][1]*oldy2 + element[2][1];
84
85 propList.insert("svg:x", (double)newx1);
86 propList.insert("svg:y", (double)newy1);
87 propList.insert("svg:width", (newx2-newx1));
88 propList.insert("svg:height", (newy2-newy1));
89 return propList;
90 }
91
92 WPG2TransformMatrix &transformBy(const WPG2TransformMatrix &m)
93 {
94 double result[3][3];
95
96 for (int i = 0; i < 3; i++)
97 for (int j = 0; j < 3; j++)
98 {
99 result[i][j] = 0;
100 for (int k = 0; k < 3; k++)
101 result[i][j] += m.element[i][k]*element[k][j];
102 }
103
104 for (int x = 0; x < 3; x++)
105 for (int y = 0; y < 3; y++)
106 element[x][y] = result[x][y];
107
108 return *this;
109 }
110
111 private:
112 static long toLong(double d)
113 {
114 if (d > double(std::numeric_limits<long>::max()))
115 return std::numeric_limits<long>::max();
116 else if (d < double(std::numeric_limits<long>::min()))
117 return std::numeric_limits<long>::min();
118 else
119 return long(d);
120 }
121 };
122
123 class WPGCompoundPolygon
124 {
125 public:
126 WPG2TransformMatrix matrix;
127 bool isFilled;
128 bool isFramed;
129 bool isClosed;
130
131 WPGCompoundPolygon(): matrix(), isFilled(true), isFramed(true), isClosed(true) {}
132 };
133
134 class WPGGroupContext
135 {
136 public:
137 unsigned subIndex;
138 int parentType;
139 librevenge::RVNGPropertyListVector compoundPath;
140 WPG2TransformMatrix compoundMatrix;
141 bool compoundWindingRule;
142 bool compoundFilled;
143 bool compoundFramed;
144 bool compoundClosed;
145
146 WPGGroupContext(): subIndex(0), parentType(0),
147 compoundPath(), compoundMatrix(), compoundWindingRule(false),
148 compoundFilled(false), compoundFramed(true), compoundClosed(false) {}
149
150 bool isCompoundPolygon() const
151 {
152 return parentType == 0x1a;
153 }
154 };
155
156 class WPGBitmapContext
157 {
158 public:
159 double x1, y1, x2, y2;
160 long hres, vres;
161 WPGBitmapContext(): x1(0), y1(0), x2(0), y2(0), hres(100), vres(100) {}
162 };
163
164 class WPGBinaryDataContext
165 {
166 public:
167 double x1, y1, x2, y2;
168 int numObjects, objectIndex;
169 std::vector<librevenge::RVNGString> mimeTypes;
170 WPGBinaryDataContext(): x1(0), y1(0), x2(0), y2(0), numObjects(0), objectIndex(0), mimeTypes() {}
171 };
172
173 class WPGTextDataContext
174 {
175 public:
176 double x1, y1, x2, y2;
177 unsigned short flags;
178 unsigned char vertAlign;
179 unsigned char horAlign;
180 double baseLineAngle;
181 WPGTextDataContext(): x1(0), y1(0), x2(0), y2(0), flags(), vertAlign(), horAlign(), baseLineAngle(0.0) {}
182 };
183
184 class WPG2Parser : public WPGXParser
185 {
186 public:
187 WPG2Parser(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *painter, bool isEmbedded = false);
188 bool parse() override;
189
190 private:
191 void handleStartWPG();
192 void handleEndWPG();
193 void handleFormSettings();
194 void handleLayer();
195 void handleCompoundPolygon();
196
197 void handlePenStyleDefinition();
198 // void handlePatternDefinition();
199 void handleColorPalette();
200 void handleDPColorPalette();
201 void handlePenForeColor();
202 void handleDPPenForeColor();
203 void handlePenBackColor();
204 void handleDPPenBackColor();
205 void handlePenStyle();
206 void handlePenSize();
207 void handleDPPenSize();
208 void handleLineCap();
209 void handleLineJoin();
210 void handleBrushGradient();
211 void handleDPBrushGradient();
212 void handleBrushForeColor();
213 void handleDPBrushForeColor();
214 void handleBrushBackColor();
215 void handleDPBrushBackColor();
216 void handleBrushPattern();
217
218 void handlePolyline();
219 void handlePolyspline();
220 void handlePolycurve();
221 void handleRectangle();
222 void handleArc();
223
224 void handleBitmap();
225 void handleBitmapData();
226
227 void handleTextData();
228 void handleTextLine();
229 void handleTextBlock();
230 void handleTextPath();
231
232 void handleObjectCapsule();
233 void handleObjectImage();
234
235 void resetPalette();
236 void flushCompoundPolygon();
237 void setPenStyle();
238
239 unsigned int getRemainingRecordLength() const;
240 bool checkRLESize(unsigned bytes) const;
241
242 double toDouble(long x) const;
243 void transformXY(long &x, long &y) const;
244
245 // parsing context
246 int m_recordLength;
247 long m_recordEnd;
248 bool m_success;
249 bool m_exit;
250 bool m_graphicsStarted;
251 unsigned int m_xres;
252 unsigned int m_yres;
253 long m_xofs;
254 long m_yofs;
255 long m_width;
256 long m_height;
257 bool m_doublePrecision;
258 librevenge::RVNGPropertyList m_style;
259 libwpg::WPGColor m_penForeColor;
260 libwpg::WPGColor m_penBackColor;
261 libwpg::WPGColor m_brushForeColor;
262 libwpg::WPGColor m_brushBackColor;
263 libwpg::WPGDashArray m_dashArray;
264 librevenge::RVNGPropertyListVector m_gradient;
265 std::map<unsigned int,libwpg::WPGDashArray> m_dashArrayStyles;
266 bool m_layerOpened;
267 #ifdef DEBUG
268 unsigned int m_layerId;
269 #endif
270 WPG2TransformMatrix m_matrix;
271 double m_gradientAngle;
272 librevenge::RVNGPropertyList m_gradientRef;
273 std::stack<WPGGroupContext> m_groupStack;
274 WPG2TransformMatrix m_compoundMatrix;
275 bool m_compoundWindingRule;
276 bool m_compoundFilled;
277 bool m_compoundFramed;
278 bool m_compoundClosed;
279 WPGBitmapContext m_bitmap;
280 WPGBinaryDataContext m_binaryData;
281 bool m_hFlipped, m_vFlipped;
282 WPGTextDataContext m_textData;
283 bool m_drawTextData;
284
285 class ObjectCharacterization;
286 void parseCharacterization(ObjectCharacterization *);
287 #if DUMP_BINARY_DATA
288 unsigned m_binaryId;
289 #endif
290 };
291
292 #endif // __WPG2PARSER_H__
293 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
WPG2Parser::m_brushForeColor
libwpg::WPGColor m_brushForeColor
Definition: WPG2Parser.h:261
WPG2Parser::m_dashArray
libwpg::WPGDashArray m_dashArray
Definition: WPG2Parser.h:263
WPG2Parser::checkRLESize
bool checkRLESize(unsigned bytes) const
Definition: WPG2Parser.cpp:2459
WPG2Parser::ObjectCharacterization
Definition: WPG2Parser.cpp:194
WPG2Parser::getRemainingRecordLength
unsigned int getRemainingRecordLength() const
Definition: WPG2Parser.cpp:2452
WPG2Parser::m_brushBackColor
libwpg::WPGColor m_brushBackColor
Definition: WPG2Parser.h:262
WPG2Parser::parseCharacterization
void parseCharacterization(ObjectCharacterization *)
Definition: WPG2Parser.cpp:1347
WPGBitmapContext::vres
long vres
Definition: WPG2Parser.h:160
WPG2Parser::WPG2Parser
WPG2Parser(librevenge::RVNGInputStream *input, librevenge::RVNGDrawingInterface *painter, bool isEmbedded=false)
Definition: WPG2Parser.cpp:254
WPG2Parser::handleFormSettings
void handleFormSettings()
Definition: WPG2Parser.cpp:670
WPG2Parser::handleBrushGradient
void handleBrushGradient()
Definition: WPG2Parser.cpp:1019
WPGBitmap.h
WPG2Parser::m_penForeColor
libwpg::WPGColor m_penForeColor
Definition: WPG2Parser.h:259
WPGBinaryDataContext::objectIndex
int objectIndex
Definition: WPG2Parser.h:168
WPG2Parser::handlePolyline
void handlePolyline()
Definition: WPG2Parser.cpp:1433
WPG2Parser::handleBitmap
void handleBitmap()
Definition: WPG2Parser.cpp:1765
WPGBinaryDataContext
Definition: WPG2Parser.h:164
WPG2Parser::resetPalette
void resetPalette()
Definition: WPG2Parser.cpp:2439
WPG2Parser::handlePenStyle
void handlePenStyle()
Definition: WPG2Parser.cpp:929
WPGTextDataContext
Definition: WPG2Parser.h:173
WPGBinaryDataContext::y1
double y1
Definition: WPG2Parser.h:167
WPGBitmapContext::x2
double x2
Definition: WPG2Parser.h:159
WPG2Parser::m_recordLength
int m_recordLength
Definition: WPG2Parser.h:246
WPG2Parser::handleBitmapData
void handleBitmapData()
Definition: WPG2Parser.cpp:1815
libwpg::WPGDashArray
Definition: WPGDashArray.h:36
WPG2Parser::m_dashArrayStyles
std::map< unsigned int, libwpg::WPGDashArray > m_dashArrayStyles
Definition: WPG2Parser.h:265
WPG2TransformMatrix::WPG2TransformMatrix
WPG2TransformMatrix()
Definition: WPG2Parser.h:46
WPG2TransformMatrix::element
double element[3][3]
Definition: WPG2Parser.h:44
WPG2Parser::m_yres
unsigned int m_yres
Definition: WPG2Parser.h:252
WPGTextDataContext::horAlign
unsigned char horAlign
Definition: WPG2Parser.h:179
libwpg::WPGColor
Definition: WPGColor.h:34
WPG2Parser::transformXY
void transformXY(long &x, long &y) const
Definition: WPG2Parser.cpp:2471
WPG2Parser::handleCompoundPolygon
void handleCompoundPolygon()
Definition: WPG2Parser.cpp:709
WPG2Parser::m_gradientRef
librevenge::RVNGPropertyList m_gradientRef
Definition: WPG2Parser.h:272
WPGBinaryDataContext::WPGBinaryDataContext
WPGBinaryDataContext()
Definition: WPG2Parser.h:170
WPGGroupContext::compoundClosed
bool compoundClosed
Definition: WPG2Parser.h:144
WPG2Parser::m_compoundFilled
bool m_compoundFilled
Definition: WPG2Parser.h:276
WPG2Parser::toDouble
double toDouble(long x) const
Definition: WPG2Parser.cpp:2466
WPG2Parser::m_groupStack
std::stack< WPGGroupContext > m_groupStack
Definition: WPG2Parser.h:273
WPGCompoundPolygon::isFilled
bool isFilled
Definition: WPG2Parser.h:127
WPG2TransformMatrix::transform
void transform(long &x, long &y) const
Definition: WPG2Parser.h:56
WPGCompoundPolygon::isFramed
bool isFramed
Definition: WPG2Parser.h:128
WPGBinaryDataContext::x2
double x2
Definition: WPG2Parser.h:167
WPG2Parser::m_doublePrecision
bool m_doublePrecision
Definition: WPG2Parser.h:257
WPGBitmapContext::WPGBitmapContext
WPGBitmapContext()
Definition: WPG2Parser.h:161
WPG2Parser::m_drawTextData
bool m_drawTextData
Definition: WPG2Parser.h:283
WPGXParser.h
WPG2Parser::m_exit
bool m_exit
Definition: WPG2Parser.h:249
WPG2Parser::handleDPPenForeColor
void handleDPPenForeColor()
Definition: WPG2Parser.cpp:850
WPG2Parser::handleBrushBackColor
void handleBrushBackColor()
Definition: WPG2Parser.cpp:1280
WPG2Parser::setPenStyle
void setPenStyle()
Definition: WPG2Parser.cpp:915
WPG2Parser::handlePolycurve
void handlePolycurve()
Definition: WPG2Parser.cpp:1540
WPGTextDataContext::flags
unsigned short flags
Definition: WPG2Parser.h:177
WPG2Parser::handleEndWPG
void handleEndWPG()
Definition: WPG2Parser.cpp:657
WPG2Parser::m_layerOpened
bool m_layerOpened
Definition: WPG2Parser.h:266
WPGGroupContext::isCompoundPolygon
bool isCompoundPolygon() const
Definition: WPG2Parser.h:150
WPGTextDataContext::x2
double x2
Definition: WPG2Parser.h:176
WPG2Parser::handlePenStyleDefinition
void handlePenStyleDefinition()
Definition: WPG2Parser.cpp:756
WPG2TransformMatrix::transformPoint
librevenge::RVNGPropertyList transformPoint(const ::librevenge::RVNGPropertyList &p) const
Definition: WPG2Parser.h:64
WPG2Parser::m_matrix
WPG2TransformMatrix m_matrix
Definition: WPG2Parser.h:270
WPGBinaryDataContext::y2
double y2
Definition: WPG2Parser.h:167
WPGGroupContext
Definition: WPG2Parser.h:134
WPG2Parser::m_yofs
long m_yofs
Definition: WPG2Parser.h:254
WPG2Parser::m_success
bool m_success
Definition: WPG2Parser.h:248
WPG2TransformMatrix::transformBy
WPG2TransformMatrix & transformBy(const WPG2TransformMatrix &m)
Definition: WPG2Parser.h:92
WPG2Parser::handleColorPalette
void handleColorPalette()
Definition: WPG2Parser.cpp:791
WPG2Parser::m_textData
WPGTextDataContext m_textData
Definition: WPG2Parser.h:282
WPG2Parser::m_compoundMatrix
WPG2TransformMatrix m_compoundMatrix
Definition: WPG2Parser.h:274
WPG2Parser::m_compoundClosed
bool m_compoundClosed
Definition: WPG2Parser.h:278
WPG2Parser::m_penBackColor
libwpg::WPGColor m_penBackColor
Definition: WPG2Parser.h:260
WPGBitmapContext::y1
double y1
Definition: WPG2Parser.h:159
WPG2Parser::handleStartWPG
void handleStartWPG()
Definition: WPG2Parser.cpp:550
WPGGroupContext::compoundMatrix
WPG2TransformMatrix compoundMatrix
Definition: WPG2Parser.h:140
WPG2Parser::handleTextData
void handleTextData()
Definition: WPG2Parser.cpp:2405
WPG2Parser::handleDPBrushBackColor
void handleDPBrushBackColor()
Definition: WPG2Parser.cpp:1302
WPG2Parser::m_width
long m_width
Definition: WPG2Parser.h:255
WPGCompoundPolygon::matrix
WPG2TransformMatrix matrix
Definition: WPG2Parser.h:126
WPGBitmapContext::y2
double y2
Definition: WPG2Parser.h:159
WPGBinaryDataContext::x1
double x1
Definition: WPG2Parser.h:167
WPGGroupContext::compoundWindingRule
bool compoundWindingRule
Definition: WPG2Parser.h:141
WPG2Parser::parse
bool parse() override
Definition: WPG2Parser.cpp:313
WPG2Parser::m_gradientAngle
double m_gradientAngle
Definition: WPG2Parser.h:271
WPG2Parser
Definition: WPG2Parser.h:184
WPGTextDataContext::x1
double x1
Definition: WPG2Parser.h:176
WPGCompoundPolygon
Definition: WPG2Parser.h:123
WPG2Parser::handleRectangle
void handleRectangle()
Definition: WPG2Parser.cpp:1626
WPGBinaryDataContext::mimeTypes
std::vector< librevenge::RVNGString > mimeTypes
Definition: WPG2Parser.h:169
WPGGroupContext::subIndex
unsigned subIndex
Definition: WPG2Parser.h:137
WPGTextDataContext::y2
double y2
Definition: WPG2Parser.h:176
WPG2Parser::handleDPBrushForeColor
void handleDPBrushForeColor()
Definition: WPG2Parser.cpp:1184
WPG2Parser::handleTextBlock
void handleTextBlock()
Definition: WPG2Parser.cpp:2360
WPGBitmapContext::x1
double x1
Definition: WPG2Parser.h:159
WPG2Parser::m_gradient
librevenge::RVNGPropertyListVector m_gradient
Definition: WPG2Parser.h:264
WPG2Parser::handlePenBackColor
void handlePenBackColor()
Definition: WPG2Parser.cpp:874
WPG2Parser::m_graphicsStarted
bool m_graphicsStarted
Definition: WPG2Parser.h:250
WPG2Parser::m_compoundWindingRule
bool m_compoundWindingRule
Definition: WPG2Parser.h:275
WPG2Parser::m_recordEnd
long m_recordEnd
Definition: WPG2Parser.h:247
WPGCompoundPolygon::isClosed
bool isClosed
Definition: WPG2Parser.h:129
WPG2Parser::handleBrushPattern
void handleBrushPattern()
Definition: WPG2Parser.cpp:1327
WPGTextDataContext::y1
double y1
Definition: WPG2Parser.h:176
WPG2Parser::handleDPPenSize
void handleDPPenSize()
Definition: WPG2Parser.cpp:972
WPG2Parser::m_style
librevenge::RVNGPropertyList m_style
Definition: WPG2Parser.h:258
WPG2TransformMatrix::transformRect
librevenge::RVNGPropertyList transformRect(const ::librevenge::RVNGPropertyList &r) const
Definition: WPG2Parser.h:72
WPGBitmapContext::hres
long hres
Definition: WPG2Parser.h:160
WPG2Parser::m_xres
unsigned int m_xres
Definition: WPG2Parser.h:251
WPG2Parser::handleLayer
void handleLayer()
Definition: WPG2Parser.cpp:692
WPG2TransformMatrix::toLong
static long toLong(double d)
Definition: WPG2Parser.h:112
WPG2Parser::handleLineCap
void handleLineCap()
Definition: WPG2Parser.cpp:991
WPGCompoundPolygon::WPGCompoundPolygon
WPGCompoundPolygon()
Definition: WPG2Parser.h:131
WPG2Parser::handleArc
void handleArc()
Definition: WPG2Parser.cpp:1679
WPG2Parser::m_compoundFramed
bool m_compoundFramed
Definition: WPG2Parser.h:277
WPGGroupContext::parentType
int parentType
Definition: WPG2Parser.h:138
WPGXParser
Definition: WPGXParser.h:38
WPG2Parser::handleTextPath
void handleTextPath()
Definition: WPG2Parser.cpp:2397
WPGGroupContext::compoundFramed
bool compoundFramed
Definition: WPG2Parser.h:143
WPG2Parser::m_xofs
long m_xofs
Definition: WPG2Parser.h:253
WPG2Parser::handleBrushForeColor
void handleBrushForeColor()
Definition: WPG2Parser.cpp:1089
WPG2Parser::flushCompoundPolygon
void flushCompoundPolygon()
Definition: WPG2Parser.cpp:723
WPG2Parser::handleDPColorPalette
void handleDPColorPalette()
Definition: WPG2Parser.cpp:810
WPGTextDataContext::WPGTextDataContext
WPGTextDataContext()
Definition: WPG2Parser.h:181
WPG2Parser::handlePenForeColor
void handlePenForeColor()
Definition: WPG2Parser.cpp:829
WPGTextDataContext::baseLineAngle
double baseLineAngle
Definition: WPG2Parser.h:180
WPGDashArray.h
WPG2Parser::handlePolyspline
void handlePolyspline()
Definition: WPG2Parser.cpp:1527
WPG2Parser::m_height
long m_height
Definition: WPG2Parser.h:256
WPG2Parser::handleObjectImage
void handleObjectImage()
Definition: WPG2Parser.cpp:2275
WPG2Parser::handlePenSize
void handlePenSize()
Definition: WPG2Parser.cpp:954
WPGGroupContext::compoundPath
librevenge::RVNGPropertyListVector compoundPath
Definition: WPG2Parser.h:139
WPGBinaryDataContext::numObjects
int numObjects
Definition: WPG2Parser.h:168
WPG2TransformMatrix
Definition: WPG2Parser.h:41
WPGBitmapContext
Definition: WPG2Parser.h:156
WPG2Parser::handleDPPenBackColor
void handleDPPenBackColor()
Definition: WPG2Parser.cpp:894
WPG2Parser::m_binaryData
WPGBinaryDataContext m_binaryData
Definition: WPG2Parser.h:280
WPGTextDataContext::vertAlign
unsigned char vertAlign
Definition: WPG2Parser.h:178
WPG2Parser::handleLineJoin
void handleLineJoin()
Definition: WPG2Parser.cpp:1005
WPGGroupContext::compoundFilled
bool compoundFilled
Definition: WPG2Parser.h:142
WPG2Parser::handleTextLine
void handleTextLine()
Definition: WPG2Parser.cpp:2323
WPG2Parser::handleDPBrushGradient
void handleDPBrushGradient()
Definition: WPG2Parser.cpp:1054
WPG2Parser::m_hFlipped
bool m_hFlipped
Definition: WPG2Parser.h:281
WPG2Parser::m_bitmap
WPGBitmapContext m_bitmap
Definition: WPG2Parser.h:279
WPG2Parser::m_vFlipped
bool m_vFlipped
Definition: WPG2Parser.h:281
WPGGroupContext::WPGGroupContext
WPGGroupContext()
Definition: WPG2Parser.h:146
WPG2Parser::handleObjectCapsule
void handleObjectCapsule()
Definition: WPG2Parser.cpp:2185