メインページ | クラス階層 | アルファベット順一覧 | 構成 | Directories | ファイル一覧 | 構成メンバ

yrect.h

説明を見る。
00001 
00011 #ifndef DEFINE_H_YRECT
00012 #define DEFINE_H_YRECT
00013 
00014 #include <basic.h>
00015 #include <bstdlib.h>
00016 #include <tcode.h>
00017 #include <errcode.h>
00018 #include <btron/btron.h>
00019 #include <btron/dp.h>
00020 #include "ypoint.h"
00021 
00027 class YRect : public RECT::_rect {
00028 public:
00030   YRect() {}
00031   
00040   YRect(W x1, W y1, W x2, W y2) {
00041     setRect(x1, y1, x2, y2);
00042   }
00043 
00049   YRect(const YRect& src) {
00050     operator=(src);
00051   }
00052 
00058   YRect(const RECT& src) {
00059     operator=(src);
00060   }
00061 
00068   YRect(const PNT& p1, const PNT& p2) {
00069     setRect(p1, p2);
00070   }
00071 
00073   ~YRect() {}
00074 
00084   void setRect(W x1, W y1, W x2, W y2) {
00085     left = x1;
00086     top = y1;
00087     right = x2;
00088     bottom = y2;
00089   }
00090 
00100   void setRect(const PNT& p1, const PNT& p2) {
00101     setRect(p1.x, p1.y, p2.x, p2.y);
00102   }
00103 
00109   const YPoint& topLeft() const {
00110     return *((YPoint*)&((RECT*)this)->p.lefttop);
00111   }
00112 
00118   const YPoint& bottomRight() const {
00119     return *((YPoint*)&((RECT*)this)->p.rightbot);
00120   }
00121 
00122 
00128   YPoint center() const {
00129     return YPoint((right+left)/2, (top+bottom)/2);
00130   };
00131   
00137   W width() const {
00138     return right - left;
00139   }
00140 
00149   void shrink(W wx, W wy){
00150     left += wx;
00151     right -= wx;
00152     top += wy;
00153     bottom -= wy;
00154   }
00155 
00164   void expand(W wx, W wy){
00165     shrink(-wx, -wy);
00166   }
00167 
00173   W height() const { 
00174     return bottom - top;
00175   }
00176   
00182   const YRect& operator=(const RECT& src) {
00183     setRect(src.c.left, src.c.top, src.c.right, src.c.bottom);
00184     return *this;
00185   }
00186   
00192   const YRect& operator=(const YRect& src) {
00193     setRect(src.left, src.top, src.right, src.bottom);
00194     return *this;
00195   }
00196 
00198   // 領域を+expだけ移動する
00199   const YRect& operator+=(const PNT& exp) {
00200     top += exp.y;
00201     left += exp.x;
00202     right += exp.x;
00203     bottom += exp.y;
00204     return *this;
00205   }
00206   
00208   // 領域を-expだけ移動する
00209   const YRect& operator-=(const PNT& exp) {
00210     top -= exp.y;
00211     left -= exp.x;
00212     right -= exp.x;
00213     bottom -= exp.y;
00214     return *this;
00215   }
00216   
00222   bool operator==(const YRect& exp) const {
00223     return (top == exp.top && left == exp.left &&
00224             right == exp.right && bottom == exp.bottom);
00225   }
00226   
00232   bool operator==(const RECT& exp) const {
00233     return (top == exp.c.top && left == exp.c.left &&
00234             right == exp.c.right && bottom == exp.c.bottom);
00235   }
00236   
00242   bool operator!=(const YRect& exp) const {
00243     return !(operator==(exp));
00244   }
00245 
00251   bool operator!=(const RECT& exp) const {
00252     return !(operator==(exp));
00253   }
00254   
00259   operator const RECT() const {
00260     return *reinterpret_cast<const RECT*>(this);
00261   }
00262 
00267   operator RECT() {
00268     return *const_cast<RECT*>(reinterpret_cast<const RECT*>(this));
00269   }
00270   
00276   bool isInside(const PNT &pnt) {
00277     return (left <= pnt.x && pnt.x < right && top <= pnt.y
00278             && pnt.y < bottom);
00279   }
00280   
00281 protected:
00282 
00283 private:
00284 
00285 };
00286 
00287 #endif // DEFINE_H_YRECT

YLibに対してMon Mar 21 08:57:44 2005に生成されました。  doxygen 1.4.1