lib/ray/view.rb in ray-0.1.1 vs lib/ray/view.rb in ray-0.2.0
- old
+ new
@@ -1,7 +1,25 @@
module Ray
class View
+ include Ray::PP
+
+ # @param [Ray::Rect] rect Rect to show, in pixels.
+ # @param [Ray::Vector2] target_size Size of the complete target, in pixels.
+ #
+ # @return [Ray::View] A view that allows to clip rendering to a given region
+ # of the target, without scaling.
+ def self.clip(rect, target_size)
+ rect, target_size = rect.to_rect, target_size.to_vector2
+
+ viewport = Ray::Rect[rect.x / target_size.w,
+ rect.y / target_size.h,
+ rect.w / target_size.w,
+ rect.h / target_size.y]
+
+ Ray::View.new(rect.center, rect.size, viewport)
+ end
+
def ==(other)
other.is_a?(Ray::View) && self.matrix == other.matrix
end
# Increases zoom (making object appear bigger). The center of the view and
@@ -40,8 +58,12 @@
def w=(val); self.size = [val, h]; end
def h=(val); self.size = [w, val]; end
def inspect
"#<#{self.class} center=#{center} size=#{size} viewport=#{viewport}>"
+ end
+
+ def pretty_print(q)
+ pretty_print_attributes q, ["center", "size", "matrix", "viewport"]
end
end
end