acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
item.h
1// From aura/graphics/draw2d/region by camilo on 2023-06-01 06:28 <3ThomasBorregaardSorensen!!
2#pragma once
3
4
5//#include "_geometry2d.h"
6//#include "_collection.h"
7#include "polygon.h"
8
9
10namespace geometry2d
11{
12
13
14 class CLASS_DECL_ACME item :
15 virtual public ::subparticle
16 {
17 public:
18
19
20 item();
21 ~item() override;
22
23
24 virtual ::draw2d::enum_item type() const;
25
26
27 virtual void translate(const ::f64_point & point);
28 //virtual void expand_bounding_box(::f64_rectangle & rectangle);
29 virtual bool contains(const ::f64_point & point);
30 virtual void expand_bounding_box(::f64_rectangle & rectangle);
31
32 };
33
34
35 class CLASS_DECL_ACME begin_figure_item :
36 virtual public item
37 {
38 public:
39
40
41 begin_figure_item();
42 ~begin_figure_item() override;
43
44 ::draw2d::enum_item type() const override;
45
46
47 ::subparticle_pointer clone() override
48 {
49
50 auto pitem = allocateø begin_figure_item();
51
52 return pitem;
53
54 }
55
56
57
58 };
59
60
61 class CLASS_DECL_ACME close_figure_item :
62 virtual public item
63 {
64 public:
65
66
67 close_figure_item();
68 ~close_figure_item() override;
69
70 ::draw2d::enum_item type() const override;
71
72
73 ::subparticle_pointer clone() override
74 {
75
76 auto pitem = allocateø close_figure_item();
77
78 return pitem;
79
80 }
81
82
83 };
84
85
86
87 class CLASS_DECL_ACME end_figure_item :
88 virtual public item
89 {
90 public:
91
92
93 end_figure_item();
94 ~end_figure_item() override;
95
96 ::draw2d::enum_item type() const override;
97
98
99 ::subparticle_pointer clone() override
100 {
101
102 auto pitem = allocateø end_figure_item();
103
104 return pitem;
105
106 }
107
108
109 };
110
111
112 class CLASS_DECL_ACME intersect_clip_item :
113 virtual public item
114 {
115 public:
116
117
118 intersect_clip_item();
119 ~intersect_clip_item() override;
120
121 ::draw2d::enum_item type() const override;
122
123
124 ::subparticle_pointer clone() override
125 {
126
127 auto pitem = allocateø intersect_clip_item();
128
129 return pitem;
130
131 }
132
133
134 };
135
136
137 class CLASS_DECL_ACME polygon_item :
138 virtual public item
139 {
140 public:
141
142 polygon_item();
143 ~polygon_item() override;
144
145
146 ::f64_polygon m_polygon;
147 ::draw2d::enum_fill_mode m_efillmode;
148
149
150 ::draw2d::enum_item type() const override;
151
152
153 //void translate(const ::i32_point & point) override;
154 //void expand_bounding_box(::f64_rectangle & rectangle) override;
155 void translate(const ::f64_point & point) override;
156 bool contains(const ::f64_point & p) override;
157 //virtual bool contains(const ::f64_point & point) { m_item.contains(point); }
158 void expand_bounding_box(::f64_rectangle & rectangle)override;
159 //void expand_bounding_box(::f64_rectangle & rectangle) override;
160
161
162 ::subparticle_pointer clone() override
163 {
164
165 auto pitem = allocateø polygon_item();
166
167 pitem->m_polygon = m_polygon;
168
169 pitem->m_efillmode = m_efillmode;
170
171 return pitem;
172
173 }
174
175
176 };
177
178
179 // using poly_polygon_item_base = item_type < ::f64_poly_polygon, ::draw2d::e_item_poly_polygon >;
180
181
182 class CLASS_DECL_ACME poly_polygon_item :
183 virtual public item
184 {
185 public:
186
187
188 ::f64_poly_polygon m_polypolygon;
189 ::draw2d::enum_fill_mode m_efillmode;
190
191 poly_polygon_item();
192 ~poly_polygon_item() override;
193 //::draw2d::enum_item type() const override;
194
195
196 void translate(const ::f64_point & point) override;
197 //void expand_bounding_box(::f64_rectangle & rectangle) override;
198 bool contains(const ::f64_point & pooint) override;
199 void expand_bounding_box(::f64_rectangle & rectangle) override;
200
201
202 ::subparticle_pointer clone() override
203 {
204
205 auto pitem = allocateø poly_polygon_item();
206
207 pitem->m_polypolygon = m_polypolygon;
208
209 pitem->m_efillmode = m_efillmode;
210
211 return pitem;
212
213 }
214
215
216
217
218 };
219
220
221 class CLASS_DECL_ACME combine_item :
222 virtual public item
223 {
224 public:
225
226
228
229 ::pointer < ::geometry2d::region > m_pregion1;
230 ::pointer < ::geometry2d::region > m_pregion2;
231 ::draw2d::enum_combine m_ecombine;
232 combine_item();
233 ~combine_item() override;
234
235 ::draw2d::enum_item type() const override;
236
237
238 void translate(const ::f64_point & point) override;
239 bool contains(const ::f64_point & point) override;
240 void expand_bounding_box(::f64_rectangle & rectangle) override;
241
242
243 ::subparticle_pointer clone() override;
244
245
246 };
247
248
249 class CLASS_DECL_ACME round_rectangle_item :
250 virtual public item
251 {
252 public:
253
254
255 ::f64_rectangle m_rectangle;
256 ::f64_size m_sizeRadius;
257
258
259 void translate(const ::f64_point & point) override;
260 bool contains(const ::f64_point & point) override;
261 void expand_bounding_box(::f64_rectangle & rectangle) override;
262
263
264 ::subparticle_pointer clone() override
265 {
266
267 auto pitem = allocateø round_rectangle_item();
268
269 pitem->m_rectangle = m_rectangle;
270
271 pitem->m_sizeRadius = m_sizeRadius;
272
273 return pitem;
274
275 }
276
277
278 };
279
280
281} // namespace geometry2d
282
283
284
Definition item copy.h:65
Definition item copy.h:77
Definition item copy.h:164
Definition item copy.h:90
Definition item copy.h:102
Definition item copy.h:48
Definition item copy.h:142
Definition item copy.h:114
Definition item copy.h:188