Sha256: 39a7f2bd47100d7188e957f415f37a814160972e6b1180298e6a480cdab3af63
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 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 = {} extract_trackers(wrapped_io) do | k | name, frame, x, y = k["track_id"], k["view"], k["x"], k["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 extract_trackers(io) until io.eof? line = io.gets_and_strip next if comment?(line) yield(make_column_hash(line)) end end def make_column_hash(line) Hash[*@columns.zip(line.split).flatten] end def comment?(line) line =~ COMMENT end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tracksperanto-1.6.4 | lib/import/boujou.rb |