VSDTypes.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 libvisio 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 VSDTYPES_H
11 #define VSDTYPES_H
12 
13 #include <vector>
14 #include <map>
15 #include <librevenge/librevenge.h>
16 
17 #define FROM_OPTIONAL(t, u) !!t ? t.get() : u
18 #define ASSIGN_OPTIONAL(t, u) if(!!t) u = t.get()
19 #define MINUS_ONE (unsigned)-1
20 
21 namespace libvisio
22 {
23 struct XForm
24 {
25  double pinX;
26  double pinY;
27  double height;
28  double width;
29  double pinLocX;
30  double pinLocY;
31  double angle;
32  bool flipX;
33  bool flipY;
34  double x;
35  double y;
36  XForm() : pinX(0.0), pinY(0.0), height(0.0), width(0.0),
37  pinLocX(0.0), pinLocY(0.0), angle(0.0),
38  flipX(false), flipY(false), x(0.0), y(0.0) {}
39  XForm(const XForm &xform) : pinX(xform.pinX), pinY(xform.pinY), height(xform.height),
40  width(xform.width), pinLocX(xform.pinLocX), pinLocY(xform.pinLocY), angle(xform.angle),
41  flipX(xform.flipX), flipY(xform.flipY), x(xform.x), y(xform.y) {}
42 
43 };
44 
45 struct XForm1D
46 {
47  double beginX;
48  double beginY;
49  unsigned beginId;
50  double endX;
51  double endY;
52  unsigned endId;
54  endX(0.0), endY(0.0), endId(MINUS_ONE) {}
55  XForm1D(const XForm1D &xform1d) : beginX(xform1d.beginX),
56  beginY(xform1d.beginY), beginId(xform1d.beginId),
57  endX(xform1d.endX), endY(xform1d.endY), endId(xform1d.endId) {}
58 };
59 
60 // Utilities
62 {
63  ChunkHeader() : chunkType(0), id(0), list(0), dataLength(0), level(0), unknown(0), trailer(0) {}
64  unsigned chunkType; // 4 bytes
65  unsigned id; // 4 bytes
66  unsigned list; // 4 bytes
67  unsigned dataLength; // 4 bytes
68  unsigned short level; // 2 bytes
69  unsigned char unknown; // 1 byte
70  unsigned trailer; // Derived
71 };
72 
73 struct Colour
74 {
75  Colour(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
76  : r(red), g(green), b(blue), a(alpha) {}
77  Colour() : r(0), g(0), b(0), a(0) {}
78  inline bool operator==(const Colour &col) const
79  {
80  return ((r == col.r) && (g == col.g) && (b == col.b) && (a == col.a));
81  }
82  inline bool operator!=(const Colour &col) const
83  {
84  return !operator==(col);
85  }
86  inline bool operator!() const
87  {
88  return (!r && !g && !b && !a);
89  }
90  unsigned char r;
91  unsigned char g;
92  unsigned char b;
93  unsigned char a;
94 };
95 
96 struct NURBSData
97 {
98  double lastKnot;
99  unsigned degree;
100  unsigned char xType;
101  unsigned char yType;
102  std::vector<double> knots;
103  std::vector<double> weights;
104  std::vector<std::pair<double, double> > points;
106  : lastKnot(0.0),
107  degree(0),
108  xType(0x00),
109  yType(0x00),
110  knots(),
111  weights(),
112  points() {}
113  NURBSData(const NURBSData &data)
114  : lastKnot(data.lastKnot),
115  degree(data.degree),
116  xType(data.xType),
117  yType(data.yType),
118  knots(data.knots),
119  weights(data.weights),
120  points(data.points) {}
121 };
122 
124 {
125  unsigned char xType;
126  unsigned char yType;
127  std::vector<std::pair<double, double> > points;
129  : xType(0x00),
130  yType(0x00),
131  points() {}
132 };
133 
134 
136 {
137  unsigned typeId;
138  unsigned dataId;
139  unsigned type;
140  unsigned format;
141  double offsetX;
142  double offsetY;
143  double width;
144  double height;
145  librevenge::RVNGBinaryData data;
147  : typeId(0),
148  dataId(0),
149  type(0),
150  format(0),
151  offsetX(0.0),
152  offsetY(0.0),
153  width(0.0),
154  height(0.0),
155  data() {}
156 };
157 
159 {
177 };
178 
179 class VSDName
180 {
181 public:
182  VSDName(const librevenge::RVNGBinaryData &data, TextFormat format)
183  : m_data(data),
184  m_format(format) {}
186  VSDName(const VSDName &name) : m_data(name.m_data), m_format(name.m_format) {}
187  bool empty() const
188  {
189  return !m_data.size();
190  }
191  librevenge::RVNGBinaryData m_data;
193 };
194 
195 struct VSDFont
196 {
197  librevenge::RVNGString m_name;
200  VSDFont(const librevenge::RVNGString &name, const TextFormat &encoding) :
201  m_name(name), m_encoding(encoding) {}
202  VSDFont(const VSDFont &font) :
203  m_name(font.m_name), m_encoding(font.m_encoding) {}
204 };
205 
206 struct VSDMisc
207 {
209  VSDMisc() : m_hideText(false) {}
210  VSDMisc(const VSDMisc &misc) : m_hideText(misc.m_hideText) {}
211 };
212 
214 {
215  double m_position;
216  unsigned char m_alignment;
217  unsigned char m_leader;
219  VSDTabStop(const VSDTabStop &tabStop) :
220  m_position(tabStop.m_position), m_alignment(tabStop.m_alignment),
221  m_leader(tabStop.m_leader) {}
222 };
223 
224 struct VSDTabSet
225 {
226  unsigned m_numChars;
227  std::map<unsigned, VSDTabStop> m_tabStops;
229  VSDTabSet(const VSDTabSet &tabSet) :
230  m_numChars(tabSet.m_numChars), m_tabStops(tabSet.m_tabStops) {}
231 };
232 
233 struct VSDBullet
234 {
235  librevenge::RVNGString m_bulletStr;
236  librevenge::RVNGString m_bulletFont;
240  : m_bulletStr(),
241  m_bulletFont(),
242  m_bulletFontSize(0.0),
243  m_textPosAfterBullet(0.0) {}
244  VSDBullet(const VSDBullet &bullet) :
245  m_bulletStr(bullet.m_bulletStr),
246  m_bulletFont(bullet.m_bulletFont),
249  inline bool operator==(const VSDBullet &bullet) const
250  {
251  return ((m_bulletStr == bullet.m_bulletStr) &&
252  (m_bulletFont == bullet.m_bulletFont) &&
253  (m_bulletFontSize == bullet.m_bulletFontSize) &&
255  }
256  inline bool operator!=(const VSDBullet &bullet) const
257  {
258  return !operator==(bullet);
259  }
260  inline bool operator!() const
261  {
262  return m_bulletStr.empty();
263  }
264 };
265 
266 } // namespace libvisio
267 
268 #endif /* VSDTYPES_H */
269 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition: VSDTypes.h:169
unsigned id
Definition: VSDTypes.h:65
VSDFont()
Definition: VSDTypes.h:199
VSDName(const librevenge::RVNGBinaryData &data, TextFormat format)
Definition: VSDTypes.h:182
double beginY
Definition: VSDTypes.h:48
librevenge::RVNGString m_name
Definition: VSDTypes.h:197
librevenge::RVNGString m_bulletFont
Definition: VSDTypes.h:236
librevenge::RVNGBinaryData m_data
Definition: VSDTypes.h:191
Colour()
Definition: VSDTypes.h:77
Definition: VSDTypes.h:173
bool operator!=(const Colour &col) const
Definition: VSDTypes.h:82
double x
Definition: VSDTypes.h:34
std::vector< double > weights
Definition: VSDTypes.h:103
TextFormat m_format
Definition: VSDTypes.h:192
unsigned m_numChars
Definition: VSDTypes.h:226
double width
Definition: VSDTypes.h:28
bool m_hideText
Definition: VSDTypes.h:208
unsigned char xType
Definition: VSDTypes.h:125
Definition: VSDTypes.h:161
Definition: VSDTypes.h:96
XForm1D()
Definition: VSDTypes.h:53
Definition: VSDTypes.h:233
Definition: VSDTypes.h:73
Definition: VSDTypes.h:167
PolylineData()
Definition: VSDTypes.h:128
Definition: VSDTypes.h:224
double offsetY
Definition: VSDTypes.h:142
unsigned char b
Definition: VSDTypes.h:92
Definition: VSDTypes.h:213
unsigned chunkType
Definition: VSDTypes.h:64
unsigned char m_alignment
Definition: VSDTypes.h:216
XForm()
Definition: VSDTypes.h:36
librevenge::RVNGBinaryData data
Definition: VSDTypes.h:145
unsigned char m_leader
Definition: VSDTypes.h:217
TextFormat m_encoding
Definition: VSDTypes.h:198
VSDBullet()
Definition: VSDTypes.h:239
VSDTabStop()
Definition: VSDTypes.h:218
Definition: VSDTypes.h:175
std::map< unsigned, VSDTabStop > m_tabStops
Definition: VSDTypes.h:227
VSDMisc(const VSDMisc &misc)
Definition: VSDTypes.h:210
bool empty() const
Definition: VSDTypes.h:187
bool flipX
Definition: VSDTypes.h:32
Definition: VSDTypes.h:206
double pinLocX
Definition: VSDTypes.h:29
double angle
Definition: VSDTypes.h:31
Definition: VSDTypes.h:165
ForeignData()
Definition: VSDTypes.h:146
double pinLocY
Definition: VSDTypes.h:30
VSDTabSet(const VSDTabSet &tabSet)
Definition: VSDTypes.h:229
Definition: VSDTypes.h:163
unsigned endId
Definition: VSDTypes.h:52
bool operator!() const
Definition: VSDTypes.h:260
unsigned char xType
Definition: VSDTypes.h:100
double offsetX
Definition: VSDTypes.h:141
NURBSData()
Definition: VSDTypes.h:105
double pinX
Definition: VSDTypes.h:25
VSDName(const VSDName &name)
Definition: VSDTypes.h:186
Definition: VSDTypes.h:171
unsigned dataId
Definition: VSDTypes.h:138
XForm(const XForm &xform)
Definition: VSDTypes.h:39
VSDFont(const librevenge::RVNGString &name, const TextFormat &encoding)
Definition: VSDTypes.h:200
Definition: VSDTypes.h:166
std::vector< double > knots
Definition: VSDTypes.h:102
unsigned format
Definition: VSDTypes.h:140
double endY
Definition: VSDTypes.h:51
Definition: VSDTypes.h:176
unsigned char yType
Definition: VSDTypes.h:101
double y
Definition: VSDTypes.h:35
VSDBullet(const VSDBullet &bullet)
Definition: VSDTypes.h:244
VSDTabSet()
Definition: VSDTypes.h:228
unsigned degree
Definition: VSDTypes.h:99
double m_position
Definition: VSDTypes.h:215
unsigned char g
Definition: VSDTypes.h:91
double height
Definition: VSDTypes.h:27
TextFormat
Definition: VSDTypes.h:158
double m_bulletFontSize
Definition: VSDTypes.h:237
XForm1D(const XForm1D &xform1d)
Definition: VSDTypes.h:55
double lastKnot
Definition: VSDTypes.h:98
VSDName()
Definition: VSDTypes.h:185
unsigned type
Definition: VSDTypes.h:139
Definition: VSDTypes.h:135
Definition: VSDTypes.h:164
double endX
Definition: VSDTypes.h:50
VSDFont(const VSDFont &font)
Definition: VSDTypes.h:202
unsigned char a
Definition: VSDTypes.h:93
#define MINUS_ONE
Definition: VSDTypes.h:19
Definition: libvisio_utils.h:75
double beginX
Definition: VSDTypes.h:47
bool operator!=(const VSDBullet &bullet) const
Definition: VSDTypes.h:256
std::vector< std::pair< double, double > > points
Definition: VSDTypes.h:127
Definition: VSDTypes.h:61
std::vector< std::pair< double, double > > points
Definition: VSDTypes.h:104
unsigned char unknown
Definition: VSDTypes.h:69
Definition: VSDTypes.h:174
Colour(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
Definition: VSDTypes.h:75
Definition: VSDTypes.h:162
VSDTabStop(const VSDTabStop &tabStop)
Definition: VSDTypes.h:219
Definition: VSDTypes.h:172
NURBSData(const NURBSData &data)
Definition: VSDTypes.h:113
unsigned beginId
Definition: VSDTypes.h:49
unsigned list
Definition: VSDTypes.h:66
bool operator!() const
Definition: VSDTypes.h:86
double height
Definition: VSDTypes.h:144
Definition: VSDTypes.h:45
ChunkHeader()
Definition: VSDTypes.h:63
Definition: VSDTypes.h:123
bool flipY
Definition: VSDTypes.h:33
bool operator==(const VSDBullet &bullet) const
Definition: VSDTypes.h:249
unsigned short level
Definition: VSDTypes.h:68
Definition: VSDTypes.h:23
unsigned dataLength
Definition: VSDTypes.h:67
unsigned char yType
Definition: VSDTypes.h:126
unsigned char r
Definition: VSDTypes.h:90
double pinY
Definition: VSDTypes.h:26
bool operator==(const Colour &col) const
Definition: VSDTypes.h:78
Definition: VSDTypes.h:179
VSDMisc()
Definition: VSDTypes.h:209
Definition: VSDTypes.h:195
double width
Definition: VSDTypes.h:143
double m_textPosAfterBullet
Definition: VSDTypes.h:238
librevenge::RVNGString m_bulletStr
Definition: VSDTypes.h:235
Definition: VSDTypes.h:160
Definition: VSDTypes.h:170
unsigned trailer
Definition: VSDTypes.h:70
unsigned typeId
Definition: VSDTypes.h:137
Definition: VSDTypes.h:168

Generated for libvisio by doxygen 1.8.14