+ Vector<int> ScreenSize() const { return size; }
+ float Zoom() const { return zoom; }
+
+ void Resize(int w, int h) { Resize(Vector<int>(w, h)); }
+ void Resize(Vector<int>);
+ void Update(float deltaT);
+
+ void StartZoom();
+ void StopZoom();
+ void StartShrink();
+ void StopShrink();
+
+ /// transform v from world coords to screen coords
+ Vector<int> ToScreen(Vector<float> v) const {
+ return Vector<int>(ToScale(v - *target)) + offset;
+ }
+ /// scale v to current zoom level
+ Vector<float> ToScale(Vector<float> v) const {
+ return v * zoom;
+ }
+
+ /// transform v from screen coords to world coords
+ Vector<float> FromScreen(Vector<int> v) const {
+ return FromScale(v - offset) + *target;
+ }
+ /// scale v back from current zoom level
+ Vector<float> FromScale(Vector<float> v) const {
+ return v / zoom;