]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/fx/easing.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / fx / easing.js
diff --git a/static/dojo-release-1.1.1/dojox/fx/easing.js b/static/dojo-release-1.1.1/dojox/fx/easing.js
new file mode 100644 (file)
index 0000000..444a8e9
--- /dev/null
@@ -0,0 +1,223 @@
+if(!dojo._hasResource["dojox.fx.easing"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.fx.easing"] = true;
+dojo.provide("dojox.fx.easing");
+/*
+       dojox.fx.easing is in this little file so you don't need dojox.fx to utilize this.
+       dojox.fx has a lot of fun animations, but this module is optimized for size ... 
+
+*/
+dojox.fx.easing = {
+       // summary: Collection of easing functions to use beyond the default dojo._defaultEasing
+       // 
+       // description:
+       //      Easing functions are used to manipulate the iteration through
+       //      an _Animation's _Line. _Line being the properties of an Animation,
+       //      and the easing function progresses through that Line determing
+       //      how quickly (or slowly) it should go. Or more accurately: modify
+       //      the value of the _Line based on the percentage of animation completed.
+       //      
+       //      example:
+       //      |       dojo.require("dojox.fx.easing");
+       //      |       var anim = dojo.fadeOut({
+       //      |               node: 'node',   
+       //      |               duration: 2000,
+       //      |               easing: dojox.fx.easing.quadIn
+       //      |       }).play();
+       //
+       
+       linear: function(/* Decimal? */n){
+               // summary: A linear easing function
+               return n;
+       },
+
+       quadIn: function(/* Decimal? */n){
+               return Math.pow(n, 2);
+       },
+
+       quadOut: function(/* Decimal? */n){
+               return n * (n-2) * -1;
+       },
+
+       quadInOut: function(/* Decimal? */n){
+               n=n*2;
+               if(n<1){ return Math.pow(n, 2) / 2; }
+               return -1 * ((--n)*(n-2) - 1) / 2;
+       },
+
+       cubicIn: function(/* Decimal? */n){
+               return Math.pow(n, 3);
+       },
+
+       cubicOut: function(/* Decimal? */n){
+               return Math.pow(n-1, 3) + 1;
+       },
+
+       cubicInOut: function(/* Decimal? */n){
+               n=n*2;
+               if(n<1){ return Math.pow(n, 3) / 2; }
+               n-=2;
+               return (Math.pow(n, 3) + 2) / 2;
+       },
+
+       quartIn: function(/* Decimal? */n){
+               return Math.pow(n, 4);
+       },
+
+       quartOut: function(/* Decimal? */n){
+               return -1 * (Math.pow(n-1, 4) - 1);
+       },
+
+       quartInOut: function(/* Decimal? */n){
+               n=n*2;
+               if(n<1){ return Math.pow(n, 4) / 2; }
+               n-=2;
+               return -1/2 * (Math.pow(n, 4) - 2);
+       },
+
+       quintIn: function(/* Decimal? */n){
+               return Math.pow(n, 5);
+       },
+
+       quintOut: function(/* Decimal? */n){
+               return Math.pow(n-1, 5) + 1;
+       },
+
+       quintInOut: function(/* Decimal? */n){
+               n=n*2;
+               if(n<1){ return Math.pow(n, 5) / 2; };
+               n-=2;
+               return (Math.pow(n, 5) + 2) / 2;
+       },
+
+       sineIn: function(/* Decimal? */n){
+               return -1 * Math.cos(n * (Math.PI/2)) + 1;
+       },
+
+       sineOut: function(/* Decimal? */n){
+               return Math.sin(n * (Math.PI/2));
+       },
+
+       sineInOut: function(/* Decimal? */n){
+               return -1 * (Math.cos(Math.PI*n) - 1) / 2;
+       },
+
+       expoIn: function(/* Decimal? */n){
+               return (n==0) ? 0 : Math.pow(2, 10 * (n - 1));
+       },
+
+       expoOut: function(/* Decimal? */n){
+               return (n==1) ? 1 : (-1 * Math.pow(2, -10 * n) + 1);
+       },
+
+       expoInOut: function(/* Decimal? */n){
+               if(n==0){ return 0; }
+               if(n==1){ return 1; }
+               n = n*2;
+               if(n<1){ return Math.pow(2, 10 * (n-1)) / 2; }
+               --n;
+               return (-1 * Math.pow(2, -10 * n) + 2) / 2;
+       },
+
+       circIn: function(/* Decimal? */n){
+               return -1 * (Math.sqrt(1 - Math.pow(n, 2)) - 1);
+       },
+
+       circOut: function(/* Decimal? */n){
+               n = n-1;
+               return Math.sqrt(1 - Math.pow(n, 2));
+       },
+
+       circInOut: function(/* Decimal? */n){
+               n = n*2;
+               if(n<1){ return -1/2 * (Math.sqrt(1 - Math.pow(n, 2)) - 1); }
+               n-=2;
+               return 1/2 * (Math.sqrt(1 - Math.pow(n, 2)) + 1);
+       },
+
+       backIn: function(/* Decimal? */n){
+               var s = 1.70158;
+               return Math.pow(n, 2) * ((s+1)*n - s);
+       },
+
+       backOut: function(/* Decimal? */n){
+               // summary: an easing function that pops past the range briefly, and 
+               //      slowly comes back. 
+               n = n - 1;
+               var s = 1.70158;
+               return Math.pow(n, 2) * ((s + 1) * n + s) + 1;
+       },
+
+       backInOut: function(/* Decimal? */n){
+               var s = 1.70158 * 1.525;
+               n = n*2;
+               if(n < 1){ return (Math.pow(n, 2)*((s+1)*n - s))/2; }
+               n-=2;
+               return (Math.pow(n, 2)*((s+1)*n + s) + 2)/2;
+       },
+
+       elasticIn: function(/* Decimal? */n){
+               if(n==0){ return 0; }
+               if(n==1){ return 1; }
+               var p = .3;
+               var s = p/4;
+               n = n - 1;
+               return -1 * Math.pow(2,10*n) * Math.sin((n-s)*(2*Math.PI)/p);
+       },
+
+       elasticOut: function(/* Decimal? */n){
+               // summary: An easing function that elasticly snaps around the target value, near the end of the Animation
+               if(n==0) return 0;
+               if(n==1) return 1;
+               var p = .3;
+               var s = p/4;
+               return Math.pow(2,-10*n) * Math.sin((n-s)*(2*Math.PI)/p) + 1;
+       },
+
+       elasticInOut: function(/* Decimal? */n){
+               // summary: An easing function that elasticly snaps around the value, near the beginning and end of the Animation               
+               if(n==0) return 0;
+               n = n*2;
+               if(n==2) return 1;
+               var p = .3*1.5;
+               var s = p/4;
+               if(n<1){
+                       n-=1;
+                       return -.5*(Math.pow(2,10*n) * Math.sin((n-s)*(2*Math.PI)/p));
+               }
+               n-=1;
+               return .5*(Math.pow(2,-10*n) * Math.sin((n-s)*(2*Math.PI)/p)) + 1;
+       },
+
+       bounceIn: function(/* Decimal? */n){
+               // summary: An easing function that "bounces" near the beginning of an Animation
+               return (1 - dojox.fx.easing.bounceOut(1-n)); // Decimal
+       },
+
+       bounceOut: function(/* Decimal? */n){
+               // summary: An easing function that "bounces" near the end of an Animation
+               var s=7.5625;
+               var p=2.75;
+               var l; 
+               if(n < (1 / p)){
+                       l = s*Math.pow(n, 2);
+               }else if(n < (2 / p)){
+                       n -= (1.5 / p);
+                       l = s * Math.pow(n, 2) + .75;
+               }else if(n < (2.5 / p)){
+                       n -= (2.25 / p);
+                       l = s * Math.pow(n, 2) + .9375;
+               }else{
+                       n -= (2.625 / p);
+                       l = s * Math.pow(n, 2) + .984375;
+               }
+               return l;
+       },
+
+       bounceInOut: function(/* Decimal? */n){
+               // summary: An easing function that "bounces" at the beginning and end of the Animation
+               if(n<0.5){ return dojox.fx.easing.bounceIn(n*2) / 2; }
+               return (dojox.fx.easing.bounceOut(n*2-1) / 2) + 0.5; // Decimal
+       }
+};
+
+}