tracksperanto 1.7.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.7.1 / 2010-01-24
2
+
3
+ * Fix Ruby 1.9 compatibility
4
+
1
5
  === 1.7.0 / 2010-01-24
2
6
 
3
7
  * Fix edge cases of specific comp sizes outputting incorrect exports for Equalizer 3 and MatchMover
data/bin/tracksperanto CHANGED
@@ -62,6 +62,8 @@ parser = OptionParser.new do | p |
62
62
  p.on(" -ym", "--yshift Y_IN_PIXELS", Float, "Move the points up or down") {|sx| y_shift = sx }
63
63
  p.on("--version", "Show the version and exit") {|v|
64
64
  puts "#{Tracksperanto::VERSION} running on Ruby #{RUBY_VERSION} on #{RUBY_PLATFORM}"
65
+ puts "Copyright 2008-#{Time.now.year} by Guerilla-DI (Julik Tarkhanov and contributors)"
66
+ puts "For questions and support contact info at guerilla-di.org"
65
67
  exit(0)
66
68
  }
67
69
  end
@@ -75,7 +77,7 @@ rescue OptionParser::MissingArgument => e
75
77
  end
76
78
 
77
79
  begin
78
- reader_klass = Tracksperanto::Import.const_get(reader_name)
80
+ reader_klass = Tracksperanto.get_importer(reader_name)
79
81
  rescue NameError => e
80
82
  STDERR.puts "Unknown reader #{reader_name}, available readers: #{readers.join(', ')}"
81
83
  exit(-1)
@@ -109,7 +111,7 @@ pipe.progress_block = Spinner.new.method(:spin).to_proc
109
111
 
110
112
  if sole_format
111
113
  begin
112
- pipe.exporters = [Tracksperanto::Export.const_get(sole_format)]
114
+ pipe.exporters = [Tracksperanto::Export.get_exporter(sole_format)]
113
115
  rescue NameError
114
116
  STDERR.puts "Unknown exporter #{sole_format}. Available exporters: #{writers.join(", ")}"
115
117
  exit(-1)
@@ -36,13 +36,17 @@ class Tracksperanto::Import::FlameStabilizer < Tracksperanto::Import::Base
36
36
  keyframes = []
37
37
 
38
38
  while line = io.gets
39
- indent ||= line.scan(/^(\s+)/)[1]
39
+
40
+ unless indent
41
+ indent = line.scan(/^(\s+)/)[1]
42
+ end_mark = "#{indent}End"
43
+ end
40
44
 
41
45
  if line =~ keyframe_count_matcher
42
46
  $1.to_i.times { push(extract_key_from(io)) }
43
47
  elsif line =~ base_value_matcher && empty?
44
48
  self.base_value = $1
45
- elsif line.strip == "#{indent}End"
49
+ elsif line.strip == end_mark
46
50
  break
47
51
  end
48
52
  end
@@ -60,13 +64,17 @@ class Tracksperanto::Import::FlameStabilizer < Tracksperanto::Import::Base
60
64
  if line =~ frame_matcher
61
65
  frame = $1.to_i
62
66
  elsif line =~ value_matcher
63
- value = $1.to_f
64
- return [frame,value]
67
+ return [frame, $1.to_f]
65
68
  end
66
69
  end
67
70
 
68
71
  raise "Did not detect any keyframes!"
69
72
  end
73
+
74
+ # Hack - prevents the channel to be flattened into keyframes
75
+ # when it gets Array#flatten'ed
76
+ def to_ary; end
77
+ private :to_ary
70
78
  end
71
79
 
72
80
  def parse(io)
@@ -36,7 +36,7 @@ class Tracksperanto::Import::MatchMover < Tracksperanto::Import::Base
36
36
  end
37
37
 
38
38
  def extract_track(start_line, io)
