tracksperanto 2.0.1 → 2.0.2

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.
Files changed (63) hide show
  1. data/History.txt +4 -0
  2. data/Rakefile +1 -1
  3. data/lib/export/nuke_script.rb +5 -9
  4. data/lib/export/pftrack.rb +9 -4
  5. data/lib/export/pftrack_5.rb +4 -4
  6. data/lib/middleware/base.rb +4 -4
  7. data/lib/middleware/flip.rb +3 -7
  8. data/lib/middleware/flop.rb +2 -6
  9. data/lib/middleware/scaler.rb +7 -4
  10. data/lib/pipeline/base.rb +11 -5
  11. data/lib/tracksperanto.rb +1 -1
  12. data/lib/tracksperanto/accumulator.rb +5 -5
  13. data/lib/tracksperanto/tracker.rb +4 -6
  14. data/test/export/samples/ref_PFTrack.2dt +12 -12
  15. data/test/export/test_boujou_export.rb +1 -1
  16. data/test/export/test_equalizer3_export.rb +1 -1
  17. data/test/export/test_equalizer_export.rb +1 -1
  18. data/test/export/test_flame_stabilizer_export.rb +1 -1
  19. data/test/export/test_match_mover_export.rb +1 -1
  20. data/test/export/test_maya_live_export.rb +1 -1
  21. data/test/export/test_mux.rb +1 -1
  22. data/test/export/test_nuke_export.rb +3 -3
  23. data/test/export/test_pftrack5_export.rb +1 -1
  24. data/test/export/test_pftrack_export.rb +1 -1
  25. data/test/export/test_shake_export.rb +1 -1
  26. data/test/export/test_syntheyes_export.rb +1 -1
  27. data/test/import/test_3de_import.rb +1 -1
  28. data/test/import/test_3de_import3.rb +1 -1
  29. data/test/import/test_boujou_import.rb +1 -1
  30. data/test/import/test_flame_import.rb +1 -1
  31. data/test/import/test_match_mover_import.rb +1 -1
  32. data/test/import/test_maya_live_import.rb +1 -1
  33. data/test/import/test_nuke_import.rb +1 -1
  34. data/test/import/test_pftrack_import.rb +1 -1
  35. data/test/import/test_shake_catcher.rb +1 -1
  36. data/test/import/test_shake_lexer.rb +1 -1
  37. data/test/import/test_shake_script_import.rb +1 -1
  38. data/test/import/test_shake_text_import.rb +1 -1
  39. data/test/import/test_syntheyes_import.rb +1 -1
  40. data/test/middleware/test_flip_middleware.rb +13 -6
  41. data/test/middleware/test_flop_middleware.rb +1 -1
  42. data/test/middleware/test_golden_middleware.rb +1 -1
  43. data/test/middleware/test_length_cutoff_middleware.rb +1 -1
  44. data/test/middleware/test_lens_distort_middleware.rb +1 -1
  45. data/test/middleware/test_lerp_middleware.rb +1 -1
  46. data/test/middleware/test_prefix.rb +1 -1
  47. data/test/middleware/test_reformat_middleware.rb +1 -1
  48. data/test/middleware/test_scaler_middleware.rb +12 -2
  49. data/test/middleware/test_shift_middleware.rb +1 -1
  50. data/test/middleware/test_slip_middleware.rb +1 -1
  51. data/test/test_buffer_io.rb +1 -1
  52. data/test/test_cli.rb +1 -1
  53. data/test/test_const_name.rb +1 -1
  54. data/test/test_extio.rb +1 -1
  55. data/test/test_flame_builder.rb +1 -1
  56. data/test/test_format_detector.rb +1 -1
  57. data/test/test_keyframe.rb +1 -1
  58. data/test/test_pipeline.rb +1 -1
  59. data/test/test_progressive_io.rb +1 -1
  60. data/test/test_simple_export.rb +1 -1
  61. data/test/test_tracker.rb +1 -1
  62. data/test/test_tracksperanto.rb +1 -1
  63. metadata +4 -4
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 2.0.2 / 2011-02-02
2
+ * Compatible with Ruby 1.9.2
3
+ * Scaler middleware now supports negative scaling factors
4
+
1
5
  === 2.0.0 / 2011-01-27
