diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2012-03-21 12:00:36 +0100 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2013-01-05 17:17:51 +0100 |
commit | ddcaca8432c2caf57d1defade0c32e90c649554c (patch) | |
tree | 3fb4f8edfb3aac494bce9d858d32b1cbec09d82e /src/utils/rectangle.hpp | |
parent | 2aba7ea7a02f967efc40edb332ab42c56ed92ce6 (diff) | |
download | usdx-ddcaca8432c2caf57d1defade0c32e90c649554c.tar.gz usdx-ddcaca8432c2caf57d1defade0c32e90c649554c.tar.xz usdx-ddcaca8432c2caf57d1defade0c32e90c649554c.zip |
utils: templatized point, point_3d and rectangle
added template parameter for the geometry helper classes,
moved function definitions to hpp file to support templates
Diffstat (limited to 'src/utils/rectangle.hpp')
-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(); + } }; }; |