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