tracksperanto 3.2.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  # -*- ruby -*-
2
2
  source :rubygems
3
3
 
4
- gem "tickly", "~> 0.0.2"
4
+ gem "tickly", "~> 0.0.4"
5
5
  gem "obuf", "~> 1.1.0"
6
6
  gem "progressive_io", "~> 1.0"
7
7
  gem "flame_channel_parser", "~> 4.0"
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 3.2.1
2
+
3
+ * Improve Nuke 7 import support with the new version of Tickly
4
+
1
5
  === 3.2.0
2
6
 
3
7
  * Add Nuke 7 import support
@@ -6,6 +6,7 @@ class Tracksperanto::NukeGrammarUtils
6
6
  # Scan a TCL curve expression into a number of tuples of [frame, value]
7
7
  def parse_curve(atoms)
8
8
  # Replace the closing curly brace with a curly brace with space so that it gets caught by split
9
+ atoms.shift # remove the :c curly designator
9
10
  atoms.shift # remove the "curve" keyword
10
11
  tuples = []
11
12
  # Nuke saves curves very efficiently. x(keyframe_number) means that an uninterrupted sequence of values will start,
@@ -1,7 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
- require 'delegate'
3
- require File.expand_path(File.dirname(__FILE__)) + "/nuke_grammar/utils"
4
2
  require 'tickly'
3
+ require File.expand_path(File.dirname(__FILE__)) + "/nuke_grammar/utils"
5
4
 
6
5
  class Tracksperanto::Import::NukeScript < Tracksperanto::Import::Base
7
6
 
@@ -17,18 +16,29 @@ class Tracksperanto::Import::NukeScript < Tracksperanto::Import::Base
17
16
  'The only supported nodes that we can extract tracks from are Reconcile3D, PlanarTracker and Tracker (supported Nuke versions are 5, 6 and 7)'
18
17
  end
19
18
 
19
+ class Tickly::Parser
20
+ end
21
+
22
+ class Levaluator < Tickly::Evaluator
23
+ def evaluate(expr)
24
+ s = super
25
+ yield(s) if s
26
+ end
27
+ end
28
+
20
29
  def each
30
+ parser = Tickly::NodeExtractor.new("Tracker3", "Tracker4", "PlanarTracker1_0", "Reconcile3D")
21
31
  script_tree = Tickly::Parser.new.parse(@io)
22
- evaluator = Tickly::Evaluator.new
32
+
33
+ evaluator = Levaluator.new
23
34
  evaluator.add_node_handler_class(Tracker3)
24
35
  evaluator.add_node_handler_class(Reconcile3D)
25
36
  evaluator.add_node_handler_class(PlanarTracker1_0)
26
37
  evaluator.add_node_handler_class(Tracker4)
27
38
 
28
39
  script_tree.each do | node |
29
- result = evaluator.evaluate(node)
30
- if result
31
- result.trackers.each do | t |
40
+ evaluator.evaluate(node) do | node_object |
41
+ node_object.trackers.each do | t |
32
42
  report_progress("Scavenging tracker #{t.name}")
33
43
  yield t
34
44
  end
@@ -71,8 +81,9 @@ class Tracksperanto::Import::NukeScript < Tracksperanto::Import::Base
71
81
 
72
82
  def extract_curves_from_channel(point_channel)
73
83
  u = Tracksperanto::NukeGrammarUtils.new
74
- point_channel.to_a.map do | curve_argument |
75
- if curve_argument[0] == "curve"
84
+ # First element is the :c curly identifier
85
+ point_channel[1..-1].map do | curve_argument |
86
+ if curve_argument[1] == "curve"
76
87
  u.parse_curve(curve_argument.to_a)
77
88
  else
78
89
  nil
@@ -105,12 +116,10 @@ class Tracksperanto::Import::NukeScript < Tracksperanto::Import::Base
105
116
  @name = options["name"]
106
117
  @trackers = []
107
118
  tracks = options["tracks"]
108
- preamble = tracks[0]
109
- headers = tracks[1]
110
- values = tracks[2]
119
+ preamble = tracks[1]
120
+ headers = tracks[2]
121
+ values = tracks[3]
111
122
 
112
- table_headers = headers[0].map{|header| header[0][-1]}
113
- #puts table_headers.inspect
114
123
  # When this was written, this was the order of the columns in the table:
115
124
  # le("e", "name", "track_x", "track_y", "offset_x", "offset_y", "T", "R", "S", "error",
116
125
  # "error_min", "error_max", "pattern_x", "pattern_y", "pattern_r", "pattern_t", "search_x",
@@ -120,10 +129,12 @@ class Tracksperanto::Import::NukeScript < Tracksperanto::Import::Base
120
129
 
121
130
  u = Tracksperanto::NukeGrammarUtils.new
122
131
 
123
- tracker_rows.each do | row |
124
- row_content = row[0][0]
132
+ # The 0 element is the :c symbol
133
+ tracker_rows[1..-1].each do | row |
134
+ row_content = row[0]
135
+
125
136
  # For offsets see above
