git.ucc.asn.au
/
ipdf
/
code.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
Nope.avi
[ipdf/code.git]
/
src
/
rect.h
diff --git
a/src/rect.h
b/src/rect.h
index
a79f6ac
..
7a0f1e1
100644
(file)
--- a/
src/rect.h
+++ b/
src/rect.h
@@
-15,10
+15,49
@@
namespace IPDF
{
std::stringstream s;
// float conversion needed because it is fucking impossible to get ostreams working with template classes
- s << "{" << Float(x) << ", " << Float(y) << ", " << Float(
w) << ", " << Float(h) << "
}";
+ s << "{" << Float(x) << ", " << Float(y) << ", " << Float(
x + w) << ", " << Float(y + h) << " (w: " << Float(w) <<", h: " << Float(h) <<")
}";
return s.str();
}
+ 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;
+ 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;
+ }
};
+
+ inline Rect TransformRectCoordinates(const Rect& view, const Rect& r)
+ {
+ 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;
+ return out;
+ }
+
+ inline Vec2 TransformPointCoordinates(const Rect& view, const Vec2& v)
+ {
+ Vec2 out;
+ out.x = (v.x - view.x) / view.w;
+ out.y = (v.y - view.y) / view.h;
+ return out;
+ }
+
+
}
#endif //_RECT_H
UCC
git Repository :: git.ucc.asn.au