--- a/src/js/libs/popcorn.code.js Thu May 24 15:05:47 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-// PLUGIN: Code
-
-(function ( Popcorn ) {
-
- /**
- * Code Popcorn Plug-in
- *
- * Adds the ability to run arbitrary code (JavaScript functions) according to video timing.
- *
- * @param {Object} options
- *
- * Required parameters: start, end, template, data, and target.
- * Optional parameter: static.
- *
- * start: the time in seconds when the mustache template should be rendered
- * in the target div.
- *
- * end: the time in seconds when the rendered mustache template should be
- * removed from the target div.
- *
- * onStart: the function to be run when the start time is reached.
- *
- * onFrame: [optional] a function to be run on each paint call
- * (e.g., called ~60 times per second) between the start and end times.
- *
- * onEnd: [optional] a function to be run when the end time is reached.
- *
- * Example:
- var p = Popcorn('#video')
-
- // onStart function only
- .code({
- start: 1,
- end: 4,
- onStart: function( options ) {
- // called on start
- }
- })
-
- // onStart + onEnd only
- .code({
- start: 6,
- end: 8,
- onStart: function( options ) {
- // called on start
- },
- onEnd: function ( options ) {
- // called on end
- }
- })
-
- // onStart, onEnd, onFrame
- .code({
- start: 10,
- end: 14,
- onStart: function( options ) {
- // called on start
- },
- onFrame: function ( options ) {
- // called on every paint frame between start and end.
- // uses mozRequestAnimationFrame, webkitRequestAnimationFrame,
- // or setTimeout with 16ms window.
- },
- onEnd: function ( options ) {
- // called on end
- }
- });
- *
- */
-
- Popcorn.plugin( "code" , function( options ) {
- var running = false;
-
- // Setup a proper frame interval function (60fps), favouring paint events.
- var step = (function() {
-
- var buildFrameRunner = function( runner ) {
- return function( f, options ) {
-
- var _f = function() {
- running && f();
- running && runner( _f );
- };
-
- _f();
- };
- };
-
- // Figure out which level of browser support we have for this
- if ( window.webkitRequestAnimationFrame ) {
- return buildFrameRunner( window.webkitRequestAnimationFrame );
- } else if ( window.mozRequestAnimationFrame ) {
- return buildFrameRunner( window.mozRequestAnimationFrame );
- } else {
- return buildFrameRunner( function( f ) {
- window.setTimeout( f, 16 );
- });
- }
-
- })();
-
- if ( !options.onStart || typeof options.onStart !== "function" ) {
-
- if ( Popcorn.plugin.debug ) {
- throw new Error( "Popcorn Code Plugin Error: onStart must be a function." );
- }
- options.onStart = Popcorn.nop;
- }
-
- if ( options.onEnd && typeof options.onEnd !== "function" ) {
-
- if ( Popcorn.plugin.debug ) {
- throw new Error( "Popcorn Code Plugin Error: onEnd must be a function." );
- }
- options.onEnd = undefined;
- }
-
- if ( options.onFrame && typeof options.onFrame !== "function" ) {
-
- if ( Popcorn.plugin.debug ) {
- throw new Error( "Popcorn Code Plugin Error: onFrame must be a function." );
- }
- options.onFrame = undefined;
- }
-
- return {
- start: function( event, options ) {
- options.onStart( options );
-
- if ( options.onFrame ) {
- running = true;
- step( options.onFrame, options );
- }
- },
-
- end: function( event, options ) {
- if ( options.onFrame ) {
- running = false;
- }
-
- if ( options.onEnd ) {
- options.onEnd( options );
- }
- }
- };
- },
- {
- about: {
- name: "Popcorn Code Plugin",
- version: "0.1",
- author: "David Humphrey (@humphd)",
- website: "http://vocamus.net/dave"
- },
- options: {
- start: {
- elem: "input",
- type: "text",
- label: "In"
- },
- end: {
- elem: "input",
- type: "text",
- label: "Out"
- },
- onStart: {
- elem: "input",
- type: "function",
- label: "onStart"
- },
- onFrame: {
- elem: "input",
- type: "function",
- label: "onFrame"
- },
- onEnd: {
- elem: "input",
- type: "function",
- label: "onEnd"
- }
- }
- });
-})( Popcorn );