+
+
+
+ template <class T = IPDF::Real>
+ inline TRect<T> TransformRectCoordinates(const TRect<T> & view, const TRect<T> & r)
+ {
+ TRect<T> out;
+ T w = (view.w == T(0))?T(1):view.w;
+ T h = (view.h == T(0))?T(1):view.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;
+ }
+
+
+ template <class T = IPDF::Real>
+ inline Vec2 TransformPointCoordinates(const TRect<T> & view, const Vec2& v)
+ {
+ Vec2 out;
+ out.x = (v.x - view.x) / view.w;
+ out.y = (v.y - view.y) / view.h;
+ return out;
+ }
+
+ typedef TRect<Real> Rect;
+
+