diff --git a/README.md b/README.md index dada93e..de22487 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ yarn add smpte.js ### Example Using `ES6` sintax: - ```javascript import SMPTE from 'smpte.js'; @@ -32,6 +31,18 @@ console.log( .toString('00:00:00;00') ); // 00:00:01;03 + +let invalidTm = new SMPTE('00:01:00:23', 24, true); +// Error: Only 29.97 frame rate has drop frame support + +let invalidTm = new SMPTE('00:01:00:59', 60, false); +// Error: Frame rate not supported + +let invalidTm = new SMPTE(-1440, 24, false); +// Error: Negative frames not supported + +let invalidTm = new SMPTE('00:00:00:24', 24, false); +// Error: Invalid timecode ``` ### Object Instantiation @@ -76,50 +87,122 @@ SMPTE objects provide the following properties once an object is created: Each SMPTE object provides the following methods: -#### `addFromSeconds(seconds)` - [**chainable**](#chainable) +#### `addFromSeconds(seconds)` Adds a number of seconds to the current timecode object. * `seconds`: `Number` indicating the seconds to be added. +* `return`: The reference to the altered `SMPTE` object +##### Example: +```javascript +let tc = SMPTE.fromSeconds(2, 24, false); +console.log(tc.addFromSeconds(2).toString()) +// 00:00:04:00 +``` -#### `subtractFromSeconds(seconds)` - [**chainable**](#chainable) +#### `subtractFromSeconds(seconds)` Substracts a timecode or a frame count from the current SMPTE object. * `seconds`: `Number` indicating the seconds to be subtracted. +* `return`: The reference to the altered `SMPTE` object +##### Example: +```javascript +let tc = SMPTE.fromSeconds(2, 24, false); +console.log(tc.subtractFromSeconds(2).toString()) +// 00:00:00:00 +``` -#### `add(time, operation = 1)` - [**chainable**](#chainable) +#### `add(time, operation = 1)` Adds a timecode or a frame count to the current SMPTE object. * `time`: `Number|String|SMPTE` indicating the value to be added. * `operation`: `Number` used to get the sign of the `time`. +* `return`: The reference to the altered `SMPTE` object +##### Example: +```javascript +let tc = SMPTE.fromTimecode('00:01:00:00', 24, false); +console.log(tc.add('00:00:30:00').toString()) +// 00:01:30:00 +``` -#### `subtract(time)` - [**chainable**](#chainable) +#### `subtract(time)` Substracts a timecode or a frame count from the current SMPTE object. * `time`: `Number|String|SMPTE` indicating the value to be subtracted. +* `return`: The reference to the altered `SMPTE` object +##### Example: +```javascript +let tc = SMPTE.fromTimecode('00:00:01:00', 24, false); +console.log(tc.subtract(4).toString()) +// 00:00:00:20 +``` #### `toString(format = undefined)` Returns a string with the SMPTE timecode representation. * `format`: `String` mask to form the string. +* `return`: Timecode `string`. +##### Example: +```javascript +console.log(new SMPTE(48, 24, false).toString()) +// 00:00:02:00 +``` #### `toDate()` Converts a SMPTE object to a date object. +* `return`: The respective `Date` object. +```javascript +console.log(new SMPTE(48, 24, false).toDate().getSeconds()) +// 2 +``` #### `isTimecodeFormatValid(timecode, df)` - **static** Checks if a timecode string is in a valid format. * `timecode`: `String` to be evaluated. * `df`: `Boolean` indicating if is drop frame representation. +* `return`: `Boolean`. +```javascript +console.log(SMPTE.isTimecodeFormatValid('24:59:59:29', false)); +// false +console.log(SMPTE.isTimecodeFormatValid('23:59:59:29', false)); +// true + +console.log(SMPTE.isTimecodeFormatValid('24:59:59:29', true)); +// false +console.log(SMPTE.isTimecodeFormatValid('24:59:59;29', true)); +// true +``` #### `isValidTimecode(timecode, fr = defaults.frameRate, df = defaults.dropFrame)` - **static** Checks if a timecode is valid according to SMPTE standard. * `timecode`: `String` to be evaluated. * `fr`: `Number` indicating the frame rate. * `df`: `Boolean` indicating if is drop frame representation. +* `return`: `Boolean`. +```javascript +console.log(SMPTE.isValidTimecode('23:59:59:24', 24, false)); +// false +console.log(SMPTE.isValidTimecode('23:59:59:23', 24, false)); +// true +``` #### `frameCountFromTimecode(timecode, fr = defaults.frameRate, df = defaults.dropFrame)` - **static** Gets the frame count given a timecode string. * `timecode`: `String` timecode. * `fr`: `Number` indicating the frame rate. * `df`: `Boolean` indicating if is drop frame representation. +* `return`: `Number`. +```javascript +console.log(SMPTE.frameCountFromTimecode('00:01:00;02', 29.97, true)) +// 1800 +console.log(SMPTE.frameCountFromTimecode('00:01:00:00', 29.97, false)) +// 1800 +``` #### `isFramerateSupported(framerate)` - **static** Checks if a frame rate is supported. * `framerate`: `Number` indicating the frame rate. +* `return`: `Boolean`. +```javascript +console.log(SMPTE.isFramerateSupported(59.94)) +// false +console.log(SMPTE.isFramerateSupported(25)) +// true +``` ### Default values You can easily change the default value accessing the static `default` object from the SMPTE class and change the `frameRate` or the `dropFrame` property. @@ -131,13 +214,8 @@ SMPTE.defaults.frameRate = 29.97; SMPTE.defaults.dropFrame = true; ``` -## Definitions - -### [Chainable](https://en.wikipedia.org/wiki/Method_chaining) -Returns an object, allowing the calls to be chained together in a single statement without requiring variables to store the intermediate results. - ## Contributing All contribution is welcome, please feel free to open tickets and pull requests. ## License -[MIT.](https://github.com/fireworkweb/smpte.js/blob/master/LICENSE) +[MIT.](LICENSE)