lib/processing/window.rb in processing-0.5.4 vs lib/processing/window.rb in processing-0.5.5

- old
+ new

@@ -1,28 +1,11 @@ module Processing + # @private class Window < Reflex::Window - class CanvasView < Reflex::View - def on_update(e) - window.on_canvas_update e - end - - def on_draw(e) - window.on_canvas_draw e - end - - def on_pointer(e) - window.on_canvas_pointer e - end - - def on_resize(e) - window.on_canvas_resize e - end - end - attr_accessor :setup, :update, :draw, :resize, :key_down, :key_up, :pointer_down, :pointer_up, :pointer_move, :pointer_drag, :motion, :before_draw, :after_draw, :update_canvas @@ -30,15 +13,16 @@ attr_accessor :auto_resize def initialize(width = 500, height = 500, *args, **kwargs, &block) Processing.instance_variable_set :@window, self - @events = [] - @error = nil - @auto_resize = true - @canvas = Canvas.new self - @canvas_view = add CanvasView.new name: :canvas + @events = [] + @error = nil + @auto_resize = true + @canvas = Canvas.new self + @canvas_view = add CanvasView.new name: :canvas + @overlay_view = @canvas_view.add Reflex::View.new name: :overlay super(*args, size: [width, height], **kwargs, &block) end def canvas_image() @@ -55,25 +39,21 @@ def event() @events.last end + def add_overlay(view) + @overlay_view.add view + end + def start(&block) draw_canvas do block.call if block on_setup end end - def resize_canvas(width, height, pixel_density = nil, window_pixel_density: nil) - @pixel_density = pixel_density if pixel_density - if @canvas.resize width, height, pixel_density || @pixel_density || window_pixel_density - @update_canvas.call canvas_image, canvas_painter if @update_canvas - size width, height - end - end - def on_setup() call_block @setup, nil end def on_resize(e) @@ -126,16 +106,25 @@ def on_canvas_resize(e) resize_canvas e.width, e.height if @auto_resize draw_canvas {call_block @resize, e} if @resize end + def resize_canvas(width, height, pixel_density = nil, window_pixel_density: nil) + @pixel_density = pixel_density if pixel_density + if @canvas.resize width, height, pixel_density || @pixel_density || window_pixel_density + @update_canvas.call canvas_image, canvas_painter if @update_canvas + size width, height + end + end + private def update_canvas_view() scrollx, scrolly, zoom = get_scroll_and_zoom @canvas_view.scroll_to scrollx, scrolly - @canvas_view.zoom zoom + @canvas_view.zoom = zoom + @overlay_view.size = canvas_image.size end def get_scroll_and_zoom() ww, wh = width.to_f, height.to_f cw, ch = canvas_image.width.to_f, canvas_image.height.to_f @@ -231,8 +220,29 @@ to.miter_limit = from.miter_limit to.font = from.font end end# Window::Canvas + + + class Window::CanvasView < Reflex::View + + def on_update(e) + window.on_canvas_update e + end + + def on_draw(e) + window.on_canvas_draw e + end + + def on_pointer(e) + window.on_canvas_pointer e + end + + def on_resize(e) + window.on_canvas_resize e + end + + end# Window::CanvasView end# Processing