class Drawille::FlipBook

Public Class Methods

new() click to toggle source
# File lib/drawille/flipbook.rb, line 8
def initialize
  clear
end

Public Instance Methods

clear() click to toggle source
# File lib/drawille/flipbook.rb, line 12
def clear
  @snapshots = []
  @chars     = {}
end
each_frame(options={}) { |frame| ... } click to toggle source
# File lib/drawille/flipbook.rb, line 22
def each_frame options={}
  return enum_for(__callee__) unless block_given?
  @snapshots.each do |frame|
    yield frame
  end
end
play(options={}) { || ... } click to toggle source
# File lib/drawille/flipbook.rb, line 29
def play options={}
  options = {
    repeat: false, fps: 6,
    min_x: 0, min_y: 0
  }.merge(options)

  Curses::init_screen
  begin
    Curses::crmode
    Curses::curs_set 0
    repeat options do
      if block_given?
        loop {
          canvas = yield
          raise StopIteration if canvas == nil
          draw canvas.frame
        }
      else
        each_frame options do |frame|
          draw frame
          sleep(1.0/options[:fps])
        end
      end
    end
  ensure
    Curses::close_screen
  end
end
repeat(options) { || ... } click to toggle source
# File lib/drawille/flipbook.rb, line 58
def repeat options
  options[:repeat] ? loop { yield; clear_screen options } : yield
end
snapshot(canvas) click to toggle source
# File lib/drawille/flipbook.rb, line 17
def snapshot canvas
  @snapshots << canvas.frame
  @chars     =  canvas.chars
end

Private Instance Methods

clear_screen(options) click to toggle source
# File lib/drawille/flipbook.rb, line 70
def clear_screen options
  Curses::clear
  Curses::refresh
end
draw(frame) click to toggle source
# File lib/drawille/flipbook.rb, line 64
def draw frame
  Curses::setpos(0, 0)
  Curses::addstr(frame)
  Curses::refresh
end