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