class Timelime::Axis
Attributes
buffer[R]
lines[R]
Public Class Methods
new(table)
click to toggle source
# File lib/timelime/axis.rb, line 14 def initialize table @table = table end
Public Instance Methods
generate(precision = nil)
click to toggle source
# File lib/timelime/axis.rb, line 27 def generate precision = nil precision = precision.to_i @buffer = [ [], # L side [], # R side ] if @time.nil? range = @table.range else range = @time.data end @begin = range[0] @length = range[1] - range[0] if @length == 0 @length = 1 end size = @table.size if precision == 0 precision = Math.log(@length).to_i if precision == 0 precision = 1 end end @lines = size * precision @table.get do |e| squeeze e end end
label(line)
click to toggle source
# File lib/timelime/axis.rb, line 87 def label line @begin + @length * line / @lines end
scale(time)
click to toggle source
# File lib/timelime/axis.rb, line 62 def scale time buf = time.data.map do |yr| tmp = (1.0 * @lines * (yr - @begin) / @length).to_i if tmp == @lines tmp = @lines - 1 end tmp end unless buf.size == 1 it = buf[0] + 1 while it < buf[1] buf += [it] it += 1 end end if @time.nil? buf else buf.filter do |l| l >= 0 and l < @lines end end end
time(t)
click to toggle source
# File lib/timelime/axis.rb, line 18 def time(t) t = Timelime::Time.new(t) @time = t.range! end
to_b()
click to toggle source
# File lib/timelime/axis.rb, line 23 def to_b true end
Private Instance Methods
squeeze(event)
click to toggle source
# File lib/timelime/axis.rb, line 93 def squeeze event todo = scale event.time if todo.empty? return end if ( event.time.size == 2) side = 0 else side = 1 end found = nil @buffer[side].each_with_index do |column, index| free = true todo.each do |line| unless column[line].nil? free = false break end end if free found = index end end if found.nil? @buffer[side] += [Array.new(@lines)] found = @buffer[side].size - 1 end todo.each do |line| @buffer[side][found][line] = event end end