framecurve 2.2.0 → 2.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.
Files changed (163) hide show
  1. data/Gemfile +0 -1
  2. data/History.txt +4 -0
  3. data/bin/framecurve_validator +3 -2
  4. data/framecurve.gemspec +154 -6
  5. data/lib/framecurve.rb +1 -1
  6. data/lib/framecurve/curve.rb +5 -2
  7. data/lib/framecurve/extractors/fcp_xml.rb +6 -1
  8. data/lib/framecurve/extractors/xml_bridge.rb +9 -0
  9. data/lib/framecurve/validator.rb +8 -0
  10. data/test/fixtures/countdown_standard/countdown_asis 001.png +0 -0
  11. data/test/fixtures/countdown_standard/countdown_asis 002.png +0 -0
  12. data/test/fixtures/countdown_standard/countdown_asis 003.png +0 -0
  13. data/test/fixtures/countdown_standard/countdown_asis 004.png +0 -0
  14. data/test/fixtures/countdown_standard/countdown_asis 005.png +0 -0
  15. data/test/fixtures/countdown_standard/countdown_asis 006.png +0 -0
  16. data/test/fixtures/countdown_standard/countdown_asis 007.png +0 -0
  17. data/test/fixtures/countdown_standard/countdown_asis 008.png +0 -0
  18. data/test/fixtures/countdown_standard/countdown_asis 009.png +0 -0
  19. data/test/fixtures/countdown_standard/countdown_asis 010.png +0 -0
  20. data/test/fixtures/countdown_standard/countdown_asis 011.png +0 -0
  21. data/test/fixtures/countdown_standard/countdown_asis 012.png +0 -0
  22. data/test/fixtures/countdown_standard/countdown_asis 013.png +0 -0
  23. data/test/fixtures/countdown_standard/countdown_asis 014.png +0 -0
  24. data/test/fixtures/countdown_standard/countdown_asis 015.png +0 -0
  25. data/test/fixtures/countdown_standard/countdown_asis 016.png +0 -0
  26. data/test/fixtures/countdown_standard/countdown_asis 017.png +0 -0
  27. data/test/fixtures/countdown_standard/countdown_asis 018.png +0 -0
  28. data/test/fixtures/countdown_standard/countdown_asis 019.png +0 -0
  29. data/test/fixtures/countdown_standard/countdown_asis 020.png +0 -0
  30. data/test/fixtures/countdown_standard/countdown_asis 021.png +0 -0
  31. data/test/fixtures/countdown_standard/countdown_asis 022.png +0 -0
  32. data/test/fixtures/countdown_standard/countdown_asis 023.png +0 -0
  33. data/test/fixtures/countdown_standard/countdown_asis 024.png +0 -0
  34. data/test/fixtures/countdown_standard/countdown_asis 025.png +0 -0
  35. data/test/fixtures/countdown_standard/countdown_asis 026.png +0 -0
  36. data/test/fixtures/countdown_standard/countdown_asis 027.png +0 -0
  37. data/test/fixtures/countdown_standard/countdown_asis 028.png +0 -0
  38. data/test/fixtures/countdown_standard/countdown_asis 029.png +0 -0
  39. data/test/fixtures/countdown_standard/countdown_asis 030.png +0 -0
  40. data/test/fixtures/countdown_standard/countdown_asis 031.png +0 -0
  41. data/test/fixtures/countdown_standard/countdown_asis 032.png +0 -0
  42. data/test/fixtures/countdown_standard/countdown_asis 033.png +0 -0
  43. data/test/fixtures/countdown_standard/countdown_asis 034.png +0 -0
  44. data/test/fixtures/countdown_standard/countdown_asis 035.png +0 -0
  45. data/test/fixtures/countdown_standard/countdown_asis 036.png +0 -0
  46. data/test/fixtures/countdown_standard/countdown_asis 037.png +0 -0
  47. data/test/fixtures/countdown_standard/countdown_asis 038.png +0 -0
  48. data/test/fixtures/countdown_standard/countdown_asis 039.png +0 -0
  49. data/test/fixtures/countdown_standard/countdown_asis 040.png +0 -0
  50. data/test/fixtures/countdown_standard/countdown_asis 041.png +0 -0
  51. data/test/fixtures/countdown_standard/countdown_asis 042.png +0 -0
  52. data/test/fixtures/countdown_standard/countdown_asis 043.png +0 -0
  53. data/test/fixtures/countdown_standard/countdown_asis 044.png +0 -0
  54. data/test/fixtures/countdown_standard/countdown_asis 045.png +0 -0
  55. data/test/fixtures/countdown_standard/countdown_asis 046.png +0 -0
  56. data/test/fixtures/countdown_standard/countdown_asis 047.png +0 -0
  57. data/test/fixtures/countdown_standard/countdown_asis 048.png +0 -0
  58. data/test/fixtures/countdown_standard/countdown_asis 049.png +0 -0
  59. data/test/fixtures/countdown_standard/countdown_asis 050.png +0 -0
  60. data/test/fixtures/countdown_standard/countdown_asis 051.png +0 -0
  61. data/test/fixtures/countdown_standard/countdown_asis 052.png +0 -0
  62. data/test/fixtures/countdown_standard/countdown_asis 053.png +0 -0
  63. data/test/fixtures/countdown_standard/countdown_asis 054.png +0 -0
  64. data/test/fixtures/countdown_standard/countdown_asis 055.png +0 -0
  65. data/test/fixtures/countdown_standard/countdown_asis 056.png +0 -0
  66. data/test/fixtures/countdown_standard/countdown_asis 057.png +0 -0
  67. data/test/fixtures/countdown_standard/countdown_asis 058.png +0 -0
  68. data/test/fixtures/countdown_standard/countdown_asis 059.png +0 -0
  69. data/test/fixtures/countdown_standard/countdown_asis 060.png +0 -0
  70. data/test/fixtures/countdown_standard/countdown_asis 061.png +0 -0
  71. data/test/fixtures/countdown_standard/countdown_asis 062.png +0 -0
  72. data/test/fixtures/countdown_standard/countdown_asis 063.png +0 -0
  73. data/test/fixtures/countdown_standard/countdown_asis 064.png +0 -0
  74. data/test/fixtures/countdown_standard/countdown_asis 065.png +0 -0
  75. data/test/fixtures/countdown_standard/countdown_asis 066.png +0 -0
  76. data/test/fixtures/countdown_standard/countdown_asis 067.png +0 -0
  77. data/test/fixtures/countdown_standard/countdown_asis 068.png +0 -0
  78. data/test/fixtures/countdown_standard/countdown_asis 069.png +0 -0
  79. data/test/fixtures/countdown_standard/countdown_asis 070.png +0 -0
  80. data/test/fixtures/countdown_standard/countdown_asis 071.png +0 -0
  81. data/test/fixtures/countdown_standard/countdown_asis 072.png +0 -0
  82. data/test/fixtures/countdown_standard/countdown_asis 073.png +0 -0
  83. data/test/fixtures/countdown_standard/countdown_asis 074.png +0 -0
  84. data/test/fixtures/countdown_standard/countdown_asis 075.png +0 -0
  85. data/test/fixtures/countdown_standard/countdown_asis 076.png +0 -0
  86. data/test/fixtures/countdown_standard/countdown_asis 077.png +0 -0
  87. data/test/fixtures/countdown_standard/countdown_asis 078.png +0 -0
  88. data/test/fixtures/countdown_standard/countdown_asis 079.png +0 -0
  89. data/test/fixtures/countdown_standard/countdown_asis 080.png +0 -0
  90. data/test/fixtures/countdown_standard/countdown_asis 081.png +0 -0
  91. data/test/fixtures/countdown_standard/countdown_asis 082.png +0 -0
  92. data/test/fixtures/countdown_standard/countdown_asis 083.png +0 -0
  93. data/test/fixtures/countdown_standard/countdown_asis 084.png +0 -0
  94. data/test/fixtures/countdown_standard/countdown_asis 085.png +0 -0
  95. data/test/fixtures/countdown_standard/countdown_asis 086.png +0 -0
  96. data/test/fixtures/countdown_standard/countdown_asis 087.png +0 -0
  97. data/test/fixtures/countdown_standard/countdown_asis 088.png +0 -0
  98. data/test/fixtures/countdown_standard/countdown_asis 089.png +0 -0
  99. data/test/fixtures/countdown_standard/countdown_asis 090.png +0 -0
  100. data/test/fixtures/countdown_standard/countdown_asis 091.png +0 -0
  101. data/test/fixtures/countdown_standard/countdown_asis 092.png +0 -0
  102. data/test/fixtures/countdown_standard/countdown_asis 093.png +0 -0
  103. data/test/fixtures/countdown_standard/countdown_asis 094.png +0 -0
  104. data/test/fixtures/countdown_standard/countdown_asis 095.png +0 -0
  105. data/test/fixtures/countdown_standard/countdown_asis 096.png +0 -0
  106. data/test/fixtures/countdown_standard/countdown_asis 097.png +0 -0
  107. data/test/fixtures/countdown_standard/countdown_asis 098.png +0 -0
  108. data/test/fixtures/countdown_standard/countdown_asis 099.png +0 -0
  109. data/test/fixtures/countdown_standard/countdown_asis 100.png +0 -0
  110. data/test/fixtures/countdown_timewarped/countdown_varispeed 01.png +0 -0
  111. data/test/fixtures/countdown_timewarped/countdown_varispeed 02.png +0 -0
  112. data/test/fixtures/countdown_timewarped/countdown_varispeed 03.png +0 -0
  113. data/test/fixtures/countdown_timewarped/countdown_varispeed 04.png +0 -0
  114. data/test/fixtures/countdown_timewarped/countdown_varispeed 05.png +0 -0
  115. data/test/fixtures/countdown_timewarped/countdown_varispeed 06.png +0 -0
  116. data/test/fixtures/countdown_timewarped/countdown_varispeed 07.png +0 -0
  117. data/test/fixtures/countdown_timewarped/countdown_varispeed 08.png +0 -0
  118. data/test/fixtures/countdown_timewarped/countdown_varispeed 09.png +0 -0
  119. data/test/fixtures/countdown_timewarped/countdown_varispeed 10.png +0 -0
  120. data/test/fixtures/countdown_timewarped/countdown_varispeed 11.png +0 -0
  121. data/test/fixtures/countdown_timewarped/countdown_varispeed 12.png +0 -0
  122. data/test/fixtures/countdown_timewarped/countdown_varispeed 13.png +0 -0
  123. data/test/fixtures/countdown_timewarped/countdown_varispeed 14.png +0 -0
  124. data/test/fixtures/countdown_timewarped/countdown_varispeed 15.png +0 -0
  125. data/test/fixtures/countdown_timewarped/countdown_varispeed 16.png +0 -0
  126. data/test/fixtures/countdown_timewarped/countdown_varispeed 17.png +0 -0
  127. data/test/fixtures/countdown_timewarped/countdown_varispeed 18.png +0 -0
  128. data/test/fixtures/countdown_timewarped/countdown_varispeed 19.png +0 -0
  129. data/test/fixtures/countdown_timewarped/countdown_varispeed 20.png +0 -0
  130. data/test/fixtures/countdown_timewarped/countdown_varispeed 21.png +0 -0
  131. data/test/fixtures/countdown_timewarped/countdown_varispeed 22.png +0 -0
  132. data/test/fixtures/countdown_timewarped/countdown_varispeed 23.png +0 -0
  133. data/test/fixtures/countdown_timewarped/countdown_varispeed 24.png +0 -0
  134. data/test/fixtures/countdown_timewarped/countdown_varispeed 25.png +0 -0
  135. data/test/fixtures/countdown_timewarped/countdown_varispeed 26.png +0 -0
  136. data/test/fixtures/countdown_timewarped/countdown_varispeed 27.png +0 -0
  137. data/test/fixtures/countdown_timewarped/countdown_varispeed 28.png +0 -0
  138. data/test/fixtures/countdown_timewarped/countdown_varispeed 29.png +0 -0
  139. data/test/fixtures/countdown_timewarped/countdown_varispeed 30.png +0 -0
  140. data/test/fixtures/countdown_timewarped/countdown_varispeed 31.png +0 -0
  141. data/test/fixtures/countdown_timewarped/countdown_varispeed 32.png +0 -0
  142. data/test/fixtures/countdown_timewarped/countdown_varispeed 33.png +0 -0
  143. data/test/fixtures/countdown_timewarped/countdown_varispeed 34.png +0 -0
  144. data/test/fixtures/countdown_timewarped/countdown_varispeed 35.png +0 -0
  145. data/test/fixtures/countdown_timewarped/countdown_varispeed 36.png +0 -0
  146. data/test/fixtures/countdown_timewarped/countdown_varispeed 37.png +0 -0
  147. data/test/fixtures/countdown_timewarped/countdown_varispeed 38.png +0 -0
  148. data/test/fixtures/countdown_timewarped/countdown_varispeed 39.png +0 -0
  149. data/test/fixtures/countdown_timewarped/countdown_varispeed 40.png +0 -0
  150. data/test/fixtures/countdown_timewarped/countdown_varispeed 41.png +0 -0
  151. data/test/fixtures/countdown_timewarped/countdown_varispeed 42.png +0 -0
  152. data/test/fixtures/countdown_timewarped/countdown_varispeed 43.png +0 -0
  153. data/test/fixtures/countdown_timewarped/countdown_varispeed 44.png +0 -0
  154. data/test/fixtures/countdown_timewarped/countdown_varispeed 45.png +0 -0
  155. data/test/fixtures/countdown_timewarped/countdown_varispeed 46.png +0 -0
  156. data/test/fixtures/countdown_timewarped/countdown_varispeed 47.png +0 -0
  157. data/test/fixtures/countdown_timewarped/countdown_varispeed 48.png +0 -0
  158. data/test/fixtures/countdown_timewarped/countdown_varispeed 49.png +0 -0
  159. data/test/fixtures/countdown_timewarped/countdown_varispeed 50.png +0 -0
  160. data/test/fixtures/countdown_timewarped/countdown_varispeed.framecurve.txt +11 -0
  161. data/test/test_framecurve_from_fcp_xml_binary.rb +1 -0
  162. data/test/test_framecurve_validator.rb +9 -0
  163. metadata +160 -20
