- Vector get_middle() const
- { return Vector((p1.x+p2.x)/2, (p1.y+p2.y)/2); }
-
- void set_pos(const Vector& v)
- {
- move(v-p1);
- }
-
- void set_height(float height)
- {
- p2.y = p1.y + height;
- }
- void set_width(float width)
- {
- p2.x = p1.x + width;
- }
- void set_size(float width, float height)
- {
- set_width(width);
- set_height(height);
- }
- Vector get_size()
- {
- return Vector(get_width(), get_height());
- }
-
- void move(const Vector& v)
- {
- p1 += v;
- p2 += v;
- }
-
- bool contains(const Vector& v) const
- {
- return v.x >= p1.x && v.y >= p1.y && v.x < p2.x && v.y < p2.y;
- }
- bool contains(const Rect& other) const
- {
- if(p1.x >= other.p2.x || other.p1.x >= p2.x)
- return false;
- if(p1.y >= other.p2.y || other.p1.y >= p2.y)
- return false;
-
- return true;
- }
-
- // leave these two public to save the headaches of set/get functions for such
- // simple things :)
-
- /// upper left edge
- Vector p1;
- /// lower right edge
- Vector p2;
+public:
+ Rect() :
+ left(0),
+ top(0),
+ right(0),
+ bottom(0)
+ {}
+
+ Rect(int left_, int top_, int right_, int bottom_) :
+ left(left_),
+ top(top_),
+ right(right_),
+ bottom(bottom_)
+ {}
+
+ Rect(int left_, int top_, const Size& size) :
+ left(left_),
+ top(top_),
+ right(left_ + size.width),
+ bottom(top_ + size.height)
+ {}
+
+ int get_width() const { return right - left; }
+ int get_height() const { return bottom - top; }