tracksperanto 1.9.6 → 1.9.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,10 @@
1
+ === 1.9.8 / 2010-08-11
2
+
3
+ * Very minor changes and improvements
4
+ * The app will now tell you when you try to feed it an empty file
5
+ * Change Synetheyes exports to start with a standard frame and not a keyframe to make 1-frame trackers work
6
+ * Adds a flip middleware to mirror a tracked comp
7
+
1
8
  === 1.9.6 / 2010-06-17
2
9
 
3
10
  * Support Tracker nodes in Shake scripts that come from an old (ages old!) Shake version
@@ -29,7 +36,7 @@
29
36
  === 1.9.0 / 2010-03-21
30
37
 
31
38
  * Use proper progress bars
32
- * Allow proper chaining of middlewares in the commandline app - you can now apply many middlewares of the same nature in chainn, and they will be ordered correctly
39
+ * Allow proper chaining of middlewares in the commandline app - you can now apply many middlewares of the same nature in chain, and they will be ordered correctly
33
40
  * Small rewrites to Pipeline::Base (changes API slightly - please consult the docs)
34
41
 
35
42
  === 1.8.4 / 2010-03-10
@@ -32,6 +32,7 @@ lib/import/shake_script.rb
32
32
  lib/import/shake_text.rb
33
33
  lib/import/syntheyes.rb
34
34
  lib/middleware/base.rb
35
+ lib/middleware/flip.rb
35
36
  lib/middleware/golden.rb
36
37
  lib/middleware/length_cutoff.rb
37
38
  lib/middleware/lerp.rb
@@ -104,6 +105,7 @@ test/import/samples/pftrack5/garage.2dt
104
105
  test/import/samples/shake_script/four_tracks_in_one_matchmove.shk
105
106
  test/import/samples/shake_script/four_tracks_in_one_stabilizer.shk
106
107
  test/import/samples/shake_script/from_matchmover.shk
108
+ test/import/samples/shake_script/oldTrackerNode.shk
107
109
  test/import/samples/shake_script/shake_script_from_boujou.shk
108
110
  test/import/samples/shake_script/shake_tracker_nodes.shk
109
111
  test/import/samples/shake_script/shake_tracker_with_no_anim.shk
@@ -111,7 +113,6 @@ test/import/samples/shake_script/shake_trackers_with_Nspline.shk
111
113
  test/import/samples/shake_script/stabilize_nodes_with_hermite.shk
112
114
  test/import/samples/shake_script/three_tracks_in_one_stabilizer.shk
113
115
  test/import/samples/shake_script/two_tracks_in_one_tracker.shk
114
- test/import/samples/shake_script/oldTrackerNode.shk
115
116
  test/import/samples/shake_text/one_shake_tracker.txt
116
117
  test/import/samples/shake_text/one_shake_tracker_from_first.txt
117
118
  test/import/samples/shake_text/two_shake_trackers.txt
@@ -132,6 +133,7 @@ test/import/test_shake_lexer.rb
132
133
  test/import/test_shake_script_import.rb
133
134
  test/import/test_shake_text_import.rb
134
135
  test/import/test_syntheyes_import.rb
136
+ test/middleware/test_flip_middleware.rb
135
137
  test/middleware/test_golden_middleware.rb
136
138
  test/middleware/test_length_cutoff_middleware.rb
137
139
  test/middleware/test_lerp_middleware.rb
@@ -19,16 +19,14 @@ require "open-uri"
19
19
  require "timeout"
20
20
 
21
21
  def version_check
22
- Timeout::timeout(2) do
23
- begin
24
- version_info = open("http://rubygems.org/api/v1/gems/tracksperanto.xml").string.scan(/<version>(.+)<\/version>/).to_s
25
- int_available, int_present = [version_info, Tracksperanto::VERSION].map{|v| v.scan(/(\d+)/).to_s.to_i }
26
- if int_available > int_present
27
- puts "Your version of Tracksperanto is probably out of date (the current version is #{version_info}, but you have #{Tracksperanto::VERSION})."
28
- puts "Please consider updating (run 'gem update tracksperanto')"
29
- end
30
- rescue OpenURI::HTTPError => e
22
+ begin
23
+ version_info = open("http://rubygems.org/api/v1/gems/tracksperanto.xml").string.scan(/<version>(.+)<\/version>/).to_s
24
+ int_available, int_present = [version_info, Tracksperanto::VERSION].map{|v| v.scan(/(\d+)/).to_s.to_i }
25
+ if int_available > int_present
26
+ puts "Your version of Tracksperanto is probably out of date (the current version is #{version_info}, but you have #{Tracksperanto::VERSION})."
27
+ puts "Please consider updating (run 'gem update tracksperanto')"
31
28
  end
