00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00028 #ifndef SDLMM_SRECT_H
00029 #define SDLMM_SRECT_H
00030 #include "sdlmm_spoint.h"
00031
00032 namespace SDLmm {
00043 class DECLSPEC SRect : public SDL_Rect {
00044 public:
00047 SRect();
00048
00051
00052 SRect(const SRect& rect);
00053
00055
00056 SRect(const SDL_Rect& rect);
00057
00059
00063 SRect(const SPoint& point);
00064
00067
00071 SRect(const SPoint &upper_left_point,
00072 const SPoint &bottom_right_point);
00073
00076
00083 SRect(const SPoint &point, Uint16 nw, Uint16 nh);
00084
00086
00090 SRect(Sint16 nx, Sint16 ny, Uint16 nw, Uint16 nh);
00091
00093
00097 SRect(Uint16 nw, Uint16 nh);
00098
00100 SRect& operator=(const SDL_Rect& rect) {
00101 if(this == &rect) return *this;
00102 x = rect.x; y = rect.y;
00103 w = rect.w; h = rect.h;
00104 return *this;
00105 }
00106
00108
00111 bool operator==(const SDL_Rect& rect) const {
00112 return ((x == rect.x) && (y == rect.y) &&
00113 (w == rect.w) && (h == rect.h));
00114 }
00115
00117
00120 void Move(const SPoint& point) {
00121 x += point.x; y += point.y;
00122 }
00123
00125 bool Contains(const SPoint& point) const {
00126 return (x <= point.x) && (y <= point.y) &&
00127 ((x+w) > point.x) && ((y+h) > point.y);
00128 }
00129
00131
00132 SPoint GetUpperLeft() const { return SPoint(x, y); }
00134
00135 SPoint GetUpperRight() const { return SPoint(x+w, y); }
00137
00138 SPoint GetBottomLeft() const { return SPoint(x, y+h); }
00140
00141 SPoint GetBottomRight() const { return SPoint(x+w, y+h); }
00142
00143 };
00144
00146
00148 SRect Intersect(const SRect& r1, const SRect& r2);
00149
00151
00153 SRect Union(const SRect& r1, const SRect& r2);
00154 }
00155
00156 #endif // SDLMM_SRECT_H
00157