ZMFTypes.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 ZMFTYPES_H_INCLUDED
11#define ZMFTYPES_H_INCLUDED
12
13#include <vector>
14#include <memory>
15
16#include <boost/optional.hpp>
17#include <boost/variant.hpp>
18
19#include "libzmf_utils.h"
20
21namespace libzmf
22{
23
24struct Point
25{
26 double x;
27 double y;
28
30 : x(0.0), y(0.0)
31 { }
32
33 Point(double xVal, double yVal)
34 : x(xVal), y(yVal)
35 { }
36
37 Point move(double dx, double dy) const;
38 Point rotate(double rotation, const Point &center) const;
39
40 double distance(const Point &p2) const;
41};
42
43bool operator==(const Point &lhs, const Point &rhs);
44bool operator!=(const Point &lhs, const Point &rhs);
45
47{
48 BoundingBox(const std::vector<Point> &points);
49
50 const std::vector<Point> &points() const;
51
52 double width() const;
53 double height() const;
54
55 Point center() const;
56 Point topLeft() const;
57
58 double rotation() const;
59
60 int p1Quadrant() const;
61 int p2Quadrant() const;
62
63 bool mirrorHorizontal() const;
64 bool mirrorVertical() const;
65
66private:
67 int quadrant(const Point &p) const;
68
69 const std::vector<Point> m_points;
70 double m_width;
71 double m_height;
73 double m_rotation;
78};
79
80enum class CurveType
81{
82 LINE,
84};
85
86struct Curve
87{
88 std::vector<Point> points;
89 std::vector<CurveType> sectionTypes;
90 bool closed;
91
93 : points(), sectionTypes(), closed(false)
94 { }
95};
96
97struct Color
98{
99 uint8_t red;
100 uint8_t green;
101 uint8_t blue;
102
104 : red(0), green(0), blue(0)
105 { }
106
107 Color(uint8_t r, uint8_t g, uint8_t b)
108 : red(r), green(g), blue(b)
109 { }
110
111 librevenge::RVNGString toString() const;
112};
113
114enum class LineCapType
115{
116 BUTT,
117 FLAT,
118 ROUND,
119 POINTED
120};
121
122enum class LineJoinType
123{
124 MITER,
125 ROUND,
126 BEVEL
127};
128
129struct Arrow
130{
131 std::vector<Curve> curves;
132 double lineEndX;
133
135 : curves(), lineEndX(0.0)
136 { }
137};
138
139typedef std::shared_ptr<Arrow> ArrowPtr;
140
141struct Pen
142{
144 double width;
147 std::vector<double> dashPattern;
152
154 : color(), width(0.0),
157 startArrow(), endArrow(),
158 isInvisible(false)
159 { }
160
162 : color(c),
163 width(0.0),
166 startArrow(), endArrow(),
167 isInvisible(false)
168 { }
169};
170
172{
174 double offset;
175
177 : color(), offset(0.0)
178 { }
179};
180
181enum class GradientType
182{
183 LINEAR,
184 RADIAL,
185 CONICAL,
186 CROSS,
189};
190
192{
194 std::vector<GradientStop> stops;
195 double angle;
197
199 : type(), stops(), angle(0.0), center(0.5, 0.5)
200 { }
201};
202
203struct Image
204{
205 uint32_t width;
206 uint32_t height;
207 librevenge::RVNGBinaryData data;
208
210 : width(0), height(0), data()
211 { }
212
213 Image(uint32_t w, uint32_t h, librevenge::RVNGBinaryData d)
214 : width(w), height(h), data(d)
215 { }
216};
217
219{
221 bool tile;
222 double tileWidth;
224
226 : image(), tile(false), tileWidth(0.0), tileHeight(0.0)
227 { }
228};
229
230typedef boost::variant<Color, Gradient, ImageFill> Fill;
231
233{
235
236 double opacity() const
237 {
238 return 1.0 - color.red / 255.0;
239 }
240
242 : color()
243 { }
244};
245
246struct Shadow
247{
249 double angle;
250 double opacity;
252
254 : offset(), angle(0.0), opacity(1.0), color()
255 { }
256};
257
258struct Style
259{
260 boost::optional<Pen> pen;
261 boost::optional<Fill> fill;
262 boost::optional<Transparency> transparency;
263 boost::optional<Shadow> shadow;
264
266 : pen(), fill(), transparency(), shadow()
267 { }
268};
269
270struct Font
271{
272 librevenge::RVNGString name;
273 double size;
274 bool isBold;
276 boost::optional<Fill> fill;
277 boost::optional<Pen> outline;
278
280 : name("Arial"), size(24.0), isBold(false), isItalic(false),
281 fill(Color(0, 0, 0)), outline()
282 { }
283};
284
285struct Span
286{
287 librevenge::RVNGString text;
288 uint32_t length;
290
292 : text(), length(0), font()
293 { }
294};
295
297{
298 LEFT,
299 RIGHT,
300 BLOCK,
301 CENTER,
302 FULL
303};
304
306{
307 TOP,
308 MIDDLE,
309 BOTTOM
310};
311
313{
317
320 { }
321};
322
324{
325 std::vector<Span> spans;
327
329 : spans(), style()
330 { }
331};
332
333struct Text
334{
335 std::vector<Paragraph> paragraphs;
336
338 : paragraphs()
339 { }
340};
341
342struct Cell
343{
345 boost::optional<Fill> fill;
346 boost::optional<Pen> leftBorder;
347 boost::optional<Pen> rightBorder;
348 boost::optional<Pen> topBorder;
349 boost::optional<Pen> bottomBorder;
350
352 : text(), fill(),
354 { }
355};
356
357struct Row
358{
359 std::vector<Cell> cells;
360 double height;
361
363 : cells(), height(0.0)
364 { }
365};
366
367struct Column
368{
369 double width;
370
372 : width(0.0)
373 { }
374};
375
376struct Table
377{
378 std::vector<Row> rows;
379 std::vector<Column> columns;
380 double width;
381 double height;
383
385 : rows(), columns(), width(0.0), height(0.0), topLeftPoint()
386 { }
387};
388
390{
391 double width;
392 double height;
394 double topOffset;
396
398 : width(0.0), height(0.0), leftOffset(0.0), topOffset(0.0), color()
399 { }
400 ZMFPageSettings(double w, double h, double left, double top, Color c = Color(255, 255, 255))
401 : width(w), height(h), leftOffset(left), topOffset(top), color(c)
402 { }
403};
404
405}
406
407#endif // ZMFTYPES_H_INCLUDED
408
409/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition BMIHeader.cpp:14
boost::variant< Color, Gradient, ImageFill > Fill
Definition ZMFTypes.h:230
std::shared_ptr< Arrow > ArrowPtr
Definition ZMFTypes.h:139
HorizontalAlignment
Definition ZMFTypes.h:297
bool operator==(const BMIOffset &lhs, const BMIOffset &rhs)
Definition BMITypes.cpp:15
bool operator!=(const BMIOffset &lhs, const BMIOffset &rhs)
Definition BMITypes.cpp:20
CurveType
Definition ZMFTypes.h:81
VerticalAlignment
Definition ZMFTypes.h:306
LineJoinType
Definition ZMFTypes.h:123
GradientType
Definition ZMFTypes.h:182
LineCapType
Definition ZMFTypes.h:115
Definition ZMFTypes.h:130
std::vector< Curve > curves
Definition ZMFTypes.h:131
double lineEndX
Definition ZMFTypes.h:132
Arrow()
Definition ZMFTypes.h:134
Definition ZMFTypes.h:47
double m_height
Definition ZMFTypes.h:71
double m_rotation
Definition ZMFTypes.h:73
int m_p2Quadrant
Definition ZMFTypes.h:75
int quadrant(const Point &p) const
Definition ZMFTypes.cpp:158
bool m_mirrorVertical
Definition ZMFTypes.h:77
bool m_mirrorHorizontal
Definition ZMFTypes.h:76
Point center() const
Definition ZMFTypes.cpp:123
double width() const
Definition ZMFTypes.cpp:113
int m_p1Quadrant
Definition ZMFTypes.h:74
bool mirrorVertical() const
Definition ZMFTypes.cpp:153
bool mirrorHorizontal() const
Definition ZMFTypes.cpp:148
double m_width
Definition ZMFTypes.h:70
Point topLeft() const
Definition ZMFTypes.cpp:128
Point m_center
Definition ZMFTypes.h:72
int p2Quadrant() const
Definition ZMFTypes.cpp:143
const std::vector< Point > & points() const
Definition ZMFTypes.cpp:108
int p1Quadrant() const
Definition ZMFTypes.cpp:138
double height() const
Definition ZMFTypes.cpp:118
double rotation() const
Definition ZMFTypes.cpp:133
const std::vector< Point > m_points
Definition ZMFTypes.h:69
Definition ZMFTypes.h:343
boost::optional< Fill > fill
Definition ZMFTypes.h:345
boost::optional< Pen > topBorder
Definition ZMFTypes.h:348
boost::optional< Pen > bottomBorder
Definition ZMFTypes.h:349
Cell()
Definition ZMFTypes.h:351
Text text
Definition ZMFTypes.h:344
boost::optional< Pen > rightBorder
Definition ZMFTypes.h:347
boost::optional< Pen > leftBorder
Definition ZMFTypes.h:346
Definition ZMFTypes.h:98
Color(uint8_t r, uint8_t g, uint8_t b)
Definition ZMFTypes.h:107
librevenge::RVNGString toString() const
Definition ZMFTypes.cpp:177
uint8_t red
Definition ZMFTypes.h:99
Color()
Definition ZMFTypes.h:103
uint8_t blue
Definition ZMFTypes.h:101
uint8_t green
Definition ZMFTypes.h:100
Definition ZMFTypes.h:368
Column()
Definition ZMFTypes.h:371
double width
Definition ZMFTypes.h:369
Definition ZMFTypes.h:87
Curve()
Definition ZMFTypes.h:92
std::vector< CurveType > sectionTypes
Definition ZMFTypes.h:89
bool closed
Definition ZMFTypes.h:90
std::vector< Point > points
Definition ZMFTypes.h:88
Definition ZMFTypes.h:271
bool isItalic
Definition ZMFTypes.h:275
bool isBold
Definition ZMFTypes.h:274
boost::optional< Fill > fill
Definition ZMFTypes.h:276
librevenge::RVNGString name
Definition ZMFTypes.h:272
Font()
Definition ZMFTypes.h:279
double size
Definition ZMFTypes.h:273
boost::optional< Pen > outline
Definition ZMFTypes.h:277
Definition ZMFTypes.h:172
GradientStop()
Definition ZMFTypes.h:176
Color color
Definition ZMFTypes.h:173
double offset
Definition ZMFTypes.h:174
Definition ZMFTypes.h:192
GradientType type
Definition ZMFTypes.h:193
Gradient()
Definition ZMFTypes.h:198
std::vector< GradientStop > stops
Definition ZMFTypes.h:194
Point center
Definition ZMFTypes.h:196
double angle
Definition ZMFTypes.h:195
Definition ZMFTypes.h:219
bool tile
Definition ZMFTypes.h:221
Image image
Definition ZMFTypes.h:220
double tileWidth
Definition ZMFTypes.h:222
double tileHeight
Definition ZMFTypes.h:223
ImageFill()
Definition ZMFTypes.h:225
Definition ZMFTypes.h:204
uint32_t height
Definition ZMFTypes.h:206
Image(uint32_t w, uint32_t h, librevenge::RVNGBinaryData d)
Definition ZMFTypes.h:213
librevenge::RVNGBinaryData data
Definition ZMFTypes.h:207
uint32_t width
Definition ZMFTypes.h:205
Image()
Definition ZMFTypes.h:209
Definition ZMFTypes.h:313
double lineSpacing
Definition ZMFTypes.h:314
HorizontalAlignment alignment
Definition ZMFTypes.h:315
ParagraphStyle()
Definition ZMFTypes.h:318
Font font
Definition ZMFTypes.h:316
Definition ZMFTypes.h:324
std::vector< Span > spans
Definition ZMFTypes.h:325
ParagraphStyle style
Definition ZMFTypes.h:326
Paragraph()
Definition ZMFTypes.h:328
Definition ZMFTypes.h:142
Pen(Color c)
Definition ZMFTypes.h:161
LineJoinType lineJoinType
Definition ZMFTypes.h:146
std::vector< double > dashPattern
Definition ZMFTypes.h:147
Color color
Definition ZMFTypes.h:143
double width
Definition ZMFTypes.h:144
Pen()
Definition ZMFTypes.h:153
double dashDistance
Definition ZMFTypes.h:148
bool isInvisible
Definition ZMFTypes.h:151
ArrowPtr startArrow
Definition ZMFTypes.h:149
LineCapType lineCapType
Definition ZMFTypes.h:145
ArrowPtr endArrow
Definition ZMFTypes.h:150
Definition ZMFTypes.h:25
double distance(const Point &p2) const
Definition ZMFTypes.cpp:39
Point rotate(double rotation, const Point &center) const
Definition ZMFTypes.cpp:32
double x
Definition ZMFTypes.h:26
Point(double xVal, double yVal)
Definition ZMFTypes.h:33
Point()
Definition ZMFTypes.h:29
Point move(double dx, double dy) const
Definition ZMFTypes.cpp:27
double y
Definition ZMFTypes.h:27
Definition ZMFTypes.h:358
std::vector< Cell > cells
Definition ZMFTypes.h:359
double height
Definition ZMFTypes.h:360
Row()
Definition ZMFTypes.h:362
Definition ZMFTypes.h:247
Color color
Definition ZMFTypes.h:251
Point offset
Definition ZMFTypes.h:248
double opacity
Definition ZMFTypes.h:250
Shadow()
Definition ZMFTypes.h:253
double angle
Definition ZMFTypes.h:249
Definition ZMFTypes.h:286
Span()
Definition ZMFTypes.h:291
librevenge::RVNGString text
Definition ZMFTypes.h:287
uint32_t length
Definition ZMFTypes.h:288
Font font
Definition ZMFTypes.h:289
Definition ZMFTypes.h:259
boost::optional< Fill > fill
Definition ZMFTypes.h:261
Style()
Definition ZMFTypes.h:265
boost::optional< Transparency > transparency
Definition ZMFTypes.h:262
boost::optional< Pen > pen
Definition ZMFTypes.h:260
boost::optional< Shadow > shadow
Definition ZMFTypes.h:263
Definition ZMFTypes.h:377
double height
Definition ZMFTypes.h:381
double width
Definition ZMFTypes.h:380
std::vector< Row > rows
Definition ZMFTypes.h:378
std::vector< Column > columns
Definition ZMFTypes.h:379
Point topLeftPoint
Definition ZMFTypes.h:382
Table()
Definition ZMFTypes.h:384
Definition ZMFTypes.h:334
Text()
Definition ZMFTypes.h:337
std::vector< Paragraph > paragraphs
Definition ZMFTypes.h:335
Definition ZMFTypes.h:233
double opacity() const
Definition ZMFTypes.h:236
Transparency()
Definition ZMFTypes.h:241
Color color
Definition ZMFTypes.h:234
Definition ZMFTypes.h:390
double width
Definition ZMFTypes.h:391
double topOffset
Definition ZMFTypes.h:394
double leftOffset
Definition ZMFTypes.h:393
ZMFPageSettings()
Definition ZMFTypes.h:397
double height
Definition ZMFTypes.h:392
Color color
Definition ZMFTypes.h:395
ZMFPageSettings(double w, double h, double left, double top, Color c=Color(255, 255, 255))
Definition ZMFTypes.h:400

Generated for libzmf by doxygen 1.9.7