xref: /haiku/headers/os/interface/Point.h (revision 4bd0c1066b227cec4b79883bdef697c7a27f2e90)
1 /*
2  * Copyright 2001-2009, Haiku, Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef	_POINT_H
6 #define	_POINT_H
7 
8 
9 #include <SupportDefs.h>
10 
11 
12 class BRect;
13 
14 
15 class BPoint {
16 public:
17 			float				x;
18 			float				y;
19 
20 								BPoint();
21 								BPoint(float x, float y);
22 								BPoint(const BPoint& p);
23 
24 			BPoint&				operator=(const BPoint& other);
25 			void				Set(float x, float y);
26 
27 			void				ConstrainTo(BRect rect);
28 			void				PrintToStream() const;
29 
30 			BPoint				operator-() const;
31 			BPoint				operator+(const BPoint& other) const;
32 			BPoint				operator-(const BPoint& other) const;
33 			BPoint&				operator+=(const BPoint& other);
34 			BPoint&				operator-=(const BPoint& other);
35 
36 			bool				operator!=(const BPoint& other) const;
37 			bool				operator==(const BPoint& other) const;
38 };
39 
40 
41 extern const BPoint B_ORIGIN;
42 	// returns (0, 0)
43 
44 
45 inline
46 BPoint::BPoint()
47 	:
48 	x(0.0f),
49 	y(0.0f)
50 {
51 }
52 
53 
54 inline
55 BPoint::BPoint(float x, float y)
56 	:
57 	x(x),
58 	y(y)
59 {
60 }
61 
62 
63 inline
64 BPoint::BPoint(const BPoint& other)
65 	:
66 	x(other.x),
67 	y(other.y)
68 {
69 }
70 
71 
72 inline BPoint&
73 BPoint::operator=(const BPoint& other)
74 {
75 	x = other.x;
76 	y = other.y;
77 	return *this;
78 }
79 
80 
81 inline void
82 BPoint::Set(float x, float y)
83 {
84 	this->x = x;
85 	this->y = y;
86 }
87 
88 #endif // _POINT_H
89