X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Frect.h;h=b092fbe77072359b096b31f0e64f73ead9da19cc;hb=ef0af5fd0129161a9e079bd3cd1298b53f1fe11a;hp=46aa5fb510ef149048902b461f99ad27fcfc4d47;hpb=0361b11485ec41d2c2ddeb279abf846f777f5363;p=ipdf%2Fcode.git diff --git a/src/rect.h b/src/rect.h index 46aa5fb..b092fbe 100644 --- a/src/rect.h +++ b/src/rect.h @@ -9,8 +9,8 @@ namespace IPDF struct Rect { Real x; Real y; Real w; Real h; - Rect() = default; // Needed so we can fread/fwrite this struct - Rect(Real _x, Real _y, Real _w, Real _h) : x(_x), y(_y), w(_w), h(_h) {} + //Rect() = default; // Needed so we can fread/fwrite this struct + Rect(Real _x=0, Real _y=0, Real _w=1, Real _h=1) : x(_x), y(_y), w(_w), h(_h) {} std::string Str() const { std::stringstream s; @@ -20,10 +20,19 @@ namespace IPDF } inline bool PointIn(Real pt_x, Real pt_y) const { - if (pt_x < x) return false; - if (pt_y < y) return false; - if (pt_x > x + w) return false; - if (pt_y > y + h) return false; + if (pt_x <= x) return false; + if (pt_y <= y) return false; + if (pt_x >= x + w) return false; + if (pt_y >= y + h) return false; + return true; + } + + inline bool Intersects(const Rect& other) const + { + if (x + w < other.x) return false; + if (y + h < other.y) return false; + if (x > other.x + other.w) return false; + if (y > other.y + other.h) return false; return true; } }; @@ -33,10 +42,10 @@ namespace IPDF Rect out; Real w = (view.w == Real(0))?Real(1):view.w; Real h = (view.h == Real(0))?Real(1):view.h; - out.x = (r.x - view.x) / w; - out.y = (r.y - view.y) / h; - out.w = r.w / w; - out.h = r.h / h; + out.x = (r.x - view.x) / w; //r.x = out.x *w + view.x + out.y = (r.y - view.y) / h; // r.y = out.y*h + view.y + out.w = r.w / w; // r.w = out.w * w + out.h = r.h / h; // r.h = out.h * h return out; }