Class: RubySketch::Window

Inherits:
Reflex::Window
  • Object
show all
Defined in:
lib/rubysketch/window.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(width = 500, height = 500, *args, &block) ⇒ Window

Returns a new instance of Window



14
15
16
17
18
19
20
21
22
23
# File 'lib/rubysketch/window.rb', line 14

def initialize (width = 500, height = 500, *args, &block)
  @events      = []
  @auto_resize = true
  @error       = nil

  painter.miter_limit = 10
  resize_canvas 1, 1

  super *args, size: [width, height], &block
end

Instance Attribute Details

#after_drawObject

Returns the value of attribute after_draw



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def after_draw
  @after_draw
end

#auto_resizeObject

Returns the value of attribute auto_resize



10
11
12
# File 'lib/rubysketch/window.rb', line 10

def auto_resize
  @auto_resize
end

#before_drawObject

Returns the value of attribute before_draw



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def before_draw
  @before_draw
end

#canvasObject (readonly)

Returns the value of attribute canvas



12
13
14
# File 'lib/rubysketch/window.rb', line 12

def canvas
  @canvas
end

#canvas_painterObject (readonly)

Returns the value of attribute canvas_painter



12
13
14
# File 'lib/rubysketch/window.rb', line 12

def canvas_painter
  @canvas_painter
end

#drawObject

Returns the value of attribute draw



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def draw
  @draw
end

#keyObject

Returns the value of attribute key



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def key
  @key
end

#motionObject

Returns the value of attribute motion



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def motion
  @motion
end

#pointer_downObject

Returns the value of attribute pointer_down



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def pointer_down
  @pointer_down
end

#pointer_dragObject

Returns the value of attribute pointer_drag



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def pointer_drag
  @pointer_drag
end

#pointer_moveObject

Returns the value of attribute pointer_move



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def pointer_move
  @pointer_move
end

#pointer_upObject

Returns the value of attribute pointer_up



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def pointer_up
  @pointer_up
end

#resizeObject

Returns the value of attribute resize



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def resize
  @resize
end

#setupObject

Returns the value of attribute setup



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def setup
  @setup
end

#updateObject

Returns the value of attribute update



6
7
8
# File 'lib/rubysketch/window.rb', line 6

def update
  @update
end

Instance Method Details

#eventObject



32
33
34
# File 'lib/rubysketch/window.rb', line 32

def event ()
  @events.last
end

#on_draw(e) ⇒ Object



45
46
47
48
49
50
# File 'lib/rubysketch/window.rb', line 45

def on_draw (e)
  draw_canvas {call_block @draw, e} if @draw

  x, y, w, h = coord_converter
  e.painter.image @canvas, x, y, @canvas.width * w, @canvas.height * h
end

#on_key(e) ⇒ Object



52
53
54
# File 'lib/rubysketch/window.rb', line 52

def on_key (e)
  draw_canvas {call_block @key, e} if @key
end

#on_motion(e) ⇒ Object



65
66
67
# File 'lib/rubysketch/window.rb', line 65

def on_motion (e)
  draw_canvas {call_block @motion, e} if @motion
end

#on_pointer(e) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/rubysketch/window.rb', line 56

def on_pointer (e)
  block = case e.type
    when :down then @pointer_down
    when :up   then @pointer_up
    when :move then e.drag? ? @pointer_drag : @pointer_move
  end
  draw_canvas {call_block block, e} if block
end

#on_resize(e) ⇒ Object



69
70
71
72
# File 'lib/rubysketch/window.rb', line 69

def on_resize (e)
  resize_canvas e.width, e.height if @auto_resize
  draw_canvas {call_block @resize, e} if @resize
end

#on_setupObject



36
37
38
# File 'lib/rubysketch/window.rb', line 36

def on_setup ()
  call_block @setup, nil
end

#on_update(e) ⇒ Object



40
41
42
43
# File 'lib/rubysketch/window.rb', line 40

def on_update (e)
  call_block @update, e
  redraw
end

#start(&block) ⇒ Object



25
26
27
28
29
30
# File 'lib/rubysketch/window.rb', line 25

def start (&block)
  draw_canvas do
    block.call if block
    on_setup
  end
end

#to_canvas_coord(x, y) ⇒ Object



74
75
76
77
# File 'lib/rubysketch/window.rb', line 74

def to_canvas_coord (x, y)
  xx, yy, ww, hh = coord_converter
  return (x - xx) / ww, (y - yy) / hh
end