126
- point_name, x_curve, y_curve = row_content[1], u.parse_curve(row_content[2].to_a), u.parse_curve(row_content[3].to_a)
137
+ point_name, x_curve, y_curve = row_content[2], u.parse_curve(row_content[3].to_a), u.parse_curve(row_content[4].to_a)
127
138
 
128
139
  full_name = [options["name"], point_name].join('_')
129
140
  tracker = package_tracker(full_name, x_curve, y_curve)
data/lib/tracksperanto.rb CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  module Tracksperanto
5
5
  PATH = File.expand_path(File.dirname(__FILE__))
6
- VERSION = '3.2.0'
6
+ VERSION = '3.2.1'
7
7
 
8
8
  module Import; end
9
9
  module Export; end
@@ -125,6 +125,21 @@ class NukeImportTest < Test::Unit::TestCase
125
125
  assert_equal 9, kf.frame
126
126
  end
127
127
 
128
+
129
+ def test_parsing_from_nuke7v05_job_1872
130
+ fixture = File.open(File.dirname(__FILE__) + '/samples/nuke/failing_nuke7_trackers_job_1872.nk')
131
+
132
+ parser = Tracksperanto::Import::NukeScript.new(:io => fixture)
133
+ parser.width = 2048
134
+ parser.height = 1556
135
+
136
+ trackers = parser.to_a
137
+ assert_equal 2, trackers.length
138
+ assert_equal "Tracker5_track_1", trackers[0].name
139
+ assert_equal "Tracker5_track_2", trackers[1].name
140
+ assert_equal 16, trackers[1].length
141
+ end
142
+
128
143
  def test_parsing_from_nuke_group
129
144
  fixture = File.open(File.dirname(__FILE__) + '/samples/nuke/one_tracker_with_break_in_grp.nk')
130
145
 
@@ -143,7 +158,7 @@ class NukeImportTest < Test::Unit::TestCase
143
158
  end
144
159
 
145
160
  def test_parsing_nuke_curve
146
- curve = %w( curve x742 888 890.2463989 891.6602783
161
+ curve = [:c] + %w( curve x742 888 890.2463989 891.6602783
147
162
  893.5056763 895.6155396 s95 897.2791748 899.1762695
148
163
  x754 912.0731812 x755 913.7190552 916.0959473 918.1025391 920.0751953 922.1898804 )
149
164
  p = Tracksperanto::NukeGrammarUtils.new
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "tracksperanto"
8
- s.version = "3.2.0"
8
+ s.version = "3.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Julik Tarkhanov"]
12
- s.date = "2013-03-02"
12
+ s.date = "2013-03-14"
13
13
  s.description = "Converts 2D track exports between different apps like Flame, MatchMover, PFTrack..."
14
14
  s.email = "me@julik.nl"
15
15
  s.executables = ["tracksperanto"]
@@ -212,7 +212,7 @@ Gem::Specification.new do |s|
212
212
  s.specification_version = 3
213
213
 
214
214
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
215
- s.add_runtime_dependency(%q<tickly>, ["~> 0.0.2"])
215
+ s.add_runtime_dependency(%q<tickly>, ["~> 0.0.4"])
216
216
  s.add_runtime_dependency(%q<obuf>, ["~> 1.1.0"])
217
217
  s.add_runtime_dependency(%q<progressive_io>, ["~> 1.0"])
218
218
  s.add_runtime_dependency(%q<flame_channel_parser>, ["~> 4.0"])
@@ -225,7 +225,7 @@ Gem::Specification.new do |s|
225
225
  s.add_development_dependency(%q<cli_test>, ["~> 1.0"])
226
226
  s.add_development_dependency(%q<rake-hooks>, [">= 0"])
227
227
  else
228
- s.add_dependency(%q<tickly>, ["~> 0.0.2"])
228
+ s.add_dependency(%q<tickly>, ["~> 0.0.4"])
229
229
  s.add_dependency(%q<obuf>, ["~> 1.1.0"])
230
230
  s.add_dependency(%q<progressive_io>, ["~> 1.0"])
231
231
  s.add_dependency(%q<flame_channel_parser>, ["~> 4.0"])
@@ -239,7 +239,7 @@ Gem::Specification.new do |s|
239
239
  s.add_dependency(%q<rake-hooks>, [">= 0"])
240
240
  end
241
241
  else
242
- s.add_dependency(%q<tickly>, ["~> 0.0.2"])
242
+ s.add_dependency(%q<tickly>, ["~> 0.0.4"])
243
243
  s.add_dependency(%q<obuf>, ["~> 1.1.0"])
244
244
  s.add_dependency(%q<progressive_io>, ["~> 1.0"])
245
245
  s.add_dependency(%q<flame_channel_parser>, ["~> 4.0"])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tracksperanto
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-02 00:00:00.000000000 Z
12
+ date: 2013-03-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: tickly
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.0.2
21
+ version: 0.0.4
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.0.2
29
+ version: 0.0.4
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: obuf
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -411,7 +411,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
411
411
  version: '0'
412
412
  segments:
413
413
  - 0
414
- hash: 2047932148332982909
414
+ hash: -1926493712064861893
415
415
  required_rubygems_version: !ruby/object:Gem::Requirement
416
416
  none: false
417
417
  requirements: