Sha256: df62b04adef9eed8d84ecbf1ec4bd6c971499d6e5e4b80dd0d8a14eca81a6e06
Contents?: true
Size: 1.4 KB
Versions: 21
Compression:
Stored size: 1.4 KB
Contents
class Tracksperanto::Import::Boujou < Tracksperanto::Import::Base def self.human_name "Boujou feature tracks export" end def parse(io) wrapped_io = Tracksperanto::ExtIO.new(io) detect_columns(wrapped_io) trackers = {} filtering_trackers_from(wrapped_io) do | name, frame, x, y | trackers[name] ||= Tracksperanto::Tracker.new(:name => name) report_progress("Extracting frame #{frame} of #{name}") trackers[name].keyframe!(:frame => (frame.to_i - 1), :abs_y => (@height.to_f - y.to_f), :abs_x => x) end trackers.values.sort{|a,b| a.name <=> b.name } end private COMMENT = /^# / 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 def set_columns_from(line) @columns = line.gsub(COMMENT, '').split end # # # # track_id view x y # Target_track_1 5 252.046 171.677 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 def make_column_hash(line) Hash[*@columns.zip(line.split).flatten] end def comment?(line) line =~ COMMENT end end
Version data entries
21 entries across 21 versions & 1 rubygems