39
- tracker_name = start_line.scan(/\"([^\"]+)\"/).to_s
39
+ tracker_name = start_line.scan(/\"([^\"]+)\"/).flatten[0]
40
40
  t = Tracksperanto::Tracker.new(:name => tracker_name)
41
41
  while(line = io.gets) do
42
42
  return t if line =~ /\}/
@@ -35,8 +35,9 @@ module Tracksperanto::ShakeGrammar
35
35
  private
36
36
 
37
37
  def can_handle_meth?(m)
38
- @meths ||= self.class.public_instance_methods(false)
39
- @meths.include?(m)
38
+ # Ruby 1.9 - match on stringified methname
39
+ @meths ||= self.class.public_instance_methods(false).map{|mn| mn.to_s }
40
+ @meths.include?(m.to_s)
40
41
  end
41
42
 
42
43
  def exec_funcall(methname, args)
data/lib/pipeline/base.rb CHANGED
@@ -111,7 +111,7 @@ class Tracksperanto::Pipeline::Base
111
111
  t.each_with_index do | kf, idx |
112
112
  keyframes += 1
113
113
  processor.export_point(kf.frame, kf.abs_x, kf.abs_y, kf.residual)
114
- yield(percent_complete += kf_weight, "Writing keyframe #{idx+1} of #{t.length}") if block_given?
114
+ yield(percent_complete += kf_weight, "Writing keyframe #{idx+1} of #{t.name.inspect}") if block_given?
115
115
  end
116
116
  processor.end_tracker_segment
117
117
  end
data/lib/tracksperanto.rb CHANGED
@@ -4,7 +4,7 @@ require 'tempfile'
4
4
 
5
5
  module Tracksperanto
6
6
  PATH = File.expand_path(File.dirname(__FILE__))
7
- VERSION = '1.7.0'
7
+ VERSION = '1.7.1'
8
8
 
9
9
  module Import; end
10
10
  module Export; end
@@ -39,6 +39,25 @@ module Tracksperanto
39
39
 
40
40
  self.exporters, self.importers, self.middlewares = [], [], []
41
41
 
42
+ # Case-insensitive search for an export module by name
43
+ def self.get_exporter(name)
44
+ exporters.each do | x |
45
+ normalized_name = x.to_s.split("::")[-1].downcase
46
+ return x if normalized_name == name.downcase
47
+ end
48
+
49
+ raise NameError, "Unknown exporter #{name}"
50
+ end
51
+
52
+ # Case-insensitive search for an export module by name
53
+ def self.get_importer(name)
54
+ importers.each do | x |
55
+ normalized_name = x.to_s.split("::")[-1].downcase
56
+ return x if normalized_name == name.downcase
57
+ end
58
+
59
+ raise NameError, "Unknown importer #{name}"
60
+ end
42
61
  end
43
62
 
44
63
  %w(
@@ -1,10 +1,12 @@
1
1
  require File.dirname(__FILE__) + '/../helper'
2
2
 
3
- class EqualizerExportTestTest < Test::Unit::TestCase
3
+ class Equalizer4ExportTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
5
5
  P = File.dirname(__FILE__) + "/samples/ref_equalizer.txt"
6
6
 
7
7
  def test_export_output_written
8
+ # This test might be failing due to different float rounding between platforms
9
+ # (currently fails on win ruby and jruby)
8
10
  ensure_same_output Tracksperanto::Export::Equalizer4, P
9
11
  end
10
12
 
@@ -0,0 +1,62 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TracksperantoTest < Test::Unit::TestCase
4
+ def test_middlewares
5
+ m = Tracksperanto.middlewares
6
+ m.each do | middleware_module |
7
+ assert_kind_of Module, middleware_module
8
+ end
9
+ end
10
+
11
+ def test_exporters
12
+ m = Tracksperanto.exporters
13
+ m.each do | x |
14
+ assert_kind_of Class, x
15
+ end
16
+ end
17
+
18
+ def test_importers
19
+ m = Tracksperanto.importers
20
+ m.each do | x |
21
+ assert_kind_of Class, x
22
+ end
23
+ end
24
+
25
+ def test_middleware_names
26
+ m = Tracksperanto.middleware_names
27
+ assert m.include?("Golden")
28
+ end
29
+
30
+ def test_importer_names
31
+ m = Tracksperanto.importer_names
32
+ assert m.include?("FlameStabilizer")
33
+ end
34
+
35
+ def test_exporter_names
36
+ m = Tracksperanto.exporter_names
37
+ assert m.include?("PFTrack5")
38
+ end
39
+
40
+ def test_get_importer
41
+ i1 = Tracksperanto.get_importer("syntheyes")
42
+ assert_equal i1, Tracksperanto::Import::Syntheyes
43
+ end
44
+
45
+ def test_get_importer_multicase
46
+ i1 = Tracksperanto.get_importer("ShakeScript")
47
+ assert_equal i1, Tracksperanto::Import::ShakeScript
48
+ end
49
+
50
+ def test_get_exporter
51
+ i1 = Tracksperanto.get_exporter("syntheyes")
52
+ assert_equal i1, Tracksperanto::Export::SynthEyes
53
+
54
+ i1 = Tracksperanto.get_exporter("SynThEyes")
55
+ assert_equal i1, Tracksperanto::Export::SynthEyes
56
+ end
57
+
58
+ def test_get_unknown_exporter_should_raise
59
+ assert_raise(NameError) { Tracksperanto.get_exporter("foo") }
60
+ end
61
+
62
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tracksperanto
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-24 00:00:00 +01:00
12
+ date: 2010-01-28 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -238,3 +238,4 @@ test_files:
238
238
  - test/test_keyframe.rb
239
239
  - test/test_simple_export.rb
240
240
  - test/test_tracker.rb
241
+ - test/test_tracksperanto.rb