OpenTwin 0.1
OpenTwin
 
Loading...
Searching...
No Matches
Rect.h
Go to the documentation of this file.
1
4// ###########################################################################################################################################################################################################################################################################################################################
5
6#pragma once
7
8// OpenTwin header
10#include "OTCore/Size2D.h"
11#include "OTCore/Point2D.h"
12
13namespace ot {
14
15 class RectD;
16 class RectF;
17
21 public:
22 Rect();
23 Rect(const Point2D& _topLeft, const Point2D& _bottomRight);
24 Rect(const Point2D& _topLeft, const Size2D& _size);
25 Rect(const Rect& _other);
26
27 // ###########################################################################################################################################################################################################################################################################################################################
28
29 // Base class methods
30
34 virtual void addToJsonObject(ot::JsonValue& _object, ot::JsonAllocator& _allocator) const override;
35
39 virtual void setFromJsonObject(const ot::ConstJsonObject& _object) override;
40
41 // ###########################################################################################################################################################################################################################################################################################################################
42
43 // Operators
44
45 bool operator = (const Rect& _other) { m_topLeft = _other.getTopLeft(); m_bottomRight = _other.getBottomRight(); return this; };
46 bool operator == (const Rect& _other) const { return m_topLeft == _other.getTopLeft() && m_bottomRight == _other.getBottomRight(); };
47 bool operator != (const Rect& _other) const { return m_topLeft != _other.getTopLeft() || m_bottomRight != _other.getBottomRight(); };
48
49 // ###########################################################################################################################################################################################################################################################################################################################
50
51 // Setter / Getter
52
53 void setTop(int _top) { m_topLeft.setY(_top); };
54 int getTop(void) const { return m_topLeft.y(); };
55
56 void setLeft(int _left) { m_topLeft.setX(_left); };
57 int getLeft(void) const { return m_topLeft.x(); };
58
59 void setTopLeft(const Point2D& _topLeft) { m_topLeft = _topLeft; };
60 const Point2D& getTopLeft(void) const { return m_topLeft; };
61
62 void setBottom(int _bottom) { m_bottomRight.setY(_bottom); };
63 int getBottom(void) const { return m_bottomRight.y(); };
64
65 void setRight(int _right) { m_bottomRight.setX(_right); };
66 int getRight(void) const { return m_bottomRight.x(); };
67
68 void setBottomRight(const Point2D& _bottomRight) { m_bottomRight = m_bottomRight; };
69 const Point2D& getBottomRight(void) const { return m_bottomRight; };
70
71 void setWidth(int _width) { m_bottomRight = Point2D(m_topLeft.x() + _width, m_topLeft.y()); };
72 int getWidth(void) const { return m_bottomRight.x() - m_topLeft.x(); };
73
74 void setHeight(int _height) { m_bottomRight = Point2D(m_topLeft.x(), m_topLeft.y() + _height); };
75 int getHeight(void) const { return m_bottomRight.y() - m_topLeft.y(); };
76
77 void setSize(const Size2D& _size) { m_bottomRight = Point2D(m_topLeft.x() + _size.width(), m_topLeft.y() + _size.height()); };
78 Size2D getSize(void) const { return Size2D(m_bottomRight.x() - m_topLeft.x(), m_bottomRight.y() - m_topLeft.y()); };
79
80 // ###########################################################################################################################################################################################################################################################################################################################
81
82 // Basic calculations
83
85 Rect unionWith(const Rect& _other) const;
86
88 Rect intersectsWith(const Rect& _other) const;
89
91 bool isAllZero(void) const { return m_topLeft.x() == 0 && m_topLeft.y() == 0 && m_bottomRight.x() == 0 && m_bottomRight.y() == 0; };
92
95 bool isValid(void) const { return (m_topLeft.x() <= m_bottomRight.x()) && (m_topLeft.y() <= m_bottomRight.y()); };
96
98 void moveTo(int _ax, int _ay) { this->moveTo(Point2D(_ax, _ay)); };
99
102 void moveTo(const Point2D& _topLeft);
103
105 void moveBy(int _dx, int _dy) { this->moveBy(Point2D(_dx, _dy)); };
106
109 void moveBy(const Point2D& _distance);
110
111 RectF toRectF(void) const;
112 RectD toRectD(void) const;
113
114 private:
115 Point2D m_topLeft;
116 Point2D m_bottomRight;
117 };
118
119 // ###########################################################################################################################################################################################################################################################################################################################
120
121 // ###########################################################################################################################################################################################################################################################################################################################
122
123 // ###########################################################################################################################################################################################################################################################################################################################
124
128 public:
129 RectF();
130 RectF(const Point2DF& _topLeft, const Point2DF& _bottomRight);
131 RectF(const Point2DF& _topLeft, const Size2DF& _size);
132 RectF(const RectF& _other);
133
134 // ###########################################################################################################################################################################################################################################################################################################################
135
136 // Base class methods
137
141 virtual void addToJsonObject(ot::JsonValue& _object, ot::JsonAllocator& _allocator) const override;
142
146 virtual void setFromJsonObject(const ot::ConstJsonObject& _object) override;
147
148 // ###########################################################################################################################################################################################################################################################################################################################
149
150 // Operators
151
152 bool operator = (const RectF& _other) { m_topLeft = _other.getTopLeft(); m_bottomRight = _other.getBottomRight(); return this; };
153 bool operator == (const RectF& _other) const { return m_topLeft == _other.getTopLeft() && m_bottomRight == _other.getBottomRight(); };
154 bool operator != (const RectF& _other) const { return m_topLeft != _other.getTopLeft() || m_bottomRight != _other.getBottomRight(); };
155
156 // ###########################################################################################################################################################################################################################################################################################################################
157
158 // Setter / Getter
159
160 void setTop(float _top) { m_topLeft.setY(_top); };
161 float getTop(void) const { return m_topLeft.y(); };
162
163 void setLeft(float _left) { m_topLeft.setX(_left); };
164 float getLeft(void) const { return m_topLeft.x(); };
165
166 void setTopLeft(const Point2DF& _topLeft) { m_topLeft = _topLeft; };
167 const Point2DF& getTopLeft(void) const { return m_topLeft; };
168
169 void setBottom(float _bottom) { m_bottomRight.setY(_bottom); };
170 float getBottom(void) const { return m_bottomRight.y(); };
171
172 void setRight(float _right) { m_bottomRight.setX(_right); };
173 float getRight(void) const { return m_bottomRight.x(); };
174
175 void setBottomRight(const Point2DF& _bottomRight) { m_bottomRight = m_bottomRight; };
176 const Point2DF& getBottomRight(void) const { return m_bottomRight; };
177
178 void setWidth(float _width) { m_bottomRight = Point2DF(m_topLeft.x() + _width, m_topLeft.y()); };
179 float getWidth(void) const { return m_bottomRight.x() - m_topLeft.x(); };
180
181 void setHeight(float _height) { m_bottomRight = Point2DF(m_topLeft.x(), m_topLeft.y() + _height); };
182 float getHeight(void) const { return m_bottomRight.y() - m_topLeft.y(); };
183
184 void setSize(const Size2DF& _size) { m_bottomRight = Point2DF(m_topLeft.x() + _size.width(), m_topLeft.y() + _size.height()); };
185 Size2DF getSize(void) const { return Size2DF(m_bottomRight.x() - m_topLeft.x(), m_bottomRight.y() - m_topLeft.y()); };
186
187 // ###########################################################################################################################################################################################################################################################################################################################
188
189 // Basic calculations
190
192 RectF unionWith(const RectF& _other) const;
193
195 RectF intersectsWith(const RectF& _other) const;
196
198 bool isAllZero(void) const { return m_topLeft.x() == 0 && m_topLeft.y() == 0 && m_bottomRight.x() == 0 && m_bottomRight.y() == 0; };
199
202 bool isValid(void) const { return (m_topLeft.x() <= m_bottomRight.x()) && (m_topLeft.y() <= m_bottomRight.y()); };
203
205 void moveTo(float _ax, float _ay) { this->moveTo(Point2DF(_ax, _ay)); };
206
209 void moveTo(const Point2DF& _topLeft);
210
212 void moveBy(float _dx, float _dy) { this->moveBy(Point2DF(_dx, _dy)); };
213
216 void moveBy(const Point2DF& _distance);
217
218 Rect toRect(void) const;
219 RectD toRectD(void) const;
220
221 private:
222 Point2DF m_topLeft;
223 Point2DF m_bottomRight;
224 };
225
226 // ###########################################################################################################################################################################################################################################################################################################################
227
228 // ###########################################################################################################################################################################################################################################################################################################################
229
230 // ###########################################################################################################################################################################################################################################################################################################################
231
235 public:
236 RectD();
237 RectD(const Point2DD& _topLeft, const Point2DD& _bottomRight);
238 RectD(const Point2DD& _topLeft, const Size2DD& _size);
239 RectD(const RectD& _other);
240
241 // ###########################################################################################################################################################################################################################################################################################################################
242
243 // Base class methods
244
248 virtual void addToJsonObject(ot::JsonValue& _object, ot::JsonAllocator& _allocator) const override;
249
253 virtual void setFromJsonObject(const ot::ConstJsonObject& _object) override;
254
255 // ###########################################################################################################################################################################################################################################################################################################################
256
257 // Operators
258
259 bool operator = (const RectD& _other) { m_topLeft = _other.getTopLeft(); m_bottomRight = _other.getBottomRight(); return this; };
260 bool operator == (const RectD& _other) const { return m_topLeft == _other.getTopLeft() && m_bottomRight == _other.getBottomRight(); };
261 bool operator != (const RectD& _other) const { return m_topLeft != _other.getTopLeft() || m_bottomRight != _other.getBottomRight(); };
262
263 // ###########################################################################################################################################################################################################################################################################################################################
264
265 // Setter / Getter
266
267 void setTop(double _top) { m_topLeft.setY(_top); };
268 double getTop(void) const { return m_topLeft.y(); };
269
270 void setLeft(double _left) { m_topLeft.setX(_left); };
271 double getLeft(void) const { return m_topLeft.x(); };
272
273 void setTopLeft(const Point2DD& _topLeft) { m_topLeft = _topLeft; };
274 const Point2DD& getTopLeft(void) const { return m_topLeft; };
275
276 void setBottom(double _bottom) { m_bottomRight.setY(_bottom); };
277 double getBottom(void) const { return m_bottomRight.y(); };
278
279 void setRight(double _right) { m_bottomRight.setX(_right); };
280 double getRight(void) const { return m_bottomRight.x(); };
281
282 void setBottomRight(const Point2DD& _bottomRight) { m_bottomRight = m_bottomRight; };
283 const Point2DD& getBottomRight(void) const { return m_bottomRight; };
284
285 void setWidth(double _width) { m_bottomRight = Point2DD(m_topLeft.x() + _width, m_topLeft.y()); };
286 double getWidth(void) const { return m_bottomRight.x() - m_topLeft.x(); };
287
288 void setHeight(double _height) { m_bottomRight = Point2DD(m_topLeft.x(), m_topLeft.y() + _height); };
289 double getHeight(void) const { return m_bottomRight.y() - m_topLeft.y(); };
290
291 void setSize(const Size2DD& _size) { m_bottomRight = Point2DD(m_topLeft.x() + _size.width(), m_topLeft.y() + _size.height()); };
292 Size2DD getSize(void) const { return Size2DD(m_bottomRight.x() - m_topLeft.x(), m_bottomRight.y() - m_topLeft.y()); };
293
294 // ###########################################################################################################################################################################################################################################################################################################################
295
296 // Basic calculations
297
299 RectD unionWith(const RectD& _other) const;
300
302 RectD intersectsWith(const RectD& _other) const;
303
305 bool isAllZero(void) const { return m_topLeft.x() == 0 && m_topLeft.y() == 0 && m_bottomRight.x() == 0 && m_bottomRight.y() == 0; };
306
309 bool isValid(void) const { return (m_topLeft.x() <= m_bottomRight.x()) && (m_topLeft.y() <= m_bottomRight.y()); };
310
312 void moveTo(double _ax, double _ay) { this->moveTo(Point2DD(_ax, _ay)); };
313
316 void moveTo(const Point2DD& _topLeft);
317
319 void moveBy(double _dx, double _dy) { this->moveBy(Point2DD(_dx, _dy)); };
320
323 void moveBy(const Point2DD& _distance);
324
325 Rect toRect(void) const;
326 RectF toRectF(void) const;
327
328 private:
329 Point2DD m_topLeft;
330 Point2DD m_bottomRight;
331 };
332
333}
#define OT_CORE_API_EXPORT
Dll import.
Definition CoreAPIExport.h:8
bool operator==(const FaceSelection &left, const FaceSelection &right)
Definition Model.cpp:55
2D Point with double values
Definition Point2D.h:144
2D Point with float values
Definition Point2D.h:82
2D Point with integer values
Definition Point2D.h:20
Rectangle that holds the top left and bottom right corner in double values.
Definition Rect.h:234
bool isAllZero(void) const
Returns true if top left is (0, 0) and bottom right is (0, 0).
Definition Rect.h:305
double getWidth(void) const
Definition Rect.h:286
const Point2DD & getBottomRight(void) const
Definition Rect.h:283
void setBottom(double _bottom)
Definition Rect.h:276
void setLeft(double _left)
Definition Rect.h:270
void setHeight(double _height)
Definition Rect.h:288
const Point2DD & getTopLeft(void) const
Definition Rect.h:274
double getBottom(void) const
Definition Rect.h:277
double getTop(void) const
Definition Rect.h:268
void setTop(double _top)
Definition Rect.h:267
bool isValid(void) const
Returns true if the top left and bottom right points are set correctly. If the left value is bigger t...
Definition Rect.h:309
double getRight(void) const
Definition Rect.h:280
void setSize(const Size2DD &_size)
Definition Rect.h:291
void setBottomRight(const Point2DD &_bottomRight)
Definition Rect.h:282
void moveTo(double _ax, double _ay)
Definition Rect.h:312
Size2DD getSize(void) const
Definition Rect.h:292
double getHeight(void) const
Definition Rect.h:289
void setWidth(double _width)
Definition Rect.h:285
void moveBy(double _dx, double _dy)
Definition Rect.h:319
double getLeft(void) const
Definition Rect.h:271
void setTopLeft(const Point2DD &_topLeft)
Definition Rect.h:273
void setRight(double _right)
Definition Rect.h:279
Definition Rect.h:127
const Point2DF & getTopLeft(void) const
Definition Rect.h:167
void setHeight(float _height)
Definition Rect.h:181
void setSize(const Size2DF &_size)
Definition Rect.h:184
const Point2DF & getBottomRight(void) const
Definition Rect.h:176
float getRight(void) const
Definition Rect.h:173
float getLeft(void) const
Definition Rect.h:164
void setTop(float _top)
Definition Rect.h:160
void moveBy(float _dx, float _dy)
Definition Rect.h:212
void setTopLeft(const Point2DF &_topLeft)
Definition Rect.h:166
bool isValid(void) const
Returns true if the top left and bottom right points are set correctly. If the left value is bigger t...
Definition Rect.h:202
Size2DF getSize(void) const
Definition Rect.h:185
void setBottomRight(const Point2DF &_bottomRight)
Definition Rect.h:175
float getWidth(void) const
Definition Rect.h:179
void setBottom(float _bottom)
Definition Rect.h:169
float getTop(void) const
Definition Rect.h:161
float getHeight(void) const
Definition Rect.h:182
float getBottom(void) const
Definition Rect.h:170
void setLeft(float _left)
Definition Rect.h:163
void moveTo(float _ax, float _ay)
Definition Rect.h:205
void setWidth(float _width)
Definition Rect.h:178
void setRight(float _right)
Definition Rect.h:172
bool isAllZero(void) const
Returns true if top left is (0, 0) and bottom right is (0, 0).
Definition Rect.h:198
Rectangle that holds the top left and bottom right corner in int values.
Definition Rect.h:20
int getRight(void) const
Definition Rect.h:66
void setTopLeft(const Point2D &_topLeft)
Definition Rect.h:59
const Point2D & getTopLeft(void) const
Definition Rect.h:60
void moveBy(int _dx, int _dy)
Definition Rect.h:105
const Point2D & getBottomRight(void) const
Definition Rect.h:69
int getTop(void) const
Definition Rect.h:54
Size2D getSize(void) const
Definition Rect.h:78
void setLeft(int _left)
Definition Rect.h:56
bool isAllZero(void) const
Returns true if top left is (0, 0) and bottom right is (0, 0).
Definition Rect.h:91
void setWidth(int _width)
Definition Rect.h:71
void setBottomRight(const Point2D &_bottomRight)
Definition Rect.h:68
void moveTo(int _ax, int _ay)
Definition Rect.h:98
bool isValid(void) const
Returns true if the top left and bottom right points are set correctly. If the left value is bigger t...
Definition Rect.h:95
int getBottom(void) const
Definition Rect.h:63
int getHeight(void) const
Definition Rect.h:75
void setBottom(int _bottom)
Definition Rect.h:62
void setHeight(int _height)
Definition Rect.h:74
void setTop(int _top)
Definition Rect.h:53
int getWidth(void) const
Definition Rect.h:72
int getLeft(void) const
Definition Rect.h:57
void setRight(int _right)
Definition Rect.h:65
void setSize(const Size2D &_size)
Definition Rect.h:77
The Serializable class is the default interface of serializable objects.
Definition Serializable.h:17
2D Size with double values
Definition Size2D.h:115
double height(void) const
Return the height.
Definition Size2D.h:151
double width(void) const
Return the width.
Definition Size2D.h:144
2D Size with float values
Definition Size2D.h:65
float width(void) const
Return the width.
Definition Size2D.h:94
float height(void) const
Return the height.
Definition Size2D.h:101
2D Size with integer values
Definition Size2D.h:15
int height(void) const
Return the height.
Definition Size2D.h:51
int width(void) const
Return the width.
Definition Size2D.h:44
Definition Connector.h:8
rapidjson::Value JsonValue
Writable JSON value.
Definition JSON.h:27
rapidjson::GenericObject< true, rapidjson::GenericValue< rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator< rapidjson::CrtAllocator > > > ConstJsonObject
Read only JSON Object.
Definition JSON.h:35
rapidjson::MemoryPoolAllocator< rapidjson::CrtAllocator > JsonAllocator
Allocator used for writing to JSON values.
Definition JSON.h:30