Class: SlideField::Viewer

Inherits:
Gosu::Window
  • Object
show all
Defined in:
lib/slidefield/viewer.rb

Instance Method Summary collapse

Constructor Details

#initialize(project) ⇒ Viewer

Returns a new instance of Viewer.



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/slidefield/viewer.rb', line 2

def initialize(project)
  layout = project[:layout].first
  layout_size = layout.get :size
  fullscreen = layout.get :fullscreen

  super *layout_size, fullscreen

  @animator = SlideField::Animator.new layout_size

  @slides = []
  project[:slide].each {|slide_data|
    manager = SlideField::ObjectManager.new slide_data, self
    manager.load
    @slides << manager
  }

  change_slide 0
end

Instance Method Details

#button_down(id) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/slidefield/viewer.rb', line 42

def button_down(id)
  case id
  when Gosu::KbHome
    change_slide 0
  when Gosu::KbEnd
    change_slide @slides.length-1
  when
    Gosu::KbReturn,
    Gosu::KbSpace,
    Gosu::KbTab,
    Gosu::KbRight,
    Gosu::KbDown,
    Gosu::KbPageDown,
    Gosu::KbNumpadAdd

    change_slide @current+1
  when
    Gosu::KbBackspace,
    Gosu::KbLeft,
    Gosu::KbUp,
    Gosu::KbPageUp,
    Gosu::KbNumpadSubtract

    change_slide @current-1
  when Gosu::KbEscape, Gosu::KbQ
    close
  end
end

#drawObject



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/slidefield/viewer.rb', line 25

def draw
  @animator.frame @time, true, @forward do
    @slides[@current].draw @animator
  end

  # animate the previous slide
  if @previous && @animator.need_redraw?
    @animator.frame @time, false, @forward do
      @slides[@previous].draw @animator
    end
  end
end

#needs_redraw?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/slidefield/viewer.rb', line 38

def needs_redraw?
  @animator.need_redraw?
end

#updateObject



21
22
23
# File 'lib/slidefield/viewer.rb', line 21

def update
  @time = Gosu::milliseconds
end