fps-timecode 0.0.3

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 (54) hide show
  1. checksums.yaml +7 -0
  2. data/doc/FPS/Timecode.html +600 -0
  3. data/doc/FPS.html +100 -0
  4. data/doc/TestFpsTimecode.html +700 -0
  5. data/doc/created.rid +5 -0
  6. data/doc/css/fonts.css +167 -0
  7. data/doc/css/rdoc.css +590 -0
  8. data/doc/fonts/Lato-Light.ttf +0 -0
  9. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  10. data/doc/fonts/Lato-Regular.ttf +0 -0
  11. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  12. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  13. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  14. data/doc/fps-timecode_gemspec.html +98 -0
  15. data/doc/images/add.png +0 -0
  16. data/doc/images/arrow_up.png +0 -0
  17. data/doc/images/brick.png +0 -0
  18. data/doc/images/brick_link.png +0 -0
  19. data/doc/images/bug.png +0 -0
  20. data/doc/images/bullet_black.png +0 -0
  21. data/doc/images/bullet_toggle_minus.png +0 -0
  22. data/doc/images/bullet_toggle_plus.png +0 -0
  23. data/doc/images/date.png +0 -0
  24. data/doc/images/delete.png +0 -0
  25. data/doc/images/find.png +0 -0
  26. data/doc/images/loadingAnimation.gif +0 -0
  27. data/doc/images/macFFBgHack.png +0 -0
  28. data/doc/images/package.png +0 -0
  29. data/doc/images/page_green.png +0 -0
  30. data/doc/images/page_white_text.png +0 -0
  31. data/doc/images/page_white_width.png +0 -0
  32. data/doc/images/plugin.png +0 -0
  33. data/doc/images/ruby.png +0 -0
  34. data/doc/images/tag_blue.png +0 -0
  35. data/doc/images/tag_green.png +0 -0
  36. data/doc/images/transparent.png +0 -0
  37. data/doc/images/wrench.png +0 -0
  38. data/doc/images/wrench_orange.png +0 -0
  39. data/doc/images/zoom.png +0 -0
  40. data/doc/index.html +93 -0
  41. data/doc/js/darkfish.js +161 -0
  42. data/doc/js/jquery.js +4 -0
  43. data/doc/js/navigation.js +142 -0
  44. data/doc/js/navigation.js.gz +0 -0
  45. data/doc/js/search.js +109 -0
  46. data/doc/js/search_index.js +1 -0
  47. data/doc/js/search_index.js.gz +0 -0
  48. data/doc/js/searcher.js +228 -0
  49. data/doc/js/searcher.js.gz +0 -0
  50. data/doc/rdoc.css +543 -0
  51. data/doc/table_of_contents.html +177 -0
  52. data/lib/fps-timecode.rb +200 -0
  53. data/test/test_fps-timecode.rb +130 -0
  54. metadata +95 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bee6909b4895c0ae50ca281054110e484471dfecbf2aae6f2039f95d07064c0d
4
+ data.tar.gz: 0a73524f38e44d6c71cab41602fd20907462427524d16d07b6e08129df51fad7
5
+ SHA512:
6
+ metadata.gz: fb3d21965488524acb71f3f0ffca6c6326f0a224204eaf0f250152878a01e6bfa1c8c16a9a1e906b7b8c49c620bd595ba620672acee1af292ce039709f2deb9d
7
+ data.tar.gz: 8aceab438ede0db64ab92a6b5266a4f8a827f3e3199660c10df4cb58da10b362a6a1a5da43b0f030a2db23023ead8683729daa89be11fa40b15b0c4b75606614
@@ -0,0 +1,600 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta charset="UTF-8">
6
+
7
+ <title>class FPS::Timecode - RDoc Documentation</title>
8
+
9
+ <script type="text/javascript">
10
+ var rdoc_rel_prefix = "../";
11
+ </script>
12
+
13
+ <script src="../js/jquery.js"></script>
14
+ <script src="../js/darkfish.js"></script>
15
+
16
+ <link href="../css/fonts.css" rel="stylesheet">
17
+ <link href="../css/rdoc.css" rel="stylesheet">
18
+
19
+
20
+
21
+ <body id="top" role="document" class="class">
22
+ <nav role="navigation">
23
+ <div id="project-navigation">
24
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
25
+ <h2>
26
+ <a href="../index.html" rel="home">Home</a>
27
+ </h2>
28
+
29
+ <div id="table-of-contents-navigation">
30
+ <a href="../table_of_contents.html#pages">Pages</a>
31
+ <a href="../table_of_contents.html#classes">Classes</a>
32
+ <a href="../table_of_contents.html#methods">Methods</a>
33
+ </div>
34
+ </div>
35
+
36
+ <div id="search-section" role="search" class="project-section initially-hidden">
37
+ <form action="#" method="get" accept-charset="utf-8">
38
+ <div id="search-field-wrapper">
39
+ <input id="search-field" role="combobox" aria-label="Search"
40
+ aria-autocomplete="list" aria-controls="search-results"
41
+ type="text" name="search" placeholder="Search" spellcheck="false"
42
+ title="Type to search, Up and Down to navigate, Enter to load">
43
+ </div>
44
+
45
+ <ul id="search-results" aria-label="Search Results"
46
+ aria-busy="false" aria-expanded="false"
47
+ aria-atomic="false" class="initially-hidden"></ul>
48
+ </form>
49
+ </div>
50
+
51
+ </div>
52
+
53
+
54
+
55
+ <div id="class-metadata">
56
+
57
+ <div id="parent-class-section" class="nav-section">
58
+ <h3>Parent</h3>
59
+
60
+
61
+ <p class="link">Object
62
+
63
+ </div>
64
+
65
+
66
+
67
+ <!-- Method Quickref -->
68
+ <div id="method-list-section" class="nav-section">
69
+ <h3>Methods</h3>
70
+
71
+ <ul class="link-list" role="directory">
72
+
73
+ <li ><a href="#method-c-count_to_string">::count_to_string</a>
74
+
75
+ <li ><a href="#method-c-new">::new</a>
76
+
77
+ <li ><a href="#method-c-normalize">::normalize</a>
78
+
79
+ <li ><a href="#method-c-string_as_duration">::string_as_duration</a>
80
+
81
+ <li ><a href="#method-c-string_to_count">::string_to_count</a>
82
+
83
+ <li ><a href="#method-i-3C-3D-3E">#&lt;=&gt;</a>
84
+
85
+ <li ><a href="#method-i-3D-3D">#==</a>
86
+
87
+ <li ><a href="#method-i-string_as_duration">#string_as_duration</a>
88
+
89
+ <li ><a href="#method-i-succ">#succ</a>
90
+
91
+ </ul>
92
+ </div>
93
+
94
+ </div>
95
+ </nav>
96
+
97
+ <main role="main" aria-labelledby="class-FPS::Timecode">
98
+ <h1 id="class-FPS::Timecode" class="class">
99
+ class FPS::Timecode
100
+ </h1>
101
+
102
+ <section class="description">
103
+
104
+ <p>Since there are many class methods, often there is no need to create an
105
+ instance of class <a href="Timecode.html">Timecode</a>.</p>
106
+
107
+ </section>
108
+
109
+
110
+
111
+
112
+ <section id="5Buntitled-5D" class="documentation-section">
113
+
114
+
115
+
116
+
117
+
118
+ <section class="constants-list">
119
+ <header>
120
+ <h3>Constants</h3>
121
+ </header>
122
+ <dl>
123
+
124
+ <dt id="Counts">Counts
125
+
126
+ <dd>
127
+
128
+
129
+ </dl>
130
+ </section>
131
+
132
+
133
+
134
+ <section class="attribute-method-details" class="method-section">
135
+ <header>
136
+ <h3>Attributes</h3>
137
+ </header>
138
+
139
+
140
+ <div id="attribute-i-tc_count" class="method-detail">
141
+ <div class="method-heading attribute-method-heading">
142
+ <span class="method-name">tc_count</span><span
143
+ class="attribute-access-type">[R]</span>
144
+ </div>
145
+
146
+ <div class="method-description">
147
+
148
+
149
+
150
+ </div>
151
+ </div>
152
+
153
+ <div id="attribute-i-tc_mode" class="method-detail">
154
+ <div class="method-heading attribute-method-heading">
155
+ <span class="method-name">tc_mode</span><span
156
+ class="attribute-access-type">[R]</span>
157
+ </div>
158
+
159
+ <div class="method-description">
160
+
161
+
162
+
163
+ </div>
164
+ </div>
165
+
166
+ <div id="attribute-i-tc_string" class="method-detail">
167
+ <div class="method-heading attribute-method-heading">
168
+ <span class="method-name">tc_string</span><span
169
+ class="attribute-access-type">[R]</span>
170
+ </div>
171
+
172
+ <div class="method-description">
173
+
174
+
175
+
176
+ </div>
177
+ </div>
178
+
179
+ </section>
180
+
181
+
182
+
183
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
184
+ <header>
185
+ <h3>Public Class Methods</h3>
186
+ </header>
187
+
188
+
189
+ <div id="method-c-count_to_string" class="method-detail ">
190
+
191
+ <div class="method-heading">
192
+ <span class="method-name">count_to_string</span><span
193
+ class="method-args">(tc_mode, tc_count, duration = false)</span>
194
+
195
+ <span class="method-click-advice">click to toggle source</span>
196
+
197
+ </div>
198
+
199
+
200
+ <div class="method-description">
201
+
202
+ <p><a href="Timecode.html#method-c-count_to_string">::count_to_string</a></p>
203
+
204
+ <p>Class method to compute a string from a frame count</p>
205
+
206
+
207
+
208
+
209
+ <div class="method-source-code" id="count_to_string-source">
210
+ <pre><span class="ruby-comment"># File lib/fps-timecode.rb, line 57</span>
211
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">count_to_string</span>(<span class="ruby-identifier">tc_mode</span>, <span class="ruby-identifier">tc_count</span>, <span class="ruby-identifier">duration</span> = <span class="ruby-keyword">false</span>)
212
+ <span class="ruby-identifier">tc_count</span> = <span class="ruby-constant">Timecode</span>.<span class="ruby-identifier">normalize</span>(<span class="ruby-identifier">tc_mode</span>, <span class="ruby-identifier">tc_count</span>)
213
+
214
+ <span class="ruby-identifier">counts</span> = <span class="ruby-constant">Counts</span>[<span class="ruby-identifier">tc_mode</span>]
215
+ <span class="ruby-identifier">hours</span> = <span class="ruby-identifier">tc_count</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fph</span>]
216
+ <span class="ruby-identifier">rem</span> = <span class="ruby-identifier">tc_count</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fph</span>]
217
+ <span class="ruby-identifier">tens_mins</span> = <span class="ruby-identifier">rem</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fptm</span>]
218
+ <span class="ruby-identifier">rem</span> = <span class="ruby-identifier">rem</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fptm</span>]
219
+ <span class="ruby-identifier">units_mins</span> = <span class="ruby-identifier">rem</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fpm</span>]
220
+ <span class="ruby-identifier">rem</span> = <span class="ruby-identifier">rem</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fpm</span>]
221
+
222
+ <span class="ruby-keyword">if</span>(<span class="ruby-identifier">duration</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">false</span>) <span class="ruby-comment"># not a duration, do drop-frame processing</span>
223
+ <span class="ruby-comment"># handle 30 fps drop frame</span>
224
+ <span class="ruby-keyword">if</span>(<span class="ruby-identifier">tc_mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:fps_30_df</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">units_mins</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">rem</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">1</span>)
225
+ <span class="ruby-identifier">units_mins</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
226
+ <span class="ruby-identifier">rem</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fpm</span>]
227
+ <span class="ruby-keyword">end</span>
228
+ <span class="ruby-comment"># handle 60 fps drop frame</span>
229
+ <span class="ruby-keyword">if</span>(<span class="ruby-identifier">tc_mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:fps_60_df</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">units_mins</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">rem</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">3</span>)
230
+ <span class="ruby-identifier">units_mins</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
231
+ <span class="ruby-identifier">rem</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fpm</span>]
232
+ <span class="ruby-keyword">end</span>
233
+ <span class="ruby-keyword">end</span>
234
+
235
+ <span class="ruby-identifier">secs</span> = <span class="ruby-identifier">rem</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fps</span>]
236
+ <span class="ruby-identifier">frms</span> = <span class="ruby-identifier">rem</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fps</span>]
237
+
238
+ <span class="ruby-string">&quot;%02d:%d%d:%02d:%02d&quot;</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">hours</span>, <span class="ruby-identifier">tens_mins</span>, <span class="ruby-identifier">units_mins</span>, <span class="ruby-identifier">secs</span>, <span class="ruby-identifier">frms</span>]
239
+ <span class="ruby-keyword">end</span></pre>
240
+ </div>
241
+
242
+ </div>
243
+
244
+
245
+
246
+
247
+ </div>
248
+
249
+
250
+ <div id="method-c-new" class="method-detail ">
251
+
252
+ <div class="method-heading">
253
+ <span class="method-name">new</span><span
254
+ class="method-args">(tc_mode, tc_string, tc_count = nil)</span>
255
+
256
+ <span class="method-click-advice">click to toggle source</span>
257
+
258
+ </div>
259
+
260
+
261
+ <div class="method-description">
262
+
263
+ <p>initialize Construct a new instance of <a
264
+ href="Timecode.html">Timecode</a>, given a mode and either a timecode
265
+ string or a frame count. Raises ArgumentError</p>
266
+
267
+
268
+
269
+
270
+ <div class="method-source-code" id="new-source">
271
+ <pre><span class="ruby-comment"># File lib/fps-timecode.rb, line 140</span>
272
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">tc_mode</span>, <span class="ruby-identifier">tc_string</span>, <span class="ruby-identifier">tc_count</span> = <span class="ruby-keyword">nil</span>)
273
+ <span class="ruby-comment"># tc_string and tc_count cannot both be nil</span>
274
+ <span class="ruby-keyword">if</span>(<span class="ruby-identifier">tc_string</span> <span class="ruby-operator">===</span> <span class="ruby-keyword">nil</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">tc_count</span> <span class="ruby-operator">===</span> <span class="ruby-keyword">nil</span>)
275
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;string and count both nil&quot;</span>
276
+ <span class="ruby-keyword">end</span>
277
+ <span class="ruby-comment"># tc_mode must be given and must be one of the known tc modes</span>
278
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">Counts</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">tc_mode</span>)
279
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;invalid timecode mode&quot;</span>
280
+ <span class="ruby-keyword">end</span>
281
+
282
+ <span class="ruby-ivar">@tc_mode</span> = <span class="ruby-identifier">tc_mode</span>
283
+
284
+ <span class="ruby-comment"># Try to use the string to construct the instance and fall back</span>
285
+ <span class="ruby-comment"># to the count if an exception is raised</span>
286
+ <span class="ruby-keyword">begin</span>
287
+ <span class="ruby-ivar">@tc_count</span> = <span class="ruby-constant">Timecode</span>.<span class="ruby-identifier">string_to_count</span>(<span class="ruby-ivar">@tc_mode</span>, <span class="ruby-identifier">tc_string</span>)
288
+ <span class="ruby-comment"># always convert back to string because given string may not be drop-frame legal</span>
289
+ <span class="ruby-ivar">@tc_string</span> = <span class="ruby-constant">Timecode</span>.<span class="ruby-identifier">count_to_string</span>(<span class="ruby-ivar">@tc_mode</span>, <span class="ruby-ivar">@tc_count</span>)
290
+ <span class="ruby-keyword">rescue</span>
291
+ <span class="ruby-ivar">@tc_count</span> = <span class="ruby-constant">Timecode</span>.<span class="ruby-identifier">normalize</span>(<span class="ruby-ivar">@tc_mode</span>, <span class="ruby-identifier">tc_count</span>)
292
+ <span class="ruby-ivar">@tc_string</span> = <span class="ruby-constant">Timecode</span>.<span class="ruby-identifier">count_to_string</span>(<span class="ruby-ivar">@tc_mode</span>, <span class="ruby-ivar">@tc_count</span>)
293
+ <span class="ruby-keyword">end</span>
294
+
295
+ <span class="ruby-keyword">end</span></pre>
296
+ </div>
297
+
298
+ </div>
299
+
300
+
301
+
302
+
303
+ </div>
304
+
305
+
306
+ <div id="method-c-normalize" class="method-detail ">
307
+
308
+ <div class="method-heading">
309
+ <span class="method-name">normalize</span><span
310
+ class="method-args">(tc_mode, tc_count)</span>
311
+
312
+ <span class="method-click-advice">click to toggle source</span>
313
+
314
+ </div>
315
+
316
+
317
+ <div class="method-description">
318
+
319
+ <p>Class method to normalize a frame count &gt;= 0 and &lt; 24h Correct 24
320
+ hour overflow or underflow</p>
321
+
322
+
323
+
324
+
325
+ <div class="method-source-code" id="normalize-source">
326
+ <pre><span class="ruby-comment"># File lib/fps-timecode.rb, line 113</span>
327
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">normalize</span>(<span class="ruby-identifier">tc_mode</span>, <span class="ruby-identifier">tc_count</span>)
328
+ <span class="ruby-comment"># tc_mode must be given and must be one of the known tc modes</span>
329
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">Counts</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">tc_mode</span>)
330
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;invalid timecode mode&quot;</span>
331
+ <span class="ruby-keyword">end</span>
332
+
333
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">tc_count</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Fixnum</span>
334
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;invalid frame count #{tc_count}&quot;</span>
335
+ <span class="ruby-keyword">end</span>
336
+ <span class="ruby-comment"># normalize to 24 hours</span>
337
+ <span class="ruby-identifier">_24h</span> = <span class="ruby-constant">Counts</span>[<span class="ruby-identifier">tc_mode</span>][<span class="ruby-value">:fp24h</span>]
338
+ <span class="ruby-keyword">while</span> <span class="ruby-identifier">tc_count</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-keyword">do</span> <span class="ruby-identifier">tc_count</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">_24h</span> <span class="ruby-keyword">end</span>
339
+ <span class="ruby-keyword">while</span> <span class="ruby-identifier">tc_count</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">_24h</span> <span class="ruby-keyword">do</span> <span class="ruby-identifier">tc_count</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">_24h</span> <span class="ruby-keyword">end</span>
340
+ <span class="ruby-identifier">tc_count</span>
341
+ <span class="ruby-keyword">end</span></pre>
342
+ </div>
343
+
344
+ </div>
345
+
346
+
347
+
348
+
349
+ </div>
350
+
351
+
352
+ <div id="method-c-string_as_duration" class="method-detail ">
353
+
354
+ <div class="method-heading">
355
+ <span class="method-name">string_as_duration</span><span
356
+ class="method-args">(tc_mode, tc_count)</span>
357
+
358
+ <span class="method-click-advice">click to toggle source</span>
359
+
360
+ </div>
361
+
362
+
363
+ <div class="method-description">
364
+
365
+ <p>Class method to compute a string as a duration from a frame <a
366
+ href="Timecode.html#method-c-count_to_string">::count_to_string</a></p>
367
+
368
+
369
+
370
+
371
+ <div class="method-source-code" id="string_as_duration-source">
372
+ <pre><span class="ruby-comment"># File lib/fps-timecode.rb, line 130</span>
373
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">string_as_duration</span>(<span class="ruby-identifier">tc_mode</span>, <span class="ruby-identifier">tc_count</span>)
374
+ <span class="ruby-constant">Timecode</span>.<span class="ruby-identifier">count_to_string</span>(<span class="ruby-identifier">tc_mode</span>, <span class="ruby-identifier">tc_count</span>, <span class="ruby-keyword">true</span>)
375
+ <span class="ruby-keyword">end</span></pre>
376
+ </div>
377
+
378
+ </div>
379
+
380
+
381
+
382
+
383
+ </div>
384
+
385
+
386
+ <div id="method-c-string_to_count" class="method-detail ">
387
+
388
+ <div class="method-heading">
389
+ <span class="method-name">string_to_count</span><span
390
+ class="method-args">(tc_mode, tc_string)</span>
391
+
392
+ <span class="method-click-advice">click to toggle source</span>
393
+
394
+ </div>
395
+
396
+
397
+ <div class="method-description">
398
+
399
+ <p><a href="Timecode.html#method-c-string_to_count">::string_to_count</a>
400
+ Class method to compute a count from a string</p>
401
+
402
+
403
+
404
+
405
+ <div class="method-source-code" id="string_to_count-source">
406
+ <pre><span class="ruby-comment"># File lib/fps-timecode.rb, line 89</span>
407
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">string_to_count</span>(<span class="ruby-identifier">tc_mode</span>, <span class="ruby-identifier">tc_string</span>)
408
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">Counts</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">tc_mode</span>)
409
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;invalid timecode mode&quot;</span>
410
+ <span class="ruby-keyword">end</span>
411
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">tc_string</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>
412
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;invalid timecode string&quot;</span>
413
+ <span class="ruby-keyword">end</span>
414
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">tc_string</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/\A(\d{2})[:;.](\d{2})[:;.](\d{2})[:;.](\d{2})\Z/</span>
415
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;invalid timecode string&quot;</span>
416
+ <span class="ruby-keyword">end</span>
417
+ <span class="ruby-keyword">if</span>(<span class="ruby-node">$1</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">24</span> <span class="ruby-operator">||</span> <span class="ruby-node">$2</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">60</span> <span class="ruby-operator">||</span> <span class="ruby-node">$3</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">60</span> <span class="ruby-operator">||</span> <span class="ruby-node">$4</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-constant">Counts</span>[<span class="ruby-identifier">tc_mode</span>][<span class="ruby-value">:fps</span>])
418
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;invalid timecode string&quot;</span>
419
+ <span class="ruby-keyword">end</span>
420
+
421
+ <span class="ruby-identifier">counts</span> = <span class="ruby-constant">Counts</span>[<span class="ruby-identifier">tc_mode</span>]
422
+ <span class="ruby-identifier">tc_string</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/\A(\d{2})[:;.](\d)(\d)[:;.](\d{2})[:;.](\d{2})\Z/</span>
423
+ <span class="ruby-node">$1</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fph</span>] <span class="ruby-operator">+</span>
424
+ <span class="ruby-node">$2</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fptm</span>] <span class="ruby-operator">+</span>
425
+ <span class="ruby-node">$3</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fpm</span>] <span class="ruby-operator">+</span>
426
+ <span class="ruby-node">$4</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">counts</span>[<span class="ruby-value">:fps</span>] <span class="ruby-operator">+</span> <span class="ruby-node">$5</span>.<span class="ruby-identifier">to_i</span>
427
+ <span class="ruby-keyword">end</span></pre>
428
+ </div>
429
+
430
+ </div>
431
+
432
+
433
+
434
+
435
+ </div>
436
+
437
+
438
+ </section>
439
+
440
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
441
+ <header>
442
+ <h3>Public Instance Methods</h3>
443
+ </header>
444
+
445
+
446
+ <div id="method-i-3C-3D-3E" class="method-detail ">
447
+
448
+ <div class="method-heading">
449
+ <span class="method-name">&lt;=&gt;</span><span
450
+ class="method-args">(other)</span>
451
+
452
+ <span class="method-click-advice">click to toggle source</span>
453
+
454
+ </div>
455
+
456
+
457
+ <div class="method-description">
458
+
459
+ <p>compare two timecodes comparison (spaceship) operator does string compare</p>
460
+
461
+
462
+
463
+
464
+ <div class="method-source-code" id="3C-3D-3E-source">
465
+ <pre><span class="ruby-comment"># File lib/fps-timecode.rb, line 195</span>
466
+ <span class="ruby-keyword">def</span> <span class="ruby-operator">&lt;=&gt;</span>(<span class="ruby-identifier">other</span>)
467
+ <span class="ruby-ivar">@tc_string</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">tc_string</span>
468
+ <span class="ruby-keyword">end</span></pre>
469
+ </div>
470
+
471
+ </div>
472
+
473
+
474
+
475
+
476
+ </div>
477
+
478
+
479
+ <div id="method-i-3D-3D" class="method-detail ">
480
+
481
+ <div class="method-heading">
482
+ <span class="method-name">==</span><span
483
+ class="method-args">(other)</span>
484
+
485
+ <span class="method-click-advice">click to toggle source</span>
486
+
487
+ </div>
488
+
489
+
490
+ <div class="method-description">
491
+
492
+ <p>compare two timecodes for equality</p>
493
+
494
+ <p>equality operator does string compare two timecodes may be considered equal
495
+ even though their modes and counts may be different.</p>
496
+
497
+
498
+
499
+
500
+ <div class="method-source-code" id="3D-3D-source">
501
+ <pre><span class="ruby-comment"># File lib/fps-timecode.rb, line 189</span>
502
+ <span class="ruby-keyword">def</span> <span class="ruby-operator">==</span>(<span class="ruby-identifier">other</span>)
503
+ <span class="ruby-ivar">@tc_string</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">tc_string</span>
504
+ <span class="ruby-keyword">end</span></pre>
505
+ </div>
506
+
507
+ </div>
508
+
509
+
510
+
511
+
512
+ </div>
513
+
514
+
515
+ <div id="method-i-string_as_duration" class="method-detail ">
516
+
517
+ <div class="method-heading">
518
+ <span class="method-name">string_as_duration</span><span
519
+ class="method-args">()</span>
520
+
521
+ <span class="method-click-advice">click to toggle source</span>
522
+
523
+ </div>
524
+
525
+
526
+ <div class="method-description">
527
+
528
+ <p><a
529
+ href="Timecode.html#method-c-string_as_duration">::string_as_duration</a>
530
+ The difference of two timecodes might be used as a duration. For non-drop
531
+ frame, the duration string does not differ from the string as a timecode
532
+ address. But for drop-frame, timecodes that don&#39;t exist as an address
533
+ can exist as a duration. One minute in drop frame is 1798 frames or
534
+ 00:00:59:28. “00:01:00:00” as a drop-frame timecode address does not exist.
535
+ But the difference between 00:01:59:28 and 00:00:59:28 should be displayed
536
+ as “00:01:00:00” – one minute.</p>
537
+
538
+
539
+
540
+
541
+ <div class="method-source-code" id="string_as_duration-source">
542
+ <pre><span class="ruby-comment"># File lib/fps-timecode.rb, line 175</span>
543
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">string_as_duration</span>
544
+ <span class="ruby-constant">Timecode</span>.<span class="ruby-identifier">string_as_duration</span>(<span class="ruby-ivar">@tc_mode</span>, <span class="ruby-ivar">@tc_count</span>)
545
+ <span class="ruby-keyword">end</span></pre>
546
+ </div>
547
+
548
+ </div>
549
+
550
+
551
+
552
+
553
+ </div>
554
+
555
+
556
+ <div id="method-i-succ" class="method-detail ">
557
+
558
+ <div class="method-heading">
559
+ <span class="method-name">succ</span><span
560
+ class="method-args">()</span>
561
+
562
+ <span class="method-click-advice">click to toggle source</span>
563
+
564
+ </div>
565
+
566
+
567
+ <div class="method-description">
568
+
569
+ <p>succ return the next timecode address in the sequence</p>
570
+
571
+
572
+
573
+
574
+ <div class="method-source-code" id="succ-source">
575
+ <pre><span class="ruby-comment"># File lib/fps-timecode.rb, line 181</span>
576
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">succ</span>
577
+ <span class="ruby-constant">Timecode</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tc_mode</span>, <span class="ruby-keyword">nil</span>, <span class="ruby-ivar">@tc_count</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)
578
+ <span class="ruby-keyword">end</span></pre>
579
+ </div>
580
+
581
+ </div>
582
+
583
+
584
+
585
+
586
+ </div>
587
+
588
+
589
+ </section>
590
+
591
+ </section>
592
+ </main>
593
+
594
+
595
+ <footer id="validator-badges" role="contentinfo">
596
+ <p><a href="http://validator.w3.org/check/referer">Validate</a>
597
+ <p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.1.
598
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
599
+ </footer>
600
+