tracksperanto 1.9.6 → 1.9.8

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.
@@ -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