1/*
2* Copyright 2010, Haiku. All rights reserved.
3* Distributed under the terms of the MIT License.
4*
5* Authors:
6*		Michael Pfeiffer
7*/
8#ifndef RECTANGLE_H
9#define RECTANGLE_H
10
11
12#include <SupportDefs.h>
13
14
15template<typename T>
16class Rectangle
17{
18public:
19	Rectangle()
20	:
21	left(0),
22	top(0),
23	right(0),
24	bottom(0)
25	{
26
27	}
28
29
30	Rectangle(const BRect& rect)
31	:
32	left(static_cast<T>(rect.left)),
33	top(static_cast<T>(rect.top)),
34	right(static_cast<T>(rect.right)),
35	bottom(static_cast<T>(rect.bottom))
36	{
37	}
38
39
40	Rectangle(T left, T top, T right, T bottom)
41	:
42	left(left),
43	top(top),
44	right(right),
45	bottom(bottom)
46	{
47	}
48
49
50	Rectangle<T>& operator=(const BRect& rect) {
51		left = static_cast<T>(rect.left);
52		top = static_cast<T>(rect.top);
53		right = static_cast<T>(rect.right);
54		bottom = static_cast<T>(rect.bottom);
55		return *this;
56	}
57
58
59	T Width() const {
60		return right - left;
61	}
62
63
64	T Height() const {
65		return bottom - top;
66	}
67
68
69	T left;
70	T top;
71	T right;
72	T bottom;
73};
74
75
76typedef Rectangle<int32> RectInt32;
77
78
79#endif
80