tracksperanto 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
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