data/Gemfile CHANGED
@@ -1,6 +1,5 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "term-ansicolor"
4
3
  group :development do
5
4
  gem "jeweler", "~> 1.6.4"
6
5
  gem "rake"
@@ -1,3 +1,7 @@
1
+ 2.2.1
2
+
3
+ * Remove term-ansicolor dependency
4
+
1
5
  2.2.0
2
6
 
3
7
  * Let Parser add the filename to the curve when parsing
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  require File.dirname(__FILE__) + "/../lib/framecurve"
3
- require 'term/ansicolor'
4
3
 
5
4
  class Color
6
- extend Term::ANSIColor
5
+ def self.method_missing(*a)
6
+ yield
7
+ end
7
8
  end
8
9
 
9
10
  raise "Pass at least one path to a framecurve file as a argument" if ARGV.empty?
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "framecurve"
8
- s.version = "2.2.0"
8
+ s.version = "2.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"]
12
- s.date = "2012-01-10"
12
+ s.date = "2012-01-25"
13
13
  s.description = " Parser, validation and interpolation"
14
14
  s.email = "me@julik.nl"
15
15
  s.executables = ["framecurve_from_fcp_xml", "framecurve_validator"]
@@ -36,6 +36,157 @@ Gem::Specification.new do |s|
36
36
  "lib/framecurve/serializer.rb",
37
37
  "lib/framecurve/tuple.rb",
38
38
  "lib/framecurve/validator.rb",
39
+ "test/fixtures/countdown_standard/countdown_asis 001.png",
40
+ "test/fixtures/countdown_standard/countdown_asis 002.png",
41
+ "test/fixtures/countdown_standard/countdown_asis 003.png",
42
+ "test/fixtures/countdown_standard/countdown_asis 004.png",
43
+ "test/fixtures/countdown_standard/countdown_asis 005.png",
44
+ "test/fixtures/countdown_standard/countdown_asis 006.png",
45
+ "test/fixtures/countdown_standard/countdown_asis 007.png",
46
+ "test/fixtures/countdown_standard/countdown_asis 008.png",
47
+ "test/fixtures/countdown_standard/countdown_asis 009.png",
48
+ "test/fixtures/countdown_standard/countdown_asis 010.png",
49
+ "test/fixtures/countdown_standard/countdown_asis 011.png",
50
+ "test/fixtures/countdown_standard/countdown_asis 012.png",
51
+ "test/fixtures/countdown_standard/countdown_asis 013.png",
52
+ "test/fixtures/countdown_standard/countdown_asis 014.png",
53
+ "test/fixtures/countdown_standard/countdown_asis 015.png",
54
+ "test/fixtures/countdown_standard/countdown_asis 016.png",
55
+ "test/fixtures/countdown_standard/countdown_asis 017.png",
56
+ "test/fixtures/countdown_standard/countdown_asis 018.png",
57
+ "test/fixtures/countdown_standard/countdown_asis 019.png",
58
+ "test/fixtures/countdown_standard/countdown_asis 020.png",
59
+ "test/fixtures/countdown_standard/countdown_asis 021.png",
60
+ "test/fixtures/countdown_standard/countdown_asis 022.png",
61
+ "test/fixtures/countdown_standard/countdown_asis 023.png",
62
+ "test/fixtures/countdown_standard/countdown_asis 024.png",
63
+ "test/fixtures/countdown_standard/countdown_asis 025.png",
64
+ "test/fixtures/countdown_standard/countdown_asis 026.png",
65
+ "test/fixtures/countdown_standard/countdown_asis 027.png",
66
+ "test/fixtures/countdown_standard/countdown_asis 028.png",
67
+ "test/fixtures/countdown_standard/countdown_asis 029.png",
68
+ "test/fixtures/countdown_standard/countdown_asis 030.png",
69
+ "test/fixtures/countdown_standard/countdown_asis 031.png",
70
+ "test/fixtures/countdown_standard/countdown_asis 032.png",
71
+ "test/fixtures/countdown_standard/countdown_asis 033.png",
72
+ "test/fixtures/countdown_standard/countdown_asis 034.png",
73
+ "test/fixtures/countdown_standard/countdown_asis 035.png",
74
+ "test/fixtures/countdown_standard/countdown_asis 036.png",
75
+ "test/fixtures/countdown_standard/countdown_asis 037.png",
76
+ "test/fixtures/countdown_standard/countdown_asis 038.png",
77
+ "test/fixtures/countdown_standard/countdown_asis 039.png",
78
+ "test/fixtures/countdown_standard/countdown_asis 040.png",
79
+ "test/fixtures/countdown_standard/countdown_asis 041.png",
80
+ "test/fixtures/countdown_standard/countdown_asis 042.png",
81
+ "test/fixtures/countdown_standard/countdown_asis 043.png",
82
+ "test/fixtures/countdown_standard/countdown_asis 044.png",
83
+ "test/fixtures/countdown_standard/countdown_asis 045.png",
84
+ "test/fixtures/countdown_standard/countdown_asis 046.png",
85
+ "test/fixtures/countdown_standard/countdown_asis 047.png",
86
+ "test/fixtures/countdown_standard/countdown_asis 048.png",
87
+ "test/fixtures/countdown_standard/countdown_asis 049.png",
88
+ "test/fixtures/countdown_standard/countdown_asis 050.png",
89
+ "test/fixtures/countdown_standard/countdown_asis 051.png",
90
+ "test/fixtures/countdown_standard/countdown_asis 052.png",
91
+ "test/fixtures/countdown_standard/countdown_asis 053.png",
92
+ "test/fixtures/countdown_standard/countdown_asis 054.png",
93
+ "test/fixtures/countdown_standard/countdown_asis 055.png",
94
+ "test/fixtures/countdown_standard/countdown_asis 056.png",
95
+ "test/fixtures/countdown_standard/countdown_asis 057.png",
96
+ "test/fixtures/countdown_standard/countdown_asis 058.png",
97
+ "test/fixtures/countdown_standard/countdown_asis 059.png",
98
+ "test/fixtures/countdown_standard/countdown_asis 060.png",
99
+ "test/fixtures/countdown_standard/countdown_asis 061.png",
100
+ "test/fixtures/countdown_standard/countdown_asis 062.png",
101
+ "test/fixtures/countdown_standard/countdown_asis 063.png",
102
+ "test/fixtures/countdown_standard/countdown_asis 064.png",
103
+ "test/fixtures/countdown_standard/countdown_asis 065.png",
104
+ "test/fixtures/countdown_standard/countdown_asis 066.png",
105
+ "test/fixtures/countdown_standard/countdown_asis 067.png",
106
+ "test/fixtures/countdown_standard/countdown_asis 068.png",
107
+ "test/fixtures/countdown_standard/countdown_asis 069.png",
108
+ "test/fixtures/countdown_standard/countdown_asis 070.png",
109
+ "test/fixtures/countdown_standard/countdown_asis 071.png",
110
+ "test/fixtures/countdown_standard/countdown_asis 072.png",
111
+ "test/fixtures/countdown_standard/countdown_asis 073.png",
112
+ "test/fixtures/countdown_standard/countdown_asis 074.png",
113
+ "test/fixtures/countdown_standard/countdown_asis 075.png",
114
+ "test/fixtures/countdown_standard/countdown_asis 076.png",
115
+ "test/fixtures/countdown_standard/countdown_asis 077.png",
116
+ "test/fixtures/countdown_standard/countdown_asis 078.png",
117
+ "test/fixtures/countdown_standard/countdown_asis 079.png",
118
+ "test/fixtures/countdown_standard/countdown_asis 080.png",
119
+ "test/fixtures/countdown_standard/countdown_asis 081.png",
120
+ "test/fixtures/countdown_standard/countdown_asis 082.png",
121
+ "test/fixtures/countdown_standard/countdown_asis 083.png",
122
+ "test/fixtures/countdown_standard/countdown_asis 084.png",
123
+ "test/fixtures/countdown_standard/countdown_asis 085.png",
124
+ "test/fixtures/countdown_standard/countdown_asis 086.png",
125
+ "test/fixtures/countdown_standard/countdown_asis 087.png",
126
+ "test/fixtures/countdown_standard/countdown_asis 088.png",
127
+ "test/fixtures/countdown_standard/countdown_asis 089.png",
128
+ "test/fixtures/countdown_standard/countdown_asis 090.png",
129
+ "test/fixtures/countdown_standard/countdown_asis 091.png",
130
+ "test/fixtures/countdown_standard/countdown_asis 092.png",
131
+ "test/fixtures/countdown_standard/countdown_asis 093.png",
132
+ "test/fixtures/countdown_standard/countdown_asis 094.png",
133
+ "test/fixtures/countdown_standard/countdown_asis 095.png",
134
+ "test/fixtures/countdown_standard/countdown_asis 096.png",
135
+ "test/fixtures/countdown_standard/countdown_asis 097.png",
136
+ "test/fixtures/countdown_standard/countdown_asis 098.png",
137
+ "test/fixtures/countdown_standard/countdown_asis 099.png",
138
+ "test/fixtures/countdown_standard/countdown_asis 100.png",
139
+ "test/fixtures/countdown_timewarped/countdown_varispeed 01.png",
140
+ "test/fixtures/countdown_timewarped/countdown_varispeed 02.png",
141
+ "test/fixtures/countdown_timewarped/countdown_varispeed 03.png",
142
+ "test/fixtures/countdown_timewarped/countdown_varispeed 04.png",
143
+ "test/fixtures/countdown_timewarped/countdown_varispeed 05.png",
144
+ "test/fixtures/countdown_timewarped/countdown_varispeed 06.png",
145
+ "test/fixtures/countdown_timewarped/countdown_varispeed 07.png",
146
+ "test/fixtures/countdown_timewarped/countdown_varispeed 08.png",
147
+ "test/fixtures/countdown_timewarped/countdown_varispeed 09.png",
148
+ "test/fixtures/countdown_timewarped/countdown_varispeed 10.png",
149
+ "test/fixtures/countdown_timewarped/countdown_varispeed 11.png",
150
+ "test/fixtures/countdown_timewarped/countdown_varispeed 12.png",
151
+ "test/fixtures/countdown_timewarped/countdown_varispeed 13.png",
152
+ "test/fixtures/countdown_timewarped/countdown_varispeed 14.png",
153
+ "test/fixtures/countdown_timewarped/countdown_varispeed 15.png",
154
+ "test/fixtures/countdown_timewarped/countdown_varispeed 16.png",
155
+ "test/fixtures/countdown_timewarped/countdown_varispeed 17.png",
156
+ "test/fixtures/countdown_timewarped/countdown_varispeed 18.png",
157
+ "test/fixtures/countdown_timewarped/countdown_varispeed 19.png",
158
+ "test/fixtures/countdown_timewarped/countdown_varispeed 20.png",
159
+ "test/fixtures/countdown_timewarped/countdown_varispeed 21.png",
160
+ "test/fixtures/countdown_timewarped/countdown_varispeed 22.png",
161
+ "test/fixtures/countdown_timewarped/countdown_varispeed 23.png",
162
+ "test/fixtures/countdown_timewarped/countdown_varispeed 24.png",
163
+ "test/fixtures/countdown_timewarped/countdown_varispeed 25.png",
164
+ "test/fixtures/countdown_timewarped/countdown_varispeed 26.png",
165
+ "test/fixtures/countdown_timewarped/countdown_varispeed 27.png",
166
+ "test/fixtures/countdown_timewarped/countdown_varispeed 28.png",
167
+ "test/fixtures/countdown_timewarped/countdown_varispeed 29.png",
168
+ "test/fixtures/countdown_timewarped/countdown_varispeed 30.png",
169
+ "test/fixtures/countdown_timewarped/countdown_varispeed 31.png",
170
+ "test/fixtures/countdown_timewarped/countdown_varispeed 32.png",
171
+ "test/fixtures/countdown_timewarped/countdown_varispeed 33.png",
172
+ "test/fixtures/countdown_timewarped/countdown_varispeed 34.png",
173
+ "test/fixtures/countdown_timewarped/countdown_varispeed 35.png",
174
+ "test/fixtures/countdown_timewarped/countdown_varispeed 36.png",
175
+ "test/fixtures/countdown_timewarped/countdown_varispeed 37.png",
176
+ "test/fixtures/countdown_timewarped/countdown_varispeed 38.png",
177
+ "test/fixtures/countdown_timewarped/countdown_varispeed 39.png",
178
+ "test/fixtures/countdown_timewarped/countdown_varispeed 40.png",
179
+ "test/fixtures/countdown_timewarped/countdown_varispeed 41.png",
180
+ "test/fixtures/countdown_timewarped/countdown_varispeed 42.png",
181
+ "test/fixtures/countdown_timewarped/countdown_varispeed 43.png",
182
+ "test/fixtures/countdown_timewarped/countdown_varispeed 44.png",
183
+ "test/fixtures/countdown_timewarped/countdown_varispeed 45.png",
184
+ "test/fixtures/countdown_timewarped/countdown_varispeed 46.png",
185
+ "test/fixtures/countdown_timewarped/countdown_varispeed 47.png",
186
+ "test/fixtures/countdown_timewarped/countdown_varispeed 48.png",
187
+ "test/fixtures/countdown_timewarped/countdown_varispeed 49.png",
188
+ "test/fixtures/countdown_timewarped/countdown_varispeed 50.png",
189
+ "test/fixtures/countdown_timewarped/countdown_varispeed.framecurve.txt",
39
190
  "test/fixtures/fcp_xml/CountDOWN.xml",
40
191
  "test/fixtures/framecurves/err-neg-frames.framecurve.txt",
41
192
  "test/fixtures/framecurves/err-no-tuples.framecurve.txt",
@@ -54,25 +205,22 @@ Gem::Specification.new do |s|
54
205
  s.homepage = "http://github.com/guerilla-di/framecurve"
55
206
  s.licenses = ["MIT"]
56
207
  s.require_paths = ["lib"]
57
- s.rubygems_version = "1.8.11"
208
+ s.rubygems_version = "1.8.15"
58
209
  s.summary = "Handles Framecurve files"
59
210
 
60
211
  if s.respond_to? :specification_version then
61
212
  s.specification_version = 3
62
213
 
63
214
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
64
- s.add_runtime_dependency(%q<term-ansicolor>, [">= 0"])
65
215
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
66
216
  s.add_development_dependency(%q<rake>, [">= 0"])
67
217
  s.add_development_dependency(%q<cli_test>, [">= 0"])
68
218
  else
69
- s.add_dependency(%q<term-ansicolor>, [">= 0"])
70
219
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
71
220
  s.add_dependency(%q<rake>, [">= 0"])
72
221
  s.add_dependency(%q<cli_test>, [">= 0"])
73
222
  end
74
223
  else
75
- s.add_dependency(%q<term-ansicolor>, [">= 0"])
76
224
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
77
225
  s.add_dependency(%q<rake>, [">= 0"])
78
226
  s.add_dependency(%q<cli_test>, [">= 0"])
@@ -1,5 +1,5 @@
1
1
  module Framecurve
2
- VERSION = "2.2.0"
2
+ VERSION = "2.2.1"
3
3
 
4
4
  # Is raised when a malformed framecurve bit has occurred in the system
5
5
  class Malformed < RuntimeError
@@ -7,7 +7,10 @@ class Framecurve::Curve
7
7
  attr_accessor :filename
8
8
 
9
9
  def initialize(*elements)
10
- @elements = elements.flatten
10
+ @elements = []
11
+ elements.flatten.each do | e |
12
+ @elements.push(e)
13
+ end
11
14
  end
12
15
 
13
16
  # Iterates over all the tuples in the curve
@@ -55,7 +58,7 @@ class Framecurve::Curve
55
58
 
56
59
  # Returns the number of lines in this curve file
57
60
  def length
58
- @elements.length
61
+ @elements.size
59
62
  end
60
63
 
61
64
  # Tells whether the curve contains any elements
@@ -67,7 +67,7 @@ class FCP_XML
67
67
 
68
68
  c.comment!("From FCP XML %s" % source_filename)
69
69
  c.comment!("Information from %s" % clipitem.xpath)
70
-
70
+ # c.comment!("Sequence start TC is %s", timecode_from(param))
71
71
  clip_item_name = @xml.xpath_first_text(clipitem, "name")
72
72
 
73
73
  # The clip in point in the edit timeline, also first frame of the TW
@@ -84,6 +84,11 @@ class FCP_XML
84
84
  c
85
85
  end
86
86
 
87
+ def timecode_from(param)
88
+ sequence = @xml.parent_by_name(param, "sequence")
89
+ tc = @xml.xpath_first_text(sequence, "timecode/string")
90
+ end
91
+
87
92
  def write_keyframe(c, kf, in_point, out_point)
88
93
  kf_when, kf_value = @xml.xpath_first_text(kf, "when").to_i, @xml.xpath_first_text(kf, "value").to_f
89
94
  # TODO: should be a flag
@@ -49,6 +49,15 @@ class Framecurve::XMLBridge
49
49
  return ancestor
50
50
  end
51
51
 
52
+ def parent_by_name(of_node, parent_name)
53
+ ancestor = of_node
54
+ until ancestor == ancestor.parent
55
+ return ancestor if ancestor.node_name == parent_name
56
+ ancestor == ancestor.parent
57
+ end
58
+ nil
59
+ end
60
+
52
61
  def element_text(elem)
53
62
  elem.text.to_s
54
63
  end
@@ -70,6 +70,14 @@ class Framecurve::Validator
70
70
  end
71
71
  end
72
72
 
73
+ def verify_no_linebreaks_in_comments(curve)
74
+ curve.each_with_index do | r, i |
75
+ if r.comment? && (r.text.include?("\r") || r.text.include?("\n"))
76
+ @errors.push("The comment at line %d contains a line break" % (i + 1))
77
+ end
78
+ end
79
+ end
80
+
73
81
  def verify_non_negative_source_and_destination_frames(curve)
74
82
  curve.each_with_index do | t, i |
75
83
  next unless t.tuple?
@@ -0,0 +1,11 @@
1
+ # http://framecurve.org/specification-v1
2
+ # at_frame use_frame_of_source
3
+ # From FCP XML CountDOWN.xml
4
+ # Information from /xmeml/project/children/sequence/media/video/track/clipitem[1]
5
+ 1 13.00000
6
+ 17 15.00000
7
+ 29 28.00000
8
+ 34 32.00000
9
+ 41 41.00000
10
+ 47 43.00000
11
+ 51 63.00000
@@ -28,6 +28,7 @@ class TestFramecurveFromFCPXML < Test::Unit::TestCase
28
28
  assert_equal 11, curve.length
29
29
  assert_match /From FCP XML/, curve[2].text
30
30
  assert_equal "Information from /xmeml/project/children/sequence/media/video/track/clipitem[1]", curve[3].text
31
+
31
32
  assert_equal Framecurve::Tuple.new(1, 13.0), curve[4]
32
33
  assert_equal Framecurve::Tuple.new(51, 63.0), curve[-1]
33
34
 
@@ -77,6 +77,15 @@ class TestFramecurveValidator < Test::Unit::TestCase
77
77
  assert_equal ["The frame sequencing is out of order (expected [1, 10] but got [10, 1]). The framecurve spec mandates that frames are recorded sequentially"], v.errors
78
78
  end
79
79
 
80
+ def test_should_error_out_with_linebreaks_in_comment
81
+ c = Framecurve::Curve.new( Framecurve::Comment.new("Foo bar \r\n"), Framecurve::Tuple.new(10, 123.4))
82
+ v = Framecurve::Validator.new
83
+ v.validate(c)
84
+ assert !v.ok?
85
+ assert v.any_errors?
86
+ assert_equal ["The comment at line 1 contains a line break"], v.errors
87
+ end
88
+
80
89
  def test_should_error_out_with_neg_source_and_dest_values
81
90
  c = Framecurve::Curve.new( Framecurve::Tuple.new(-10, 123.4), Framecurve::Tuple.new(1, -345.67) )
82
91
  v = Framecurve::Validator.new
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: framecurve
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-10 00:00:00.000000000 Z
12
+ date: 2012-01-25 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: term-ansicolor
16
- requirement: &11888320 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: *11888320
25
14
  - !ruby/object:Gem::Dependency
26
15
  name: jeweler
27
- requirement: &11888080 !ruby/object:Gem::Requirement
16
+ requirement: &9476990 !ruby/object:Gem::Requirement
28
17
  none: false
29
18
  requirements:
30
19
  - - ~>
@@ -32,10 +21,10 @@ dependencies:
32
21
  version: 1.6.4
33
22
  type: :development
34
23
  prerelease: false
35
- version_requirements: *11888080
24
+ version_requirements: *9476990
36
25
  - !ruby/object:Gem::Dependency
37
26
  name: rake
38
- requirement: &11887840 !ruby/object:Gem::Requirement
27
+ requirement: &9476710 !ruby/object:Gem::Requirement
39
28
  none: false
40
29
  requirements:
41
30
  - - ! '>='
@@ -43,10 +32,10 @@ dependencies:
43
32
  version: '0'
44
33
  type: :development
45
34
  prerelease: false
46
- version_requirements: *11887840
35
+ version_requirements: *9476710
47
36
  - !ruby/object:Gem::Dependency
48
37
  name: cli_test
49
- requirement: &11887600 !ruby/object:Gem::Requirement
38
+ requirement: &9476440 !ruby/object:Gem::Requirement
50
39
  none: false
51
40
  requirements:
52
41
  - - ! '>='
@@ -54,7 +43,7 @@ dependencies:
54
43
  version: '0'
55
44
  type: :development
56
45
  prerelease: false
57
- version_requirements: *11887600
46
+ version_requirements: *9476440
58
47
  description: ! ' Parser, validation and interpolation'
59
48
  email: me@julik.nl
60
49
  executables:
@@ -83,6 +72,157 @@ files:
83
72
  - lib/framecurve/serializer.rb
84
73
  - lib/framecurve/tuple.rb
85
74
  - lib/framecurve/validator.rb
75
+ - test/fixtures/countdown_standard/countdown_asis 001.png
76
+ - test/fixtures/countdown_standard/countdown_asis 002.png
77
+ - test/fixtures/countdown_standard/countdown_asis 003.png
78
+ - test/fixtures/countdown_standard/countdown_asis 004.png
79
+ - test/fixtures/countdown_standard/countdown_asis 005.png
80
+ - test/fixtures/countdown_standard/countdown_asis 006.png
81
+ - test/fixtures/countdown_standard/countdown_asis 007.png
82
+ - test/fixtures/countdown_standard/countdown_asis 008.png
83
+ - test/fixtures/countdown_standard/countdown_asis 009.png
84
+ - test/fixtures/countdown_standard/countdown_asis 010.png
85
+ - test/fixtures/countdown_standard/countdown_asis 011.png
86
+ - test/fixtures/countdown_standard/countdown_asis 012.png
87
+ - test/fixtures/countdown_standard/countdown_asis 013.png
88
+ - test/fixtures/countdown_standard/countdown_asis 014.png
89
+ - test/fixtures/countdown_standard/countdown_asis 015.png
90
+ - test/fixtures/countdown_standard/countdown_asis 016.png
91
+ - test/fixtures/countdown_standard/countdown_asis 017.png
92
+ - test/fixtures/countdown_standard/countdown_asis 018.png
93
+ - test/fixtures/countdown_standard/countdown_asis 019.png
94
+ - test/fixtures/countdown_standard/countdown_asis 020.png
95
+ - test/fixtures/countdown_standard/countdown_asis 021.png
96
+ - test/fixtures/countdown_standard/countdown_asis 022.png
97
+ - test/fixtures/countdown_standard/countdown_asis 023.png
98
+ - test/fixtures/countdown_standard/countdown_asis 024.png
99
+ - test/fixtures/countdown_standard/countdown_asis 025.png
100
+ - test/fixtures/countdown_standard/countdown_asis 026.png
101
+ - test/fixtures/countdown_standard/countdown_asis 027.png
102
+ - test/fixtures/countdown_standard/countdown_asis 028.png
103
+ - test/fixtures/countdown_standard/countdown_asis 029.png
104
+ - test/fixtures/countdown_standard/countdown_asis 030.png
105
+ - test/fixtures/countdown_standard/countdown_asis 031.png
106
+ - test/fixtures/countdown_standard/countdown_asis 032.png
107
+ - test/fixtures/countdown_standard/countdown_asis 033.png
108
+ - test/fixtures/countdown_standard/countdown_asis 034.png
109
+ - test/fixtures/countdown_standard/countdown_asis 035.png
110
+ - test/fixtures/countdown_standard/countdown_asis 036.png
111
+ - test/fixtures/countdown_standard/countdown_asis 037.png
112
+ - test/fixtures/countdown_standard/countdown_asis 038.png
113
+ - test/fixtures/countdown_standard/countdown_asis 039.png
114
+ - test/fixtures/countdown_standard/countdown_asis 040.png
115
+ - test/fixtures/countdown_standard/countdown_asis 041.png
116
+ - test/fixtures/countdown_standard/countdown_asis 042.png
117
+ - test/fixtures/countdown_standard/countdown_asis 043.png
118
+ - test/fixtures/countdown_standard/countdown_asis 044.png
119
+ - test/fixtures/countdown_standard/countdown_asis 045.png
120
+ - test/fixtures/countdown_standard/countdown_asis 046.png
121
+ - test/fixtures/countdown_standard/countdown_asis 047.png
122
+ - test/fixtures/countdown_standard/countdown_asis 048.png
123
+ - test/fixtures/countdown_standard/countdown_asis 049.png
124
+ - test/fixtures/countdown_standard/countdown_asis 050.png
125
+ - test/fixtures/countdown_standard/countdown_asis 051.png
126
+ - test/fixtures/countdown_standard/countdown_asis 052.png
127
+ - test/fixtures/countdown_standard/countdown_asis 053.png
128
+ - test/fixtures/countdown_standard/countdown_asis 054.png
129
+ - test/fixtures/countdown_standard/countdown_asis 055.png
130
+ - test/fixtures/countdown_standard/countdown_asis 056.png
131
+ - test/fixtures/countdown_standard/countdown_asis 057.png
132
+ - test/fixtures/countdown_standard/countdown_asis 058.png
133
+ - test/fixtures/countdown_standard/countdown_asis 059.png
134
+ - test/fixtures/countdown_standard/countdown_asis 060.png
135
+ - test/fixtures/countdown_standard/countdown_asis 061.png
136
+ - test/fixtures/countdown_standard/countdown_asis 062.png
137
+ - test/fixtures/countdown_standard/countdown_asis 063.png
138
+ - test/fixtures/countdown_standard/countdown_asis 064.png
139
+ - test/fixtures/countdown_standard/countdown_asis 065.png
140
+ - test/fixtures/countdown_standard/countdown_asis 066.png
141
+ - test/fixtures/countdown_standard/countdown_asis 067.png
142
+ - test/fixtures/countdown_standard/countdown_asis 068.png
143
+ - test/fixtures/countdown_standard/countdown_asis 069.png
144
+ - test/fixtures/countdown_standard/countdown_asis 070.png
145
+ - test/fixtures/countdown_standard/countdown_asis 071.png
146
+ - test/fixtures/countdown_standard/countdown_asis 072.png
147
+ - test/fixtures/countdown_standard/countdown_asis 073.png
148
+ - test/fixtures/countdown_standard/countdown_asis 074.png
149
+ - test/fixtures/countdown_standard/countdown_asis 075.png
150
+ - test/fixtures/countdown_standard/countdown_asis 076.png
151
+ - test/fixtures/countdown_standard/countdown_asis 077.png
152
+ - test/fixtures/countdown_standard/countdown_asis 078.png
153
+ - test/fixtures/countdown_standard/countdown_asis 079.png
154
+ - test/fixtures/countdown_standard/countdown_asis 080.png
155
+ - test/fixtures/countdown_standard/countdown_asis 081.png
156
+ - test/fixtures/countdown_standard/countdown_asis 082.png
157
+ - test/fixtures/countdown_standard/countdown_asis 083.png
158
+ - test/fixtures/countdown_standard/countdown_asis 084.png
159
+ - test/fixtures/countdown_standard/countdown_asis 085.png
160
+ - test/fixtures/countdown_standard/countdown_asis 086.png
161
+ - test/fixtures/countdown_standard/countdown_asis 087.png
162
+ - test/fixtures/countdown_standard/countdown_asis 088.png
163
+ - test/fixtures/countdown_standard/countdown_asis 089.png
164
+ - test/fixtures/countdown_standard/countdown_asis 090.png
165
+ - test/fixtures/countdown_standard/countdown_asis 091.png
166
+ - test/fixtures/countdown_standard/countdown_asis 092.png
167
+ - test/fixtures/countdown_standard/countdown_asis 093.png
168
+ - test/fixtures/countdown_standard/countdown_asis 094.png
169
+ - test/fixtures/countdown_standard/countdown_asis 095.png
170
+ - test/fixtures/countdown_standard/countdown_asis 096.png
171
+ - test/fixtures/countdown_standard/countdown_asis 097.png
172
+ - test/fixtures/countdown_standard/countdown_asis 098.png
173
+ - test/fixtures/countdown_standard/countdown_asis 099.png
174
+ - test/fixtures/countdown_standard/countdown_asis 100.png
175
+ - test/fixtures/countdown_timewarped/countdown_varispeed 01.png
176
+ - test/fixtures/countdown_timewarped/countdown_varispeed 02.png
177
+ - test/fixtures/countdown_timewarped/countdown_varispeed 03.png
178
+ - test/fixtures/countdown_timewarped/countdown_varispeed 04.png
179
+ - test/fixtures/countdown_timewarped/countdown_varispeed 05.png
180
+ - test/fixtures/countdown_timewarped/countdown_varispeed 06.png
181
+ - test/fixtures/countdown_timewarped/countdown_varispeed 07.png
182
+ - test/fixtures/countdown_timewarped/countdown_varispeed 08.png
183
+ - test/fixtures/countdown_timewarped/countdown_varispeed 09.png
184
+ - test/fixtures/countdown_timewarped/countdown_varispeed 10.png
185
+ - test/fixtures/countdown_timewarped/countdown_varispeed 11.png
186
+ - test/fixtures/countdown_timewarped/countdown_varispeed 12.png
187
+ - test/fixtures/countdown_timewarped/countdown_varispeed 13.png
188
+ - test/fixtures/countdown_timewarped/countdown_varispeed 14.png
189
+ - test/fixtures/countdown_timewarped/countdown_varispeed 15.png
190
+ - test/fixtures/countdown_timewarped/countdown_varispeed 16.png
191
+ - test/fixtures/countdown_timewarped/countdown_varispeed 17.png
192
+ - test/fixtures/countdown_timewarped/countdown_varispeed 18.png
193
+ - test/fixtures/countdown_timewarped/countdown_varispeed 19.png
194
+ - test/fixtures/countdown_timewarped/countdown_varispeed 20.png
195
+ - test/fixtures/countdown_timewarped/countdown_varispeed 21.png
196
+ - test/fixtures/countdown_timewarped/countdown_varispeed 22.png
197
+ - test/fixtures/countdown_timewarped/countdown_varispeed 23.png
198
+ - test/fixtures/countdown_timewarped/countdown_varispeed 24.png
199
+ - test/fixtures/countdown_timewarped/countdown_varispeed 25.png
200
+ - test/fixtures/countdown_timewarped/countdown_varispeed 26.png
201
+ - test/fixtures/countdown_timewarped/countdown_varispeed 27.png
202
+ - test/fixtures/countdown_timewarped/countdown_varispeed 28.png
203
+ - test/fixtures/countdown_timewarped/countdown_varispeed 29.png
204
+ - test/fixtures/countdown_timewarped/countdown_varispeed 30.png
205
+ - test/fixtures/countdown_timewarped/countdown_varispeed 31.png
206
+ - test/fixtures/countdown_timewarped/countdown_varispeed 32.png
207
+ - test/fixtures/countdown_timewarped/countdown_varispeed 33.png
208
+ - test/fixtures/countdown_timewarped/countdown_varispeed 34.png
209
+ - test/fixtures/countdown_timewarped/countdown_varispeed 35.png
210
+ - test/fixtures/countdown_timewarped/countdown_varispeed 36.png
211
+ - test/fixtures/countdown_timewarped/countdown_varispeed 37.png
212
+ - test/fixtures/countdown_timewarped/countdown_varispeed 38.png
213
+ - test/fixtures/countdown_timewarped/countdown_varispeed 39.png
214
+ - test/fixtures/countdown_timewarped/countdown_varispeed 40.png
215
+ - test/fixtures/countdown_timewarped/countdown_varispeed 41.png
216
+ - test/fixtures/countdown_timewarped/countdown_varispeed 42.png
217
+ - test/fixtures/countdown_timewarped/countdown_varispeed 43.png
218
+ - test/fixtures/countdown_timewarped/countdown_varispeed 44.png
219
+ - test/fixtures/countdown_timewarped/countdown_varispeed 45.png
220
+ - test/fixtures/countdown_timewarped/countdown_varispeed 46.png
221
+ - test/fixtures/countdown_timewarped/countdown_varispeed 47.png
222
+ - test/fixtures/countdown_timewarped/countdown_varispeed 48.png
223
+ - test/fixtures/countdown_timewarped/countdown_varispeed 49.png
224
+ - test/fixtures/countdown_timewarped/countdown_varispeed 50.png
225
+ - test/fixtures/countdown_timewarped/countdown_varispeed.framecurve.txt
86
226
  - test/fixtures/fcp_xml/CountDOWN.xml
87
227
  - test/fixtures/framecurves/err-neg-frames.framecurve.txt
88
228
  - test/fixtures/framecurves/err-no-tuples.framecurve.txt
@@ -118,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
258
  version: '0'
119
259
  requirements: []
120
260
  rubyforge_project:
121
- rubygems_version: 1.8.11
261
+ rubygems_version: 1.8.15
122
262
  signing_key:
123
263
  specification_version: 3
124
264
  summary: Handles Framecurve files