#include <assert.h>
+#include "math/sizef.hpp"
#include "math/vector.hpp"
#include "object/anchor_point.hpp"
+class Sizef;
+
/** This class represents a rectangle.
* (Implementation Note) We're using upper left and lower right point instead of
* upper left and width/height here, because that makes the collision detection
p2()
{ }
- Rectf(const Vector& np1, const Vector& np2)
- : p1(np1), p2(np2)
+ Rectf(const Vector& np1, const Vector& np2) :
+ p1(np1), p2(np2)
{
}
- Rectf(float x1, float y1, float x2, float y2)
- : p1(x1, y1), p2(x2, y2)
+ Rectf(float x1, float y1, float x2, float y2) :
+ p1(x1, y1), p2(x2, y2)
{
assert(p1.x <= p2.x && p1.y <= p2.y);
}
+ Rectf(const Vector& p1_, const Sizef& size);
+
float get_left() const
{ return p1.x; }
set_width(width);
set_height(height);
}
- Vector get_size()
+ Sizef get_size() const
{
- return Vector(get_width(), get_height());
+ return Sizef(get_width(), get_height());
}
void move(const Vector& v)
return ((v1 - v2).norm ());
}
+ Rectf grown(float border) const
+ {
+ return Rectf(p1.x - border, p1.y - border,
+ p2.x + border, p2.y + border);
+ }
+
// leave these two public to save the headaches of set/get functions for such
// simple things :)