CDRTypes.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 libcdr 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 __CDRTYPES_H__
11#define __CDRTYPES_H__
12
13#include <utility>
14#include <vector>
15#include <math.h>
16#include <librevenge/librevenge.h>
17#include "CDRTransforms.h"
18#include "CDRPath.h"
19#include "libcdr_utils.h"
20
21namespace libcdr
22{
23
24struct CDRBox
25{
26 double m_x;
27 double m_y;
28 double m_w;
29 double m_h;
31 : m_x(0.0), m_y(0.0), m_w(0.0), m_h(0.0) {}
32 CDRBox(double x0, double y0, double x1, double y1)
33 : m_x(x0 < x1 ? x0 : x1), m_y(y0 < y1 ? y0 : y1), m_w(fabs(x1-x0)), m_h(fabs(y1-y0)) {}
34 double getWidth() const
35 {
36 return m_w;
37 }
38 double getHeight() const
39 {
40 return m_h;
41 }
42 double getMinX() const
43 {
44 return m_x;
45 }
46 double getMinY() const
47 {
48 return m_y;
49 }
50
51};
52
54{
55 unsigned short m_colorModel;
56 unsigned m_colorValue;
58 CDRColor(unsigned short colorModel, unsigned colorValue)
59 : m_colorModel(colorModel), m_colorValue(colorValue) {}
60};
61
63{
65 double m_offset;
67 CDRGradientStop(const CDRColor &color, double offset)
68 : m_color(color), m_offset(offset) {}
69};
70
72{
73 unsigned char m_type;
74 unsigned char m_mode;
75 double m_angle;
76 double m_midPoint;
80 std::vector<CDRGradientStop> m_stops;
83};
84
86{
87 unsigned id;
88 double width;
89 double height;
91 double xOffset;
92 double yOffset;
93 double rcpOffset;
94 unsigned char flags;
95 CDRImageFill() : id(0), width(0.0), height(0.0), isRelative(false), xOffset(0.0), yOffset(0.0), rcpOffset(0.0), flags(0)
96 {}
97 CDRImageFill(unsigned i, double w, double h, bool r, double x, double y, double o, unsigned char f)
98 : id(i), width(w), height(h), isRelative(r), xOffset(x), yOffset(y), rcpOffset(o), flags(f) {}
99};
100
102{
103 unsigned short fillType;
108 : fillType((unsigned short)-1), color1(), color2(), gradient(), imageFill() {}
109 CDRFillStyle(unsigned short ft, CDRColor c1, CDRColor c2, const CDRGradient &gr, const CDRImageFill &img)
110 : fillType(ft), color1(c1), color2(c2), gradient(gr), imageFill(img) {}
111};
112
114{
115 unsigned short lineType;
116 unsigned short capsType;
117 unsigned short joinType;
118 double lineWidth;
119 double stretch;
120 double angle;
122 std::vector<unsigned> dashArray;
126 : lineType((unsigned short)-1), capsType(0), joinType(0), lineWidth(0.0),
127 stretch(0.0), angle(0.0), color(), dashArray(),
128 startMarker(), endMarker() {}
129 CDRLineStyle(unsigned short lt, unsigned short ct, unsigned short jt,
130 double lw, double st, double a, const CDRColor &c, const std::vector<unsigned> &da,
131 const CDRPath &sm, const CDRPath &em)
132 : lineType(lt), capsType(ct), joinType(jt), lineWidth(lw),
133 stretch(st), angle(a), color(c), dashArray(da),
134 startMarker(sm), endMarker(em) {}
135};
136
138{
139 unsigned short m_charSet;
140 librevenge::RVNGString m_fontName;
142 unsigned m_align;
146 unsigned m_parentId;
148 : m_charSet((unsigned short)-1), m_fontName(),
149 m_fontSize(0.0), m_align(0), m_leftIndent(0.0), m_firstIndent(0.0),
151 {
152 m_fontName.clear();
153 }
154 void overrideStyle(const CDRStyle &override)
155 {
156 if (override.m_charSet != (unsigned short)-1 || override.m_fontName.len())
157 {
158 m_charSet = override.m_charSet;
159 m_fontName = override.m_fontName;
160 }
161 if (!CDR_ALMOST_ZERO(override.m_fontSize))
162 m_fontSize = override.m_fontSize;
163 if (override.m_align)
164 m_align = override.m_align;
165 if (override.m_leftIndent != 0.0 && override.m_firstIndent != 0.0 && override.m_rightIndent != 0.0)
166 {
167 m_leftIndent = override.m_leftIndent;
168 m_firstIndent = override.m_firstIndent;
169 m_rightIndent = override.m_rightIndent;
170 }
171 if (override.m_lineStyle.lineType != (unsigned short)-1)
172 m_lineStyle = override.m_lineStyle;
173 if (override.m_fillStyle.fillType != (unsigned short)-1)
174 m_fillStyle = override.m_fillStyle;
175 }
176};
177
179{
180 unsigned m_numAngles;
181 unsigned m_nextPoint;
182 double m_rx;
183 double m_ry;
184 double m_cx;
185 double m_cy;
186 CDRPolygon() : m_numAngles(0), m_nextPoint(0), m_rx(0.0), m_ry(0.0), m_cx(0.0), m_cy(0.0) {}
187 CDRPolygon(unsigned numAngles, unsigned nextPoint, double rx, double ry, double cx, double cy)
188 : m_numAngles(numAngles), m_nextPoint(nextPoint), m_rx(rx), m_ry(ry), m_cx(cx), m_cy(cy) {}
189 void create(CDRPath &path) const;
190};
191
193{
194 librevenge::RVNGBinaryData m_image;
195 double m_x1;
196 double m_x2;
197 double m_y1;
198 double m_y2;
199 CDRImage() : m_image(), m_x1(0.0), m_x2(0.0), m_y1(0.0), m_y2(0.0) {}
200 CDRImage(const librevenge::RVNGBinaryData &image, double x1, double x2, double y1, double y2)
201 : m_image(image), m_x1(x1), m_x2(x2), m_y1(y1), m_y2(y2) {}
202 double getMiddleX() const
203 {
204 return (m_x1 + m_x2) / 2.0;
205 }
206 double getMiddleY() const
207 {
208 return (m_y1 + m_y2) / 2.0;
209 }
210 const librevenge::RVNGBinaryData &getImage() const
211 {
212 return m_image;
213 }
214};
215
217{
218 unsigned width;
219 unsigned height;
220 std::vector<unsigned char> pattern;
222 CDRPattern(unsigned w, unsigned h, const std::vector<unsigned char> &p)
223 : width(w), height(h), pattern(p) {}
224};
225
227{
228 unsigned colorModel;
229 unsigned width;
230 unsigned height;
231 unsigned bpp;
232 std::vector<unsigned> palette;
233 std::vector<unsigned char> bitmap;
234 CDRBitmap() : colorModel(0), width(0), height(0), bpp(0), palette(), bitmap() {}
235 CDRBitmap(unsigned cm, unsigned w, unsigned h, unsigned b, const std::vector<unsigned> &p, const std::vector<unsigned char> &bmp)
236 : colorModel(cm), width(w), height(h), bpp(b), palette(p), bitmap(bmp) {}
237};
238
240{
241 double width;
242 double height;
243 double offsetX;
244 double offsetY;
245 CDRPage() : width(0.0), height(0.0), offsetX(0.0), offsetY(0.0) {}
246 CDRPage(double w, double h, double ox, double oy)
247 : width(w), height(h), offsetX(ox), offsetY(oy) {}
248};
249
251{
252 std::vector<std::pair<double, double> > points;
253 std::vector<unsigned> knotVector;
255 CDRSplineData(const std::vector<std::pair<double, double> > &ps, const std::vector<unsigned> &kntv)
256 : points(ps), knotVector(kntv) {}
257 void clear()
258 {
259 points.clear();
260 knotVector.clear();
261 }
262 bool empty()
263 {
264 return (points.empty() || knotVector.empty());
265 }
266 void create(CDRPath &path) const;
267};
268
270{
271 WaldoRecordInfo(unsigned char t, unsigned i, unsigned o)
272 : type(t), id(i), offset(o) {}
273 WaldoRecordInfo() : type(0), id(0), offset(0) {}
274 unsigned char type;
275 unsigned id;
276 unsigned offset;
277};
278
280{
281 WaldoRecordType1(unsigned id, unsigned short next, unsigned short previous,
282 unsigned short child, unsigned short parent, unsigned short flags,
283 double x0, double y0, double x1, double y1, const CDRTransform &trafo)
284 : m_id(id), m_next(next), m_previous(previous), m_child(child), m_parent(parent),
285 m_flags(flags), m_x0(x0), m_y0(y0), m_x1(x1), m_y1(y1), m_trafo(trafo) {}
287 : m_id(0), m_next(0), m_previous(0), m_child(0), m_parent(0), m_flags(0),
288 m_x0(0.0), m_y0(0.0), m_x1(0.0), m_y1(0.0), m_trafo() {}
289 unsigned m_id;
290 unsigned short m_next;
291 unsigned short m_previous;
292 unsigned short m_child;
293 unsigned short m_parent;
294 unsigned short m_flags;
295 double m_x0;
296 double m_y0;
297 double m_x1;
298 double m_y1;
300};
301
303{
304 CDRCMYKColor(double cyan, double magenta, double yellow, double black)
305 : c(cyan), m(magenta), y(yellow), k(black) {}
307 double c;
308 double m;
309 double y;
310 double k;
311};
312
314{
315 CDRRGBColor(double red, double green, double blue)
316 : r(red), g(green), b(blue) {}
318 double r;
319 double g;
320 double b;
321};
322
324{
325 CDRLab2Color(double l, double A, double B)
326 : L(l), a(A), b(B) {}
328 double L;
329 double a;
330 double b;
331};
332
334{
335 CDRLab4Color(double l, double A, double B)
336 : L(l), a(A), b(B) {}
338 double L;
339 double a;
340 double b;
341};
342
344{
346 CDRText(const librevenge::RVNGString &text, const CDRStyle &style)
347 : m_text(text), m_style(style) {}
348 librevenge::RVNGString m_text;
350};
351
353{
355 CDRTextLine(const CDRTextLine &line) : m_line(line.m_line) {}
356 void append(const CDRText &text)
357 {
358 m_line.push_back(text);
359 }
360 void clear()
361 {
362 m_line.clear();
363 }
364 std::vector<CDRText> m_line;
365};
366
368{
370 CDRFont(const librevenge::RVNGString &name, unsigned short encoding)
371 : m_name(name), m_encoding(encoding) {}
372 CDRFont(const CDRFont &font) = default;
373 CDRFont& operator=(const CDRFont &font) = default;
374 librevenge::RVNGString m_name;
375 unsigned short m_encoding;
376};
377
378} // namespace libcdr
379
380#endif /* __CDRTYPES_H__ */
381/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition CDRPath.h:37
Definition CDRTransforms.h:20
#define CDR_ALMOST_ZERO(m)
Definition libcdr_utils.h:31
Definition CDRCollector.h:25
Definition CDRTypes.h:227
unsigned bpp
Definition CDRTypes.h:231
unsigned width
Definition CDRTypes.h:229
CDRBitmap()
Definition CDRTypes.h:234
std::vector< unsigned char > bitmap
Definition CDRTypes.h:233
CDRBitmap(unsigned cm, unsigned w, unsigned h, unsigned b, const std::vector< unsigned > &p, const std::vector< unsigned char > &bmp)
Definition CDRTypes.h:235
unsigned height
Definition CDRTypes.h:230
std::vector< unsigned > palette
Definition CDRTypes.h:232
unsigned colorModel
Definition CDRTypes.h:228
Definition CDRTypes.h:25
double getHeight() const
Definition CDRTypes.h:38
double getMinX() const
Definition CDRTypes.h:42
CDRBox(double x0, double y0, double x1, double y1)
Definition CDRTypes.h:32
double m_y
Definition CDRTypes.h:27
double m_x
Definition CDRTypes.h:26
double m_h
Definition CDRTypes.h:29
double getMinY() const
Definition CDRTypes.h:46
double m_w
Definition CDRTypes.h:28
double getWidth() const
Definition CDRTypes.h:34
CDRBox()
Definition CDRTypes.h:30
Definition CDRTypes.h:303
double k
Definition CDRTypes.h:310
double m
Definition CDRTypes.h:308
CDRCMYKColor(double cyan, double magenta, double yellow, double black)
Definition CDRTypes.h:304
double y
Definition CDRTypes.h:309
~CDRCMYKColor()
Definition CDRTypes.h:306
double c
Definition CDRTypes.h:307
Definition CDRTypes.h:54
unsigned m_colorValue
Definition CDRTypes.h:56
unsigned short m_colorModel
Definition CDRTypes.h:55
CDRColor(unsigned short colorModel, unsigned colorValue)
Definition CDRTypes.h:58
CDRColor()
Definition CDRTypes.h:57
Definition CDRTypes.h:102
unsigned short fillType
Definition CDRTypes.h:103
CDRFillStyle()
Definition CDRTypes.h:107
CDRColor color1
Definition CDRTypes.h:104
CDRColor color2
Definition CDRTypes.h:104
CDRGradient gradient
Definition CDRTypes.h:105
CDRImageFill imageFill
Definition CDRTypes.h:106
CDRFillStyle(unsigned short ft, CDRColor c1, CDRColor c2, const CDRGradient &gr, const CDRImageFill &img)
Definition CDRTypes.h:109
Definition CDRTypes.h:368
CDRFont(const CDRFont &font)=default
CDRFont()
Definition CDRTypes.h:369
CDRFont(const librevenge::RVNGString &name, unsigned short encoding)
Definition CDRTypes.h:370
librevenge::RVNGString m_name
Definition CDRTypes.h:374
unsigned short m_encoding
Definition CDRTypes.h:375
CDRFont & operator=(const CDRFont &font)=default
Definition CDRTypes.h:63
CDRGradientStop()
Definition CDRTypes.h:66
CDRGradientStop(const CDRColor &color, double offset)
Definition CDRTypes.h:67
CDRColor m_color
Definition CDRTypes.h:64
double m_offset
Definition CDRTypes.h:65
Definition CDRTypes.h:72
CDRGradient()
Definition CDRTypes.h:81
double m_angle
Definition CDRTypes.h:75
unsigned char m_mode
Definition CDRTypes.h:74
std::vector< CDRGradientStop > m_stops
Definition CDRTypes.h:80
unsigned char m_type
Definition CDRTypes.h:73
int m_centerYOffset
Definition CDRTypes.h:79
int m_edgeOffset
Definition CDRTypes.h:77
int m_centerXOffset
Definition CDRTypes.h:78
double m_midPoint
Definition CDRTypes.h:76
Definition CDRTypes.h:86
bool isRelative
Definition CDRTypes.h:90
CDRImageFill()
Definition CDRTypes.h:95
double xOffset
Definition CDRTypes.h:91
double width
Definition CDRTypes.h:88
unsigned id
Definition CDRTypes.h:87
unsigned char flags
Definition CDRTypes.h:94
double rcpOffset
Definition CDRTypes.h:93
double yOffset
Definition CDRTypes.h:92
double height
Definition CDRTypes.h:89
CDRImageFill(unsigned i, double w, double h, bool r, double x, double y, double o, unsigned char f)
Definition CDRTypes.h:97
Definition CDRTypes.h:193
double m_y2
Definition CDRTypes.h:198
double m_x1
Definition CDRTypes.h:195
double m_y1
Definition CDRTypes.h:197
CDRImage()
Definition CDRTypes.h:199
const librevenge::RVNGBinaryData & getImage() const
Definition CDRTypes.h:210
double getMiddleX() const
Definition CDRTypes.h:202
CDRImage(const librevenge::RVNGBinaryData &image, double x1, double x2, double y1, double y2)
Definition CDRTypes.h:200
double getMiddleY() const
Definition CDRTypes.h:206
librevenge::RVNGBinaryData m_image
Definition CDRTypes.h:194
double m_x2
Definition CDRTypes.h:196
Definition CDRTypes.h:324
CDRLab2Color(double l, double A, double B)
Definition CDRTypes.h:325
double L
Definition CDRTypes.h:328
double b
Definition CDRTypes.h:330
double a
Definition CDRTypes.h:329
~CDRLab2Color()
Definition CDRTypes.h:327
Definition CDRTypes.h:334
double b
Definition CDRTypes.h:340
~CDRLab4Color()
Definition CDRTypes.h:337
CDRLab4Color(double l, double A, double B)
Definition CDRTypes.h:335
double a
Definition CDRTypes.h:339
double L
Definition CDRTypes.h:338
Definition CDRTypes.h:114
unsigned short capsType
Definition CDRTypes.h:116
double angle
Definition CDRTypes.h:120
CDRColor color
Definition CDRTypes.h:121
std::vector< unsigned > dashArray
Definition CDRTypes.h:122
CDRLineStyle(unsigned short lt, unsigned short ct, unsigned short jt, double lw, double st, double a, const CDRColor &c, const std::vector< unsigned > &da, const CDRPath &sm, const CDRPath &em)
Definition CDRTypes.h:129
CDRPath endMarker
Definition CDRTypes.h:124
unsigned short lineType
Definition CDRTypes.h:115
CDRPath startMarker
Definition CDRTypes.h:123
double stretch
Definition CDRTypes.h:119
CDRLineStyle()
Definition CDRTypes.h:125
double lineWidth
Definition CDRTypes.h:118
unsigned short joinType
Definition CDRTypes.h:117
Definition CDRTypes.h:240
double offsetY
Definition CDRTypes.h:244
CDRPage()
Definition CDRTypes.h:245
double width
Definition CDRTypes.h:241
double height
Definition CDRTypes.h:242
CDRPage(double w, double h, double ox, double oy)
Definition CDRTypes.h:246
double offsetX
Definition CDRTypes.h:243
Definition CDRTypes.h:217
CDRPattern()
Definition CDRTypes.h:221
std::vector< unsigned char > pattern
Definition CDRTypes.h:220
unsigned width
Definition CDRTypes.h:218
unsigned height
Definition CDRTypes.h:219
CDRPattern(unsigned w, unsigned h, const std::vector< unsigned char > &p)
Definition CDRTypes.h:222
Definition CDRTypes.h:179
double m_cx
Definition CDRTypes.h:184
unsigned m_numAngles
Definition CDRTypes.h:180
void create(CDRPath &path) const
Definition CDRTypes.cpp:14
CDRPolygon(unsigned numAngles, unsigned nextPoint, double rx, double ry, double cx, double cy)
Definition CDRTypes.h:187
double m_cy
Definition CDRTypes.h:185
CDRPolygon()
Definition CDRTypes.h:186
double m_ry
Definition CDRTypes.h:183
unsigned m_nextPoint
Definition CDRTypes.h:181
double m_rx
Definition CDRTypes.h:182
Definition CDRTypes.h:314
double b
Definition CDRTypes.h:320
~CDRRGBColor()
Definition CDRTypes.h:317
double g
Definition CDRTypes.h:319
CDRRGBColor(double red, double green, double blue)
Definition CDRTypes.h:315
double r
Definition CDRTypes.h:318
Definition CDRTypes.h:251
std::vector< unsigned > knotVector
Definition CDRTypes.h:253
std::vector< std::pair< double, double > > points
Definition CDRTypes.h:252
void create(CDRPath &path) const
Definition CDRTypes.cpp:54
CDRSplineData(const std::vector< std::pair< double, double > > &ps, const std::vector< unsigned > &kntv)
Definition CDRTypes.h:255
void clear()
Definition CDRTypes.h:257
CDRSplineData()
Definition CDRTypes.h:254
bool empty()
Definition CDRTypes.h:262
Definition CDRTypes.h:138
CDRStyle()
Definition CDRTypes.h:147
CDRLineStyle m_lineStyle
Definition CDRTypes.h:144
double m_leftIndent
Definition CDRTypes.h:143
double m_firstIndent
Definition CDRTypes.h:143
CDRFillStyle m_fillStyle
Definition CDRTypes.h:145
librevenge::RVNGString m_fontName
Definition CDRTypes.h:140
unsigned m_parentId
Definition CDRTypes.h:146
double m_rightIndent
Definition CDRTypes.h:143
void overrideStyle(const CDRStyle &override)
Definition CDRTypes.h:154
unsigned short m_charSet
Definition CDRTypes.h:139
double m_fontSize
Definition CDRTypes.h:141
unsigned m_align
Definition CDRTypes.h:142
Definition CDRTypes.h:353
CDRTextLine(const CDRTextLine &line)
Definition CDRTypes.h:355
void clear()
Definition CDRTypes.h:360
void append(const CDRText &text)
Definition CDRTypes.h:356
CDRTextLine()
Definition CDRTypes.h:354
std::vector< CDRText > m_line
Definition CDRTypes.h:364
Definition CDRTypes.h:344
CDRText()
Definition CDRTypes.h:345
CDRText(const librevenge::RVNGString &text, const CDRStyle &style)
Definition CDRTypes.h:346
librevenge::RVNGString m_text
Definition CDRTypes.h:348
CDRStyle m_style
Definition CDRTypes.h:349
Definition CDRTypes.h:270
unsigned char type
Definition CDRTypes.h:274
WaldoRecordInfo()
Definition CDRTypes.h:273
unsigned id
Definition CDRTypes.h:275
WaldoRecordInfo(unsigned char t, unsigned i, unsigned o)
Definition CDRTypes.h:271
unsigned offset
Definition CDRTypes.h:276
Definition CDRTypes.h:280
unsigned short m_previous
Definition CDRTypes.h:291
unsigned short m_flags
Definition CDRTypes.h:294
double m_x0
Definition CDRTypes.h:295
WaldoRecordType1()
Definition CDRTypes.h:286
double m_x1
Definition CDRTypes.h:297
unsigned short m_child
Definition CDRTypes.h:292
double m_y0
Definition CDRTypes.h:296
unsigned short m_next
Definition CDRTypes.h:290
unsigned short m_parent
Definition CDRTypes.h:293
CDRTransform m_trafo
Definition CDRTypes.h:299
double m_y1
Definition CDRTypes.h:298
unsigned m_id
Definition CDRTypes.h:289
WaldoRecordType1(unsigned id, unsigned short next, unsigned short previous, unsigned short child, unsigned short parent, unsigned short flags, double x0, double y0, double x1, double y1, const CDRTransform &trafo)
Definition CDRTypes.h:281

Generated for libcdr by doxygen 1.9.8