diff options
Diffstat (limited to '')
-rw-r--r-- | src/utils/rectangle.hpp | 64 |
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(); + } }; }; |