2
6
  * Bugfix for PFTrack exports to contain cross-platform linebreaks (rn instead of n)
3
7
 
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ begin
14
14
  p.rubyforge_name = 'guerilla-di'
15
15
  p.developer('Julik Tarkhanov', 'me@julik.nl')
16
16
  p.extra_rdoc_files = p.extra_rdoc_files.reject{|e| e =~ "samples\/"}
17
- p.clean_globs = %w( **/.DS_Store coverage.info )
17
+ p.clean_globs = %w( **/.DS_Store coverage.info **/*.rbc .idea)
18
18
  end
19
19
  rescue LoadError
20
20
  $stderr.puts "Meta-operations on this package require Hoe"
@@ -27,11 +27,6 @@ Constant {
27
27
  xpos 0
28
28
  ypos -60
29
29
  }]
30
- class T < Array
31
- attr_accessor :name
32
- include ::Tracksperanto::BlockInit
33
- end
34
-
35
30
  #:doc:
36
31
 
37
32
  # Offset by which the new nodes will be shifted down in the node graph
@@ -57,18 +52,19 @@ Constant {
57
52
  # We accumulate a tracker and on end dump it out in one piece
58
53
  def start_tracker_segment(tracker_name)
59
54
  # Setup for the next tracker
60
- @tracker = T.new(:name => tracker_name)
55
+ @tracker = Tracksperanto::Tracker.new(:name => tracker_name)
61
56
  end
62
57
 
63
58
  def end_tracker_segment
64
- @trackers_io.puts(
65
- NODE_TEMPLATE % [curves_from_tuples(@tracker), @tracker.name, (@ypos += SCHEMATIC_OFFSET)]
59
+ coord_tuples = @tracker.map{|kf| [kf.frame, kf.abs_x, kf.abs_y]}
60
+ @trackers_io.puts(
61
+ NODE_TEMPLATE % [curves_from_tuples(coord_tuples), @tracker.name, (@ypos += SCHEMATIC_OFFSET)]
66
62
  )
67
63
  end
68
64
 
69
65
  def export_point(frame, abs_float_x, abs_float_y, float_residual)
70
66
  # Nuke uses 1-based frames
71
- @tracker << [frame + 1, abs_float_x, abs_float_y]
67
+ @tracker.keyframe!(:frame => frame + 1, :abs_x => abs_float_x, :abs_y => abs_float_y)
72
68
  @max_frame = frame if frame > @max_frame
73
69
  end
74
70
 
@@ -3,6 +3,9 @@ class Tracksperanto::Export::PFTrack4 < Tracksperanto::Export::Base
3
3
 
4
4
  KEYFRAME_TEMPLATE = "%s %.3f %.3f %.3f"
5
5
 
6
+ # PFtrack wants cross-platform linebreaks
7
+ LINEBREAK = "\r\n"
8
+
6
9
  def self.desc_and_extension
7
10
  "pftrack_v4.2dt"
8
11
  end
@@ -19,9 +22,11 @@ class Tracksperanto::Export::PFTrack4 < Tracksperanto::Export::Base
19
22
  end
20
23
 
21
24
  def end_tracker_segment
22
- @io.write("\n\n")
23
- @io.puts(@tracker_name.inspect) # autoquotes
24
- @io.puts(@frame_count)
25
+ 2.times { @io.write(LINEBREAK) }
26
+ @io.write(@tracker_name.inspect) # autoquotes
27
+ @io.write(LINEBREAK)
28
+ @io.write(@frame_count)
29
+ @io.write(LINEBREAK)
25
30
 
26
31
  @tracker_io.rewind
27
32
  @io.write(@tracker_io.read) until @tracker_io.eof?
@@ -32,6 +37,6 @@ class Tracksperanto::Export::PFTrack4 < Tracksperanto::Export::Base
32
37
  @frame_count += 1
33
38
  line = KEYFRAME_TEMPLATE % [frame, abs_float_x, abs_float_y, float_residual / 8]
34
39
  @tracker_io.write(line)
35
- @tracker_io.write("\r\n")
40
+ @tracker_io.write(LINEBREAK)
36
41
  end
37
42
  end
@@ -10,13 +10,13 @@ class Tracksperanto::Export::PFTrack5 < Tracksperanto::Export::PFTrack4
10
10
  end
11
11
 
12
12
  def end_tracker_segment
13
- @io.write("\r\n\r\n")
13
+ 2.times { @io.write(LINEBREAK) }
14
14
  @io.write(@tracker_name.inspect) # autoquotes
15
- @io.write("\r\n")
15
+ @io.write(LINEBREAK)
16
16
  @io.write("Primary".inspect) # For primary/secondary cam in stereo pair
17
- @io.write("\r\n")
17
+ @io.write(LINEBREAK)
18
18
  @io.write(@frame_count)
19
- @io.write("\r\n")
19
+ @io.write(LINEBREAK)
20
20
 
21
21
  @tracker_io.rewind
22
22
  @io.write(@tracker_io.read) until @tracker_io.eof?
@@ -10,14 +10,14 @@ class Tracksperanto::Middleware::Base
10
10
  # Used to automatically register your middleware in Tracksperanto.middlewares
11
11
  # Normally you wouldn't need to override this
12
12
  def self.inherited(by)
13
- Tracksperanto.middlewares << by
13
+ Tracksperanto.middlewares.push(by)
14
14
  super
15
15
  end
16
16
 
17
17
  # Constructor accepts the exporter that will be wrapped
18
- def initialize(exporter, *args_for_block_init)
19
- @exporter = exporter
20
- super(*args_for_block_init)
18
+ def initialize(*exporter_and_args_for_block_init)
19
+ @exporter = exporter_and_args_for_block_init.shift
20
+ super
21
21
  end
22
22
 
23
23
  # Called on export start
@@ -1,15 +1,11 @@
1
1
  # Flips the comp being exported horizontally
2
2
  class Tracksperanto::Middleware::Flip < Tracksperanto::Middleware::Base
3
-
3
+
4
4
  attr_accessor :enabled
5
5
 
6
6
  def start_export(w, h)
7
- @w, @h = w, h
7
+ factor = enabled ? -1 : 1
8
+ @exporter = Tracksperanto::Middleware::Scaler.new(@exporter, :x_factor => factor)
8
9
  super
9
10
  end
10
-
11
- def export_point(frame, float_x, float_y, float_residual)
12
- x = @enabled ? (@w - float_x) : float_x
13
- super(frame, x, float_y, float_residual)
14
- end
15
11
  end
@@ -4,12 +4,8 @@ class Tracksperanto::Middleware::Flop < Tracksperanto::Middleware::Base
4
4
  attr_accessor :enabled
5
5
 
6
6
  def start_export(w, h)
7
- @w, @h = w, h
7
+ factor = enabled ? -1 : 1
8
+ @exporter = Tracksperanto::Middleware::Scaler.new(@exporter, :y_factor => factor)
8
9
  super
9
10
  end
10
-
11
- def export_point(frame, float_x, float_y, float_residual)
12
- y = @enabled ? (@h - float_y) : float_y
13
- super(frame, float_x, y, float_residual)
14
- end
15
11
  end
@@ -8,7 +8,8 @@ class Tracksperanto::Middleware::Scaler < Tracksperanto::Middleware::Base
8
8
  # Called on export start
9
9
  def start_export( img_width, img_height)
10
10
  set_residual_factor
11
- super( (img_width * x_factor).to_i, (img_height * y_factor).to_i)
11
+ @w, @h = (img_width * x_factor).to_i.abs, (img_height * y_factor).to_i.abs
12
+ super(@w, @h)
12
13
  end
13
14
 
14
15
  def y_factor
@@ -20,9 +21,11 @@ class Tracksperanto::Middleware::Scaler < Tracksperanto::Middleware::Base
20
21
  end
21
22
 
22
23
  def export_point(frame, float_x, float_y, float_residual)
23
- super(frame,
24
- (float_x * x_factor),
25
- (float_y * y_factor),
24
+ return super if @y_factor == DEFAULT_FACTOR && @x_factor == DEFAULT_FACTOR
25
+
26
+ super(frame,
27
+ x_factor < 0 ? (@w + (float_x * x_factor)) : (float_x * x_factor),
28
+ y_factor < 0 ? (@h + (float_y * y_factor)) : (float_y * y_factor),
26
29
  (float_residual * @residual_factor)
27
30
  )
28
31
  end
data/lib/pipeline/base.rb CHANGED
@@ -118,16 +118,18 @@ class Tracksperanto::Pipeline::Base
118
118
 
119
119
  accumulator = Tracksperanto::Accumulator.new
120
120
  importer.receiver = accumulator
121
- @ios << accumulator
121
+ @ios << accumulator # Ensure the accumulator gets closed and tempfile unlinked
122
122
 
123
123
  importer.stream_parse(io_with_progress)
124
124
 
125
125
  report_progress(percent_complete = 50.0, "Validating #{accumulator.length} imported trackers")
126
- raise "Could not recover any non-empty trackers from this file. Wrong import format maybe?" if accumulator.numt.zero?
126
+ if accumulator.num_objects.zero?
127
+ raise "Could not recover any non-empty trackers from this file. Wrong import format maybe?"
128
+ end
127
129
 
128
130
  report_progress(percent_complete, "Starting export")
129
131
 
130
- percent_per_tracker = (100.0 - percent_complete) / accumulator.numt
132
+ percent_per_tracker = (100.0 - percent_complete) / accumulator.num_objects
131
133
 
132
134
  # Use the width and height provided by the parser itself
133
135
  exporter.start_export(importer.width, importer.height)
@@ -140,7 +142,10 @@ class Tracksperanto::Pipeline::Base
140
142
  t.each_with_index do | kf, idx |
141
143
  keyframes += 1
142
144
  exporter.export_point(kf.frame, kf.abs_x, kf.abs_y, kf.residual)
143
- report_progress(percent_complete += kf_weight, "Writing keyframe #{idx+1} of #{t.name.inspect}, #{accumulator.numt - tracker_idx} trackers to go")
145
+ report_progress(
146
+ percent_complete += kf_weight,
147
+ "Writing keyframe #{idx+1} of #{t.name.inspect}, #{accumulator.num_objects - tracker_idx} trackers to go"
148
+ )
144
149
  end
145
150
  exporter.end_tracker_segment
146
151
  end
@@ -150,7 +155,8 @@ class Tracksperanto::Pipeline::Base
150
155
 
151
156
  [points, keyframes]
152
157
  ensure
153
- @ios.reject!{|e| e.close unless (!e.respond_to?(:closed?) || e.closed?) } if @ios
158
+ @ios.map!{|e| e.close! rescue e.close }
159
+ @ios = []
154
160
  end
155
161
 
156
162
  # Setup output files and return a single output
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 = '2.0.1'
7
+ VERSION = '2.0.2'
8
8
 
9
9
  module Import; end
10
10
  module Export; end
@@ -4,17 +4,17 @@
4
4
  class Tracksperanto::Accumulator < DelegateClass(IO)
5
5
 
6
6
  # Stores the number of objects stored so far
7
- attr_reader :numt
7
+ attr_reader :num_objects
8
8
 
9
9
  def initialize
10
10
  __setobj__(Tracksperanto::BufferIO.new)
11
- @numt = 0
11
+ @num_objects = 0
12
12
  end
13
13
 
14
14
  # Store an object
15
15
  def push(object_to_store)
16
16
 
17
- @numt += 1
17
+ @num_objects += 1
18
18
 
19
19
  d = Marshal.dump(object_to_store)
20
20
  bytelen = d.size
@@ -24,10 +24,10 @@ class Tracksperanto::Accumulator < DelegateClass(IO)
24
24
  write("\n")
25
25
  end
26
26
 
27
- # Retreive each stored object in succession
27
+ # Retreive each stored object in succession and unlink the buffer
28
28
  def each_object_with_index
29
29
  rewind
30
- @numt.times { |i| yield(recover_object, i - 1) }
30
+ @num_objects.times { |i| yield(recover_object, i - 1) }
31
31
  end
32
32
 
33
33
  private
@@ -1,6 +1,7 @@
1
1
  # Internal representation of a tracker point with keyframes. A Tracker is an array of Keyframe objects and should act and work like one
2
2
  class Tracksperanto::Tracker < DelegateClass(Array)
3
3
  include Tracksperanto::Casts
4
+ include Tracksperanto::BlockInit
4
5
  include Comparable
5
6
 
6
7
  # Contains the name of the tracker
@@ -10,17 +11,14 @@ class Tracksperanto::Tracker < DelegateClass(Array)
10
11
  def initialize(object_attribute_hash = {})
11
12
  @name = "Tracker"
12
13
  __setobj__(Array.new)
13
- object_attribute_hash.map { |(k, v)| send("#{k}=", v) }
14
- yield(self) if block_given?
14
+ super
15
15
  end
16
16
 
17
17
  def keyframes=(new_kf_array)
18
18
  __setobj__(new_kf_array.dup)
19
19
  end
20
-
21
- def keyframes
22
- __getobj__
23
- end
20
+
21
+ alias_method :keyframes, :__getobj__
24
22
 
25
23
  # Trackers sort by the position of the first keyframe
26
24
  def <=>(other_tracker)
@@ -1,7 +1,7 @@
1
-
2
-
3
- "Parabolic_1_from_top_left"
4
- 19
1
+
2
+
3
+ "Parabolic_1_from_top_left"
4
+ 19
5
5
  0 0.000 1080.000 0.000
6
6
  1 96.000 874.800 0.006
7
7
  2 192.000 691.200 0.012
@@ -21,10 +21,10 @@
21
21
  18 1728.000 691.200 0.107
22
22
  19 1824.000 874.800 0.113
23
23
  20 1920.000 1080.000 0.119
24
-
25
-
26
- "Parabolic_2_from_bottom_right"
27
- 19
24
+
25
+
26
+ "Parabolic_2_from_bottom_right"
27
+ 19
28
28
  0 1920.000 0.000 0.000
29
29
  1 1824.000 205.200 0.006
30
30
  2 1728.000 388.800 0.012
@@ -44,8 +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
47
+
48
+
49
+ "SingleFrame"
50
+ 1
51
51
  0 970.000 550.000 0.000
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class NukeExportTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class Equalizer3ExportTestTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class Equalizer4ExportTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class FlameStabilizerExportTestTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class MatchmoverExportTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../helper"
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class MayaLiveExportTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class MuxTest < Test::Unit::TestCase
4
4
 
@@ -1,8 +1,8 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class NukeExportTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
5
- P = File.dirname(__FILE__) + "/samples/ref_NukeScript.nk"
5
+ TEST_FILE = File.dirname(__FILE__) + "/samples/ref_NukeScript.nk"
6
6
  PREAMBLE = 'version 5.1200
7
7
  Root {
8
8
  inputs 0
@@ -19,7 +19,7 @@ Constant {
19
19
  ypos -60
20
20
  }'
21
21
  def test_export_output_written
22
- ensure_same_output Tracksperanto::Export::NukeScript, P
22
+ ensure_same_output Tracksperanto::Export::NukeScript, TEST_FILE
23
23
  end
24
24
 
25
25
  def test_exporter_meta
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class PFTrack5ExportTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class PFTrackExportTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class ShakeTextExportTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class SynthEyesExportTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class EqualizerImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.001
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class Equalizer3ImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.001
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class BoujouImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.1
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class FlameImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.1
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class MatchMoverImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.01
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class MayaLiveImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.001
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class NukeImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.01
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class PFTrackImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.1
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class ShakeCatcherTest < Test::Unit::TestCase
4
4
  C = Tracksperanto::ShakeGrammar::Catcher
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class ShakeLexerTest < Test::Unit::TestCase
4
4
  P = File.dirname(__FILE__) + "/samples/shake_script/shake_tracker_nodes.shk"
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class ShakeScriptImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.001
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class ShakeTextImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.000001
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class SyntheyesImportTest < Test::Unit::TestCase
4
4
  DELTA = 0.9 # our SynthEyes sample is somewhat inaccurate :-P
@@ -1,7 +1,7 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class FlipMiddlewareTest < Test::Unit::TestCase
4
- def test_shift_supports_hash_init
4
+ def test_flip_supports_hash_init
5
5
  receiver = flexmock
6
6
 
7
7
  m = Tracksperanto::Middleware::Flip.new(receiver)
@@ -11,16 +11,23 @@ class FlipMiddlewareTest < Test::Unit::TestCase
11
11
  assert m.enabled
12
12
  end
13
13
 
14
- def test_export_flip_and_flop
14
+ def test_export_with_enabled_flip
15
15
  receiver = flexmock(:exporter)
16
16
  receiver.should_receive(:start_export).once.with(110, 120)
17
17
  receiver.should_receive(:export_point).once.with(1, 100, 95, 0)
18
- receiver.should_receive(:export_point).once.with(1, 10, 95, 0)
19
-
18
+
20
19
  m = Tracksperanto::Middleware::Flip.new(receiver, :enabled => true)
21
20
  m.start_export(110, 120)
22
21
  m.export_point(1, 10, 95, 0)
23
- m.enabled = false
22
+ end
23
+
24
+ def test_export_with_disabled_flip
25
+ receiver = flexmock(:exporter)
26
+ receiver.should_receive(:start_export).once.with(110, 120)
27
+ receiver.should_receive(:export_point).once.with(1, 10, 95, 0)
28
+
29
+ m = Tracksperanto::Middleware::Flip.new(receiver, :enabled => false)
30
+ m.start_export(110, 120)
24
31
  m.export_point(1, 10, 95, 0)
25
32
  end
26
33
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class FlopMiddlewareTest < Test::Unit::TestCase
4
4
  def test_shift_supports_hash_init
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class GoldenMiddlewareTest < Test::Unit::TestCase
4
4
  def test_default_golden_set_to_false
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class LengthCutoffMiddlewareTest < Test::Unit::TestCase
4
4
  def test_default_length_set_to_zero_and_ignored
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class DistortMiddlewareTest < Test::Unit::TestCase
4
4
  include ParabolicTracks
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class LerpMiddlewareTest < Test::Unit::TestCase
4
4
  def test_lerp
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class PrefixMiddlewareTest < Test::Unit::TestCase
4
4
 
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class ReformatMiddlewareTest < Test::Unit::TestCase
4
4
  def test_inherits_and_thus_complies
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class ScalerMiddlewareTest < Test::Unit::TestCase
4
4
  def test_default_factor_set_to_one
@@ -29,7 +29,17 @@ class ScalerMiddlewareTest < Test::Unit::TestCase
29
29
  m.end_tracker_segment
30
30
  m.end_export
31
31
  end
32
-
32
+
33
+ def test_flip_using_scaler
34
+ receiver = flexmock
35
+ receiver.should_receive(:start_export).once.with(120, 80)
36
+ receiver.should_receive(:export_point).once.with(1, 100, 20, 0)
37
+
38
+ m = Tracksperanto::Middleware::Scaler.new(receiver, :x_factor => -1, :y_factor => -1)
39
+ m.start_export(120, 80)
40
+ m.export_point(1, 20, 60, 0)
41
+ end
42
+
33
43
  def test_scaler_properly_affects_residual
34
44
  factor = Math.sqrt( (1.5 ** 2) + (1.4 ** 2))
35
45
 
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class ShiftMiddlewareTest < Test::Unit::TestCase
4
4
  def test_shift_supports_hash_init
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
2
 
3
3
  class SlipMiddlewareTest < Test::Unit::TestCase
4
4
  def test_default_slip_set_to_zero
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class TestBufferIO < Test::Unit::TestCase
4
4
 
data/test/test_cli.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class CliTest < Test::Unit::TestCase
4
4
  TEMP_DIR = File.expand_path(File.dirname(__FILE__) + "/tmp")
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class ConstNameTest < Test::Unit::TestCase
4
4
 
data/test/test_extio.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class TestExtio < Test::Unit::TestCase
4
4
  def e(st)
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class FlameBuilderTest < Test::Unit::TestCase
4
4
  def setup
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class FormatDetectorTest < Test::Unit::TestCase
4
4
 
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class KeyframeTest < Test::Unit::TestCase
4
4
  def test_supports_block_init
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class PipelineTest < Test::Unit::TestCase
4
4
 
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class TestProgressiveIO < Test::Unit::TestCase
4
4
 
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class SimpleExportTest < Test::Unit::TestCase
4
4
 
data/test/test_tracker.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class TrackerTest < Test::Unit::TestCase
4
4
 
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper'
1
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
2
2
 
3
3
  class TracksperantoTest < Test::Unit::TestCase
4
4
  def test_middlewares
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tracksperanto
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
- - 1
10
- version: 2.0.1
9
+ - 2
10
+ version: 2.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Julik Tarkhanov
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-27 00:00:00 +01:00
18
+ date: 2011-02-02 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency