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.
- checksums.yaml +7 -0
- data/doc/FPS/Timecode.html +600 -0
- data/doc/FPS.html +100 -0
- data/doc/TestFpsTimecode.html +700 -0
- data/doc/created.rid +5 -0
- data/doc/css/fonts.css +167 -0
- data/doc/css/rdoc.css +590 -0
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/fps-timecode_gemspec.html +98 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +93 -0
- data/doc/js/darkfish.js +161 -0
- data/doc/js/jquery.js +4 -0
- data/doc/js/navigation.js +142 -0
- data/doc/js/navigation.js.gz +0 -0
- data/doc/js/search.js +109 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/search_index.js.gz +0 -0
- data/doc/js/searcher.js +228 -0
- data/doc/js/searcher.js.gz +0 -0
- data/doc/rdoc.css +543 -0
- data/doc/table_of_contents.html +177 -0
- data/lib/fps-timecode.rb +200 -0
- data/test/test_fps-timecode.rb +130 -0
- 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">#<=></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">&&</span> <span class="ruby-identifier">units_mins</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">rem</span> <span class="ruby-operator"><=</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">&&</span> <span class="ruby-identifier">units_mins</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">rem</span> <span class="ruby-operator"><=</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">"%02d:%d%d:%02d:%02d"</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">&&</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">"string and count both nil"</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">"invalid timecode mode"</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 >= 0 and < 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">"invalid timecode mode"</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">"invalid frame count #{tc_count}"</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"><</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">>=</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">"invalid timecode mode"</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">"invalid timecode string"</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">"invalid timecode string"</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">>=</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">>=</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">>=</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">>=</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">"invalid timecode string"</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"><=></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"><=></span>(<span class="ruby-identifier">other</span>)
|
467
|
+
<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>
|
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'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
|
+
|