aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils/rectangle.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/rectangle.hpp')
-rw-r--r--src/utils/rectangle.hpp64
1 files changed, 52 insertions, 12 deletions
diff --git a/src/utils/rectangle.hpp b/src/utils/rectangle.hpp
index c77b8673..abe26ef1 100644
--- a/src/utils/rectangle.hpp
+++ b/src/utils/rectangle.hpp
@@ -32,22 +32,62 @@
namespace usdx
{
+ template <class T>
class Rectangle
{
private:
- Point point1;
- Point point2;
+ Point<T> point1;
+ Point<T> point2;
+
public:
- Rectangle(float x1, float y1, float x2, float y2);
- Rectangle(const Point& point1, const Point& point2);
- Rectangle(const Point& point1, float width, float height);
- Rectangle(const Point& point1, const Dimension& dimension);
- Rectangle(const Rectangle& rectangle);
-
- const Point& get_point1(void) const;
- const Point& get_point2(void) const;
- const float get_width(void) const;
- const float get_height(void) const;
+ Rectangle(T x1, T y1, T x2, T y2) :
+ point1(x1, y1), point2(x2, y2)
+ {
+ }
+
+ Rectangle(const Point<T>& point1, const Point<T>& point2) :
+ point1(point1), point2(point2)
+ {
+ }
+
+ Rectangle(const Point<T>& point1, T width, T height) :
+ point1(point1),
+ point2(point1.get_x() + width, point1.get_y() + height)
+ {
+ }
+
+ Rectangle(const Point<T>& point1, const Dimension& dimension) :
+ point1(point1),
+ point2(point1.get_x() + dimension.get_width(),
+ point1.get_y() + dimension.get_height())
+ {
+ }
+
+ Rectangle(const Rectangle<T>& rectangle) :
+ point1(rectangle.point1), point2(rectangle.point2)
+ {
+ }
+
+
+ const Point<T>& get_point1(void) const
+ {
+ return point1;
+ }
+
+ const Point<T>& get_point2(void) const
+ {
+ return point2;
+ }
+
+ const T get_width(void) const
+ {
+ return point2.get_x() - point1.get_x();
+ }
+
+ const T get_height(void) const
+ {
+ return point2.get_y() - point1.get_y();
+ }
};
};