class SlideField::Viewer
Constants
- LOAD_AROUND
preloader settings
- LOAD_DELAY
Public Class Methods
new(project)
click to toggle source
Calls superclass method
# File lib/slidefield/viewer.rb, line 6 def initialize(project) layout = project[:layout].first layout_size = layout.get :size fullscreen = layout.get :fullscreen super *layout_size, fullscreen @time = 0 @animator = SlideField::Animator.new layout_size @slides = [] project[:slide].each {|slide_data| manager = SlideField::ObjectManager.new slide_data, self @slides << manager } change_slide 0 end
Public Instance Methods
change_slide(index)
click to toggle source
# File lib/slidefield/viewer.rb, line 87 def change_slide(index) return if @current == index || index < 0 || index > @slides.length-1 @previous = @current @current = index if @previous @slides[@previous].deactivate @forward = @previous < @current else @forward = true end @slides[@current].load unless @slides[@current].loaded? @slides[@current].activate @animator.reset end
draw()
click to toggle source
# File lib/slidefield/viewer.rb, line 41 def draw # animate the previous slide if @previous && @animator.need_redraw? @animator.frame @time, false, @forward do @slides[@previous].draw @animator end end @animator.frame @time, true, @forward do @slides[@current].draw @animator end end
needs_redraw?()
click to toggle source
# File lib/slidefield/viewer.rb, line 54 def needs_redraw? @animator.need_redraw? end
update()
click to toggle source
# File lib/slidefield/viewer.rb, line 25 def update now = Gosu::milliseconds unless needs_redraw? if now - @time > LOAD_DELAY && @can_preload smart_loader @can_preload = false end return end @time = now @can_preload = true end
Private Instance Methods
smart_loader()
click to toggle source
# File lib/slidefield/viewer.rb, line 106 def smart_loader SlideField.debug "(Un)loading resources..." ahead = LOAD_AROUND / 2 behind = -ahead @slides.each_with_index {|manager, index| rel_index = index - @current keep = rel_index >= behind && rel_index <= ahead if keep && !manager.loaded? manager.load elsif !keep && manager.loaded? manager.unload end } # really unload resources GC.start end