class Tracksperanto::Import::Boujou

Constants

COMMENT

Public Class Methods

human_name() click to toggle source
# File lib/import/boujou.rb, line 3
def self.human_name
  "Boujou feature tracks export"
end

Public Instance Methods

each() { |last_tracker| ... } click to toggle source
# File lib/import/boujou.rb, line 7
def each
  wrapped_io = Tracksperanto::ExtIO.new(@io)
  detect_columns(wrapped_io)
  trackers = {}
  filtering_trackers_from(wrapped_io) do | name, frame, x, y |
    if @last_tracker && (name != @last_tracker.name)
      yield(@last_tracker) if @last_tracker && @last_tracker.any?
      @last_tracker = nil
    end
    
    if !@last_tracker
      @last_tracker = Tracksperanto::Tracker.new(:name => name)
    end
    
    report_progress("Extracting frame #{frame} of #{name}")
    @last_tracker.keyframe!(:frame => (frame.to_i - 1), :abs_y => (@height.to_f - y.to_f - 1), :abs_x => x)
  end
  
  yield(@last_tracker) if @last_tracker && @last_tracker.any?
end

Private Instance Methods

comment?(line) click to toggle source
# File lib/import/boujou.rb, line 63
def comment?(line)
  line =~ COMMENT
end
detect_columns(io) click to toggle source
# File lib/import/boujou.rb, line 32
def detect_columns(io)
  until io.eof? do 
    line = io.gets_and_strip
    if line =~ /^# track_id/
      report_progress("Detecting columns")
      return set_columns_from(line)
    end
  end
end
filtering_trackers_from(io) { |track_id, frame, x, y| ... } click to toggle source

# track_id view x y Target_track_1 5 252.046 171.677

# File lib/import/boujou.rb, line 50
def filtering_trackers_from(io) #:yields: track_id, frame, x, y
  until io.eof?
    line = io.gets_and_strip
    next if comment?(line)
    column = make_column_hash(line)
    yield(column["track_id"], column["view"], column["x"], column["y"])
  end
end
make_column_hash(line) click to toggle source
# File lib/import/boujou.rb, line 59
def make_column_hash(line)
  Hash[*@columns.zip(line.split).flatten]
end
set_columns_from(line) click to toggle source
# File lib/import/boujou.rb, line 42
def set_columns_from(line)
  @columns = line.gsub(COMMENT, '').split
end