Woopsi 1.0
GUI Framework for Nintendo DS Homebrew

rect.h

00001 #ifndef _RECT_H_
00002 #define _RECT_H_
00003 
00004 #include <nds.h>
00005 #include "woopsiarray.h"
00006 
00007 namespace WoopsiUI {
00008 
00012         class Rect {
00013         public:
00014                 s16 x;                                                  
00015                 s16 y;                                                  
00016                 s32 width;                                              
00017                 s32 height;                                             
00022                 Rect();
00023 
00031                 Rect(s16 x, s16 y, s32 width, s32 height);
00032 
00037                 Rect(const Rect& rect);
00038 
00047                 static Rect fromCoordinates(s16 x1, s16 y1, s16 x2, s16 y2);
00048 
00053                 inline s16 getX() const { return x; };
00054 
00059                 inline s16 getY() const { return y; };
00060 
00065                 inline s32 getWidth() const { return width; };
00066 
00071                 inline s32 getHeight() const { return height; };
00072 
00077                 inline void setX(s16 x) { this->x = x; };
00078 
00083                 inline void setY(s16 y) { this->y = y; };
00084 
00089                 inline void setWidth(s32 width) { this->width = width; };
00090 
00095                 inline void setHeight(s32 height) { this->height = height; };
00096 
00104                 void setX2(s16 x2);
00105 
00113                 void setY2(s16 y2);
00114 
00119                 inline s16 getX2() const { return x + (width - 1); };
00120 
00125                 inline s16 getY2() const { return y + (height - 1); };
00126 
00133                 bool hasDimensions() const;
00134 
00141                 void getIntersect(const Rect& rect, Rect& dest) const;
00142 
00149                 void getAddition(const Rect& rect, Rect& dest) const;
00150 
00154                 void clipToIntersect(const Rect& rect);
00155 
00160                 void expandToInclude(const Rect& rect);
00161 
00167                 bool intersects(const Rect& rect) const;
00168 
00175                 bool contains(s16 x, s16 y) const;
00176 
00181                 void copyTo(Rect& dest) const;
00182 
00195                 bool splitIntersection(const Rect& rect, Rect& intersection, WoopsiArray<Rect>* remainderRects) const;
00196 
00203                 Rect operator&(const Rect& rect);
00204 
00212                 Rect operator+(const Rect& rect);
00213 
00220                 bool operator==(const Rect& rect);
00221 
00228                 bool operator!=(const Rect& rect);
00229         };
00230 }
00231 
00232 #endif