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
bf7a242
..
7a0f1e1
100644
(file)
--- a/
src/rect.h
+++ b/
src/rect.h
@@
-15,15
+15,24
@@
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;
+ 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;
}
};
@@
-31,10
+40,12
@@
namespace IPDF
inline Rect TransformRectCoordinates(const Rect& view, const Rect& r)
{
Rect out;
- out.x = (r.x - view.x) / view.w;
- out.y = (r.y - view.y) / view.h;
- out.w = r.w / view.w;
- out.h = r.h / view.h;
+ 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;
}
UCC
git Repository :: git.ucc.asn.au