29
+ rescue Exception
32
30
  end
33
31
  end
34
32
 
@@ -73,6 +71,8 @@ op.on(" -xm", "--xshift X_IN_PIXELS", Float, "Move the points left or right", &m
73
71
  op.on(" -ym", "--yshift Y_IN_PIXELS", Float, "Move the points up or down", &mw("Shift", :y_shift))
74
72
  op.on(" -p", "--prefix PREFIX", String, "A prefix to prepend to tracker names in bulk", &mw("Prefix", :prefix))
75
73
  op.on("--lerp", "Linearly interpolate missing keyframes", &mw("Lerp", :enabled, true))
74
+ op.on("--flip", "Flip the comp horizontally", &mw("Flip", :flip, true))
75
+ op.on("--flop", "Flop the comp vertically", &mw("Flip", :flop, true))
76
76
 
77
77
  op.on("--version", "Show the version and exit") do |v|
78
78
  puts "Tracksperanto v.#{Tracksperanto::VERSION} running on Ruby #{RUBY_VERSION} on #{RUBY_PLATFORM}"
@@ -43,9 +43,7 @@ class Tracksperanto::Export::SynthEyes < Tracksperanto::Export::Base
43
43
  # OUTCOME_OUTASIGHT = 32
44
44
  # We actually provide pregenerated status codes instead of that to get the desired outcome codes.
45
45
  def get_outcome_code(frame)
46
- outcome = if @last_registered_frame.nil?
47
- STATUS_KF
48
- elsif @last_registered_frame != (frame - 1)
46
+ outcome = if @last_registered_frame.nil? || (@last_registered_frame != (frame - 1))
49
47
  STATUS_REENABLE
50
48
  else
51
49
  STATUS_STD
@@ -45,11 +45,11 @@ module Tracksperanto::ShakeGrammar
45
45
  c = @io.read(1)
46
46
 
47
47
  if @buf.length > MAX_BUFFER_SIZE # Wrong format and the buffer is filled up, bail
48
- raise WrongInput, "Buffer overflow at 32K, this is definitely not a Shake script"
48
+ raise WrongInput, "Atom buffer overflow at #{MAX_BUFFER_SIZE} bytes, this is definitely not a Shake script"
49
49
  end
50
50
 
51
51
  if @stack_depth > MAX_STACK_DEPTH # Wrong format - parentheses overload
52
- raise WrongInput, "Stack overflow at level 128, this is probably a LISP program uploaded by accident"
52
+ raise WrongInput, "Stack overflow at level #{MAX_STACK_DEPTH}, this is probably a LISP program uploaded by accident"
53
53
  end
54
54
 
55
55
  return consume_comment(c) if in_comment?
@@ -0,0 +1,16 @@
1
+ # Flips the comp being exported horizontally or vertically
2
+ class Tracksperanto::Middleware::Flip < Tracksperanto::Middleware::Base
3
+
4
+ attr_accessor :flip, :flop
5
+
6
+ def start_export(w, h)
7
+ @w, @h = w, h
8
+ super
9
+ end
10
+
11
+ def export_point(frame, float_x, float_y, float_residual)
12
+ x = @flip ? (@w - float_x) : float_x
13
+ y = @flop ? (@h - float_y) : float_y
14
+ super(frame, x, y, float_residual)
15
+ end
16
+ end
@@ -56,6 +56,9 @@ class Tracksperanto::Pipeline::Base
56
56
  # Assign the parser
57
57
  importer = initialize_importer_with_path_and_options(from_input_file_path, passed_options)
58
58
 
59
+ # Check for empty files
60
+ raise "This is an empty source file" if File.stat(from_input_file_path).size.zero?
61
+
59
62
  # Open the file
60
63
  read_data = File.open(from_input_file_path, "rb")
61
64
 
@@ -4,7 +4,7 @@ require 'tempfile'
4
4
 
5
5
  module Tracksperanto
6
6
  PATH = File.expand_path(File.dirname(__FILE__))
7
- VERSION = '1.9.6'
7
+ VERSION = '1.9.8'
8
8
 
9
9
  module Import; end
10
10
  module Export; end
@@ -39,3 +39,5 @@
39
39
  1 18 -1.4222222222 -0.2800000000 0.0857142857
40
40
  1 19 -1.6000000000 -0.6200000000 0.0904761905
41
41
  1 20 -1.7777777778 -1.0000000000 0.0952380952
42
+ # Name SingleFrame
43
+ 2 0 0.0185185185 0.0185185185 0.0000000000
@@ -39,3 +39,5 @@
39
39
  1 18 -1.4240000000 -0.2800000000 0.0857142857
40
40
  1 19 -1.6020000000 -0.6200000000 0.0904761905
41
41
  1 20 -1.7800000000 -1.0000000000 0.0952380952
42
+ # Name SingleFrame
43
+ 2 0 0.0185416667 0.0185185185 0.0000000000
@@ -28,3 +28,10 @@ Tracker3 {
28
28
  xpos 0
29
29
  ypos 60
30
30
  }
31
+
32
+ Tracker3 {
33
+ track1 {{curve i x1 970.0000} {curve i x1 550.0000}}
34
+ name SingleFrame
35
+ xpos 0
36
+ ypos 90
37
+ }
@@ -44,3 +44,8 @@
44
44
  18 192.000 388.800 0.107
45
45
  19 96.000 205.200 0.113
46
46
  20 0.000 0.000 0.119
47
+
48
+
49
+ "SingleFrame"
50
+ 1
51
+ 0 970.000 550.000 0.000
@@ -46,3 +46,9 @@
46
46
  18 192.000 388.800 0.107
47
47
  19 96.000 205.200 0.113
48
48
  20 0.000 0.000 0.119
49
+
50
+
51
+ "SingleFrame"
52
+ "Primary"
53
+ 1
54
+ 0 970.000 550.000 0.000
@@ -42,3 +42,7 @@ TrackName Parabolic_2_from_bottom_right
42
42
  20.00 96.000 205.200 0.095
43
43
  21.00 0.000 0.000 0.048
44
44
 
45
+ TrackName SingleFrame
46
+ Frame X Y Correlation
47
+ 1.00 970.000 550.000 1.000
48
+
@@ -1,4 +1,4 @@
1
- Parabolic_1_from_top_left 0 -1.000000 -1.000000 30
1
+ Parabolic_1_from_top_left 0 -1.000000 -1.000000 15
2
2
  Parabolic_1_from_top_left 1 -0.900000 -0.620000 7
3
3
  Parabolic_1_from_top_left 2 -0.800000 -0.280000 7
4
4
  Parabolic_1_from_top_left 3 -0.700000 0.020000 7
@@ -17,7 +17,7 @@ Parabolic_1_from_top_left 17 0.700000 0.020000 7
17
17
  Parabolic_1_from_top_left 18 0.800000 -0.280000 7
18
18
  Parabolic_1_from_top_left 19 0.900000 -0.620000 7
19
19
  Parabolic_1_from_top_left 20 1.000000 -1.000000 7
20
- Parabolic_2_from_bottom_right 0 1.000000 1.000000 30
20
+ Parabolic_2_from_bottom_right 0 1.000000 1.000000 15
21
21
  Parabolic_2_from_bottom_right 1 0.900000 0.620000 7
22
22
  Parabolic_2_from_bottom_right 2 0.800000 0.280000 7
23
23
  Parabolic_2_from_bottom_right 3 0.700000 -0.020000 7
@@ -36,3 +36,4 @@ Parabolic_2_from_bottom_right 17 -0.700000 -0.020000 7
36
36
  Parabolic_2_from_bottom_right 18 -0.800000 0.280000 7
37
37
  Parabolic_2_from_bottom_right 19 -0.900000 0.620000 7
38
38
  Parabolic_2_from_bottom_right 20 -1.000000 1.000000 7
39
+ SingleFrame 0 0.010417 -0.018519 15
@@ -1,4 +1,4 @@
1
- 2
1
+ 3
2
2
  Parabolic_1_from_top_left
3
3
  0
4
4
  19
@@ -43,3 +43,7 @@ Parabolic_2_from_bottom_right
43
43
  19 191.999999999999943 388.799999999999841
44
44
  20 95.999999999999972 205.199999999999932
45
45
  21 0.000000000000000 0.000000000000000
46
+ SingleFrame
47
+ 0
48
+ 1
49
+ 1 970.000000000000000 550.000000000000000
@@ -39,4 +39,6 @@ Parabolic_2_from_bottom_right
39
39
  19 192.000 388.800
40
40
  20 96.000 205.200
41
41
  21 0.000 0.000
42
+ SingleFrame
43
+ 1 970.000 550.000
42
44
 
@@ -2,7 +2,7 @@ StabilizerFileVersion 5.0
2
2
  CreationDate Thu Feb 18 17:22:12 2010
3
3
 
4
4
 
5
- NbTrackers 2
5
+ NbTrackers 3
6
6
  Selected 0
7
7
  FrameWidth 1920
8
8
  FrameHeight 1080
@@ -794,6 +794,140 @@ Channel tracker2/shift/y
794
794
  RightSlope 2.400
795
795
  End
796
796
  End
797
+ Channel tracker3/track/x
798
+ Extrapolation constant
799
+ Value 960
800
+ Colour 50 50 50
801
+ End
802
+ Channel tracker3/track/y
803
+ Extrapolation constant
804
+ Value 540
805
+ Colour 50 50 50
806
+ End
807
+ Channel tracker3/track/width
808
+ Extrapolation linear
809
+ Value 15
810
+ Colour 50 50 50
811
+ End
812
+ Channel tracker3/track/height
813
+ Extrapolation linear
814
+ Value 15
815
+ Colour 50 50 50
816
+ End
817
+ Channel tracker3/ref/width
818
+ Extrapolation linear
819
+ Value 10
820
+ Colour 50 50 50
821
+ End
822
+ Channel tracker3/ref/height
823
+ Extrapolation linear
824
+ Value 10
825
+ Colour 50 50 50
826
+ End
827
+ Channel tracker3/ref/x
828
+ Extrapolation constant
829
+ Value 970.000
830
+ Colour 50 50 50
831
+ KeyVersion 1
832
+ Size 1
833
+ Key 0
834
+ Frame 1
835
+ Value 970.000
836
+ Interpolation constant
837
+ LeftSlope 2.400
838
+ RightSlope 2.400
839
+ End
840
+ End
841
+ Channel tracker3/ref/y
842
+ Extrapolation constant
843
+ Value 550.000
844
+ Colour 50 50 50
845
+ KeyVersion 1
846
+ Size 1
847
+ Key 0
848
+ Frame 1
849
+ Value 550.000
850
+ Interpolation constant
851
+ LeftSlope 2.400
852
+ RightSlope 2.400
853
+ End
854
+ End
855
+ Channel tracker3/ref/dx
856
+ Extrapolation constant
857
+ Value 0
858
+ Colour 50 50 50
859
+ Size 2
860
+ KeyVersion 1
861
+ Key 0
862
+ Frame 0
863
+ Value 0
864
+ ValueLock yes
865
+ DeleteLock yes
866
+ Interpolation constant
867
+ End
868
+ Key 1
869
+ Frame 1
870
+ Value 0
871
+ ValueLock yes
872
+ DeleteLock yes
873
+ Interpolation constant
874
+ End
875
+ End
876
+ Channel tracker3/ref/dy
877
+ Extrapolation constant
878
+ Value 0
879
+ Colour 50 50 50
880
+ Size 2
881
+ KeyVersion 1
882
+ Key 0
883
+ Frame 0
884
+ Value 0
885
+ ValueLock yes
886
+ DeleteLock yes
887
+ Interpolation constant
888
+ End
889
+ Key 1
890
+ Frame 1
891
+ Value 0
892
+ ValueLock yes
893
+ DeleteLock yes
894
+ Interpolation constant
895
+ End
896
+ End
897
+ Channel tracker3/offset/x
898
+ Extrapolation constant
899
+ Value 0
900
+ End
901
+ Channel tracker3/offset/y
902
+ Extrapolation constant
903
+ Value 0
904
+ End
905
+ Channel tracker3/shift/x
906
+ Extrapolation constant
907
+ Value 0
908
+ KeyVersion 1
909
+ Size 1
910
+ Key 0
911
+ Frame 1
912
+ Value 0
913
+ Interpolation linear
914
+ LeftSlope 2.400
915
+ RightSlope 2.400
916
+ End
917
+ End
918
+ Channel tracker3/shift/y
919
+ Extrapolation constant
920
+ Value 0
921
+ KeyVersion 1
922
+ Size 1
923
+ Key 0
924
+ Frame 1
925
+ Value 0
926
+ Interpolation linear
927
+ LeftSlope 2.400
928
+ RightSlope 2.400
929
+ End
930
+ End
797
931
  ChannelEnd
798
932
  Tracker 0
799
933
  Active yes
@@ -815,3 +949,13 @@ Tracker 1
815
949
  FixedX no
816
950
  FixedY no
817
951
  Tolerance 100
952
+ Tracker 2
953
+ Active yes
954
+ Colour
955
+ Red 0
956
+ Green 100
957
+ Blue 0
958
+ FixedRef yes
959
+ FixedX no
960
+ FixedY no
961
+ Tolerance 100
@@ -46,3 +46,7 @@ pointTrack "Parabolic_2_from_bottom_right" rgb( 255 0 0 )
46
46
  20 96.000 874.800 p+( 0.095238 )
47
47
  21 0.000 1080.000 p+( 0.047619 )
48
48
  }
49
+ pointTrack "SingleFrame" rgb( 255 0 0 )
50
+ {
51
+ 1 970.000 530.000 ki( 0.8 ) s( 66 66 64 64 ) p( 24 24 25 25 )
52
+ }
@@ -3,6 +3,7 @@ require 'test/unit'
3
3
  require 'rubygems'
4
4
  require 'flexmock'
5
5
  require 'flexmock/test_unit'
6
+ require 'fileutils'
6
7
 
7
8
  # This module creates ideal parabolic tracks for testing exporters. The two trackers
8
9
  # will start at opposite corners of the image and traverse two parabolic curves, touching
@@ -64,6 +65,10 @@ module ParabolicTracks
64
65
  end
65
66
  end
66
67
 
68
+ SINGLE_FRAME_TRACK = Tracksperanto::Tracker.new(:name => "SingleFrame") do | t |
69
+ t.keyframe! :frame => 0, :abs_x => (1920/2) + 10, :abs_y => (1080/2)+10, :residual => 0
70
+ end
71
+
67
72
  def create_reference_output(exporter_klass, ref_path)
68
73
  File.open(ref_path, "w") do | io |
69
74
  x = exporter_klass.new(io)
@@ -73,6 +78,13 @@ module ParabolicTracks
73
78
  end
74
79
 
75
80
  def ensure_same_output(exporter_klass, reference_path, message = "The line should be identical")
81
+ if ENV['OVERWRITE']
82
+ File.open(reference_path, "w") do | out |
83
+ x = exporter_klass.new(out)
84
+ export_parabolics_with(x)
85
+ end
86
+ end
87
+
76
88
  io = StringIO.new
77
89
  x = exporter_klass.new(io)
78
90
  yield(x) if block_given?
@@ -91,7 +103,7 @@ module ParabolicTracks
91
103
 
92
104
  def export_parabolics_with(exporter)
93
105
  exporter.start_export(1920, 1080)
94
- [FIRST_TRACK, SECOND_TRACK].each do | t |
106
+ [FIRST_TRACK, SECOND_TRACK, SINGLE_FRAME_TRACK].each do | t |
95
107
  exporter.start_tracker_segment(t.name)
96
108
  t.keyframes.each do | kf |
97
109
  exporter.export_point(kf.frame, kf.abs_x, kf.abs_y, kf.residual)
@@ -0,0 +1,30 @@
1
+ require File.dirname(__FILE__) + '/../helper'
2
+
3
+ class ShiftMiddlewareTest < Test::Unit::TestCase
4
+ def test_shift_supports_hash_init
5
+ receiver = flexmock
6
+
7
+ m = Tracksperanto::Middleware::Flip.new(receiver)
8
+ assert !m.flip
9
+ assert !m.flop
10
+
11
+ m = Tracksperanto::Middleware::Flip.new(receiver, :flip => true)
12
+ assert m.flip
13
+
14
+ m = Tracksperanto::Middleware::Flip.new(receiver, :flop => true)
15
+ assert m.flop
16
+ end
17
+
18
+ def test_export_flip_and_flop
19
+ receiver = flexmock(:exporter)
20
+ receiver.should_receive(:start_export).once.with(110, 120)
21
+ receiver.should_receive(:export_point).once.with(1, 100, 95, 0)
22
+ receiver.should_receive(:export_point).once.with(1, 10, 95, 0)
23
+
24
+ m = Tracksperanto::Middleware::Flip.new(receiver, :flip => true)
25
+ m.start_export(110, 120)
26
+ m.export_point(1, 10, 95, 0)
27
+ m.flip = false
28
+ m.export_point(1, 10, 95, 0)
29
+ end
30
+ end
@@ -5,7 +5,7 @@ class CliTest < Test::Unit::TestCase
5
5
  BIN_P = File.expand_path(File.dirname(__FILE__) + "/../bin/tracksperanto")
6
6
 
7
7
  def setup
8
- Dir.mkdir(TEMP_DIR)
8
+ Dir.mkdir(TEMP_DIR) unless File.exist?(TEMP_DIR)
9
9
  FileUtils.cp(File.dirname(__FILE__) + "/import/samples/flame_stabilizer/fromCombustion_fromMidClip_wSnap.stabilizer", TEMP_DIR + "/flm.stabilizer")
10
10
  end
11
11
 
@@ -43,6 +43,13 @@ class PipelineTest < Test::Unit::TestCase
43
43
  assert_equal 9, pipeline.converted_keyframes, "Should report conversion of 9 keyframes"
44
44
  end
45
45
 
46
+ def test_run_crashes_with_empty_file
47
+ empty_file_path = "./input_empty.stabilizer"
48
+ f = File.open(empty_file_path, "w"){|f| f.write('') }
49
+ pipeline = Tracksperanto::Pipeline::Base.new
50
+ assert_raise(RuntimeError) { pipeline.run(empty_file_path) }
51
+ end
52
+
46
53
  def test_middleware_initialization_from_tuples
47
54
  create_stabilizer_file
48
55
 
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tracksperanto
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.6
4
+ hash: 35
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 9
9
+ - 8
10
+ version: 1.9.8
5
11
  platform: ruby
6
12
  authors:
7
13
  - Julik Tarkhanov
@@ -9,39 +15,53 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-06-17 00:00:00 +02:00
18
+ date: 2010-08-11 00:00:00 +02:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: progressbar
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
23
32
  version: "0"
24
- version:
33
+ type: :runtime
34
+ version_requirements: *id001
25
35
  - !ruby/object:Gem::Dependency
26
36
  name: flexmock
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
30
40
  requirements:
31
41
  - - ">="
32
42
  - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
33
46
  version: "0"
34
- version:
47
+ type: :development
48
+ version_requirements: *id002
35
49
  - !ruby/object:Gem::Dependency
36
50
  name: hoe
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
40
54
  requirements:
41
55
  - - ">="
42
56
  - !ruby/object:Gem::Version
57
+ hash: 23
58
+ segments:
59
+ - 2
60
+ - 6
61
+ - 0
43
62
  version: 2.6.0
44
- version:
63
+ type: :development
64
+ version_requirements: *id003
45
65
  description: Tracksperanto is a universal 2D-track translator between many apps.
46
66
  email:
47
67
  - me@julik.nl
@@ -89,6 +109,7 @@ files:
89
109
  - lib/import/shake_text.rb
90
110
  - lib/import/syntheyes.rb
91
111
  - lib/middleware/base.rb
112
+ - lib/middleware/flip.rb
92
113
  - lib/middleware/golden.rb
93
114
  - lib/middleware/length_cutoff.rb
94
115
  - lib/middleware/lerp.rb
@@ -161,6 +182,7 @@ files:
161
182
  - test/import/samples/shake_script/four_tracks_in_one_matchmove.shk
162
183
  - test/import/samples/shake_script/four_tracks_in_one_stabilizer.shk
163
184
  - test/import/samples/shake_script/from_matchmover.shk
185
+ - test/import/samples/shake_script/oldTrackerNode.shk
164
186
  - test/import/samples/shake_script/shake_script_from_boujou.shk
165
187
  - test/import/samples/shake_script/shake_tracker_nodes.shk
166
188
  - test/import/samples/shake_script/shake_tracker_with_no_anim.shk
@@ -168,7 +190,6 @@ files:
168
190
  - test/import/samples/shake_script/stabilize_nodes_with_hermite.shk
169
191
  - test/import/samples/shake_script/three_tracks_in_one_stabilizer.shk
170
192
  - test/import/samples/shake_script/two_tracks_in_one_tracker.shk
171
- - test/import/samples/shake_script/oldTrackerNode.shk
172
193
  - test/import/samples/shake_text/one_shake_tracker.txt
173
194
  - test/import/samples/shake_text/one_shake_tracker_from_first.txt
174
195
  - test/import/samples/shake_text/two_shake_trackers.txt
@@ -189,6 +210,7 @@ files:
189
210
  - test/import/test_shake_script_import.rb
190
211
  - test/import/test_shake_text_import.rb
191
212
  - test/import/test_syntheyes_import.rb
213
+ - test/middleware/test_flip_middleware.rb
192
214
  - test/middleware/test_golden_middleware.rb
193
215
  - test/middleware/test_length_cutoff_middleware.rb
194
216
  - test/middleware/test_lerp_middleware.rb
@@ -209,6 +231,7 @@ files:
209
231
  - test/test_simple_export.rb
210
232
  - test/test_tracker.rb
211
233
  - test/test_tracksperanto.rb
234
+ - test/middleware/test_lens_distort_middleware.rb
212
235
  has_rdoc: true
213
236
  homepage: http://guerilla-di.org/tracksperanto
214
237
  licenses: []
@@ -220,21 +243,27 @@ rdoc_options:
220
243
  require_paths:
221
244
  - lib
222
245
  required_ruby_version: !ruby/object:Gem::Requirement
246
+ none: false
223
247
  requirements:
224
248
  - - ">="
225
249
  - !ruby/object:Gem::Version
250
+ hash: 3
251
+ segments:
252
+ - 0
226
253
  version: "0"
227
- version:
228
254
  required_rubygems_version: !ruby/object:Gem::Requirement
255
+ none: false
229
256
  requirements:
230
257
  - - ">="
231
258
  - !ruby/object:Gem::Version
259
+ hash: 3
260
+ segments:
261
+ - 0
232
262
  version: "0"
233
- version:
234
263
  requirements: []
235
264
 
236
265
  rubyforge_project: guerilla-di
237
- rubygems_version: 1.3.5
266
+ rubygems_version: 1.3.7
238
267
  signing_key:
239
268
  specification_version: 3
240
269
  summary: Tracksperanto is a universal 2D-track translator between many apps.
@@ -264,6 +293,7 @@ test_files:
264
293
  - test/import/test_shake_script_import.rb
265
294
  - test/import/test_shake_text_import.rb
266
295
  - test/import/test_syntheyes_import.rb
296
+ - test/middleware/test_flip_middleware.rb
267
297
  - test/middleware/test_golden_middleware.rb
268
298
  - test/middleware/test_length_cutoff_middleware.rb
269
299
  - test/middleware/test_lens_distort_middleware.rb