-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSVGShapes.h
158 lines (109 loc) · 3.53 KB
/
SVGShapes.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#ifndef _SVGSHAPES_H_
#define _SVGSHAPES_H_
#include "SVGPath.h"
#include "SVGView.h"
class BSVGRect : public BSVGPath {
public:
BSVGRect(BSVGView *parent);
BSVGRect(BMessage *data);
static BArchivable *Instantiate(BMessage *data);
virtual status_t Archive(BMessage *data, bool deep = true) const;
virtual element_t Type() { return B_SVG_RECT; };
virtual void HandleAttribute(attribute_s *attr);
virtual void FinalizeShape();
virtual void RecreateData();
void SetX(float x);
void SetY(float y);
void SetWidth(float width);
void SetHeight(float height);
void SetRX(float rx);
void SetRY(float ry);
private:
float fX;
float fY;
float fWidth;
float fHeight;
float fRX;
float fRY;
bool fRXSet;
bool fRYSet;
};
// **************************************************************************
class BSVGEllipse : public BSVGPath {
public:
BSVGEllipse(BSVGView *parent);
BSVGEllipse(BMessage *data);
static BArchivable *Instantiate(BMessage *data);
virtual status_t Archive(BMessage *data, bool deep = true) const;
virtual element_t Type() { return B_SVG_ELLIPSE; };
virtual void HandleAttribute(attribute_s *attr);
virtual void FinalizeShape();
virtual void RecreateData();
void SetCX(float cx);
void SetCY(float cy);
void SetRX(float rx);
void SetRY(float ry);
private:
friend class BSVGCircle;
BPoint fCenter;
float fRX;
float fRY;
bool fRXSet;
bool fRYSet;
};
// **************************************************************************
class BSVGCircle : public BSVGEllipse {
public:
BSVGCircle(BSVGView *parent);
BSVGCircle(BMessage *data);
static BArchivable *Instantiate(BMessage *data);
virtual status_t Archive(BMessage *data, bool deep = true) const;
virtual element_t Type() { return B_SVG_CIRCLE; };
virtual void HandleAttribute(attribute_s *attr);
virtual void RecreateData();
void SetR(float r);
};
// **************************************************************************
class BSVGLine : public BSVGPath {
public:
BSVGLine(BSVGView *parent);
BSVGLine(BMessage *data);
static BArchivable *Instantiate(BMessage *data);
virtual status_t Archive(BMessage *data, bool deep = true) const;
virtual element_t Type() { return B_SVG_LINE; };
virtual void HandleAttribute(attribute_s *attr);
virtual void FinalizeShape();
virtual void RecreateData();
void SetX1(float x1);
void SetY1(float y1);
void SetX2(float x2);
void SetY2(float y2);
private:
BPoint fPoint1;
BPoint fPoint2;
};
// **************************************************************************
class BSVGPolyline : public BSVGPath {
public:
BSVGPolyline(BSVGView *parent);
BSVGPolyline(BMessage *data);
static BArchivable *Instantiate(BMessage *data);
virtual status_t Archive(BMessage *data, bool deep = true) const;
virtual element_t Type() { return B_SVG_POLYLINE; };
virtual void HandleAttribute(attribute_s *attr);
virtual void FinalizeShape();
virtual void RecreateData();
};
// **************************************************************************
class BSVGPolygon : public BSVGPolyline {
public:
BSVGPolygon(BSVGView *parent);
BSVGPolygon(BMessage *data);
static BArchivable *Instantiate(BMessage *data);
virtual status_t Archive(BMessage *data, bool deep = true) const;
virtual element_t Type() { return B_SVG_POLYGON; };
virtual void HandleAttribute(attribute_s *attr);
virtual void FinalizeShape();
virtual void RecreateData();
};
#endif