]> git.wh0rd.org Git - tt-rss.git/blob - lib/dojo/fx/easing.js.uncompressed.js
update dojo to 1.7.3
[tt-rss.git] / lib / dojo / fx / easing.js.uncompressed.js
1 define("dojo/fx/easing", ["../_base/lang"], function(lang) {
2 // module:
3 //              dojo/fx/easing
4 // summary:
5 //              This module defines standard easing functions that are useful for animations.
6
7 var easingFuncs = /*===== dojo.fx.easing= =====*/ {
8         // summary:
9         //              Collection of easing functions to use beyond the default
10         //              `dojo._defaultEasing` function.
11         //
12         // description:
13         //
14         //              Easing functions are used to manipulate the iteration through
15         //              an `dojo.Animation`s _Line. _Line being the properties of an Animation,
16         //              and the easing function progresses through that Line determing
17         //              how quickly (or slowly) it should go. Or more accurately: modify
18         //              the value of the _Line based on the percentage of animation completed.
19         //
20         //              All functions follow a simple naming convention of "ease type" + "when".
21         //              If the name of the function ends in Out, the easing described appears
22         //              towards the end of the animation. "In" means during the beginning,
23         //              and InOut means both ranges of the Animation will applied, both
24         //              beginning and end.
25         //
26         //              One does not call the easing function directly, it must be passed to
27         //              the `easing` property of an animation.
28         //
29         //      example:
30         //      |       dojo.require("dojo.fx.easing");
31         //      |       var anim = dojo.fadeOut({
32         //      |               node: 'node',
33         //      |               duration: 2000,
34         //      |               //      note there is no ()
35         //      |               easing: dojo.fx.easing.quadIn
36         //      |       }).play();
37         //
38
39         linear: function(/* Decimal? */n){
40                 // summary: A linear easing function
41                 return n;
42         },
43
44         quadIn: function(/* Decimal? */n){
45                 return Math.pow(n, 2);
46         },
47
48         quadOut: function(/* Decimal? */n){
49                 return n * (n - 2) * -1;
50         },
51
52         quadInOut: function(/* Decimal? */n){
53                 n = n * 2;
54                 if(n < 1){ return Math.pow(n, 2) / 2; }
55                 return -1 * ((--n) * (n - 2) - 1) / 2;
56         },
57
58         cubicIn: function(/* Decimal? */n){
59                 return Math.pow(n, 3);
60         },
61
62         cubicOut: function(/* Decimal? */n){
63                 return Math.pow(n - 1, 3) + 1;
64         },
65
66         cubicInOut: function(/* Decimal? */n){
67                 n = n * 2;
68                 if(n < 1){ return Math.pow(n, 3) / 2; }
69                 n -= 2;
70                 return (Math.pow(n, 3) + 2) / 2;
71         },
72
73         quartIn: function(/* Decimal? */n){
74                 return Math.pow(n, 4);
75         },
76
77         quartOut: function(/* Decimal? */n){
78                 return -1 * (Math.pow(n - 1, 4) - 1);
79         },
80
81         quartInOut: function(/* Decimal? */n){
82                 n = n * 2;
83                 if(n < 1){ return Math.pow(n, 4) / 2; }
84                 n -= 2;
85                 return -1 / 2 * (Math.pow(n, 4) - 2);
86         },
87
88         quintIn: function(/* Decimal? */n){
89                 return Math.pow(n, 5);
90         },
91
92         quintOut: function(/* Decimal? */n){
93                 return Math.pow(n - 1, 5) + 1;
94         },
95
96         quintInOut: function(/* Decimal? */n){
97                 n = n * 2;
98                 if(n < 1){ return Math.pow(n, 5) / 2; }
99                 n -= 2;
100                 return (Math.pow(n, 5) + 2) / 2;
101         },
102
103         sineIn: function(/* Decimal? */n){
104                 return -1 * Math.cos(n * (Math.PI / 2)) + 1;
105         },
106
107         sineOut: function(/* Decimal? */n){
108                 return Math.sin(n * (Math.PI / 2));
109         },
110
111         sineInOut: function(/* Decimal? */n){
112                 return -1 * (Math.cos(Math.PI * n) - 1) / 2;
113         },
114
115         expoIn: function(/* Decimal? */n){
116                 return (n == 0) ? 0 : Math.pow(2, 10 * (n - 1));
117         },
118
119         expoOut: function(/* Decimal? */n){
120                 return (n == 1) ? 1 : (-1 * Math.pow(2, -10 * n) + 1);
121         },
122
123         expoInOut: function(/* Decimal? */n){
124                 if(n == 0){ return 0; }
125                 if(n == 1){ return 1; }
126                 n = n * 2;
127                 if(n < 1){ return Math.pow(2, 10 * (n - 1)) / 2; }
128                 --n;
129                 return (-1 * Math.pow(2, -10 * n) + 2) / 2;
130         },
131
132         circIn: function(/* Decimal? */n){
133                 return -1 * (Math.sqrt(1 - Math.pow(n, 2)) - 1);
134         },
135
136         circOut: function(/* Decimal? */n){
137                 n = n - 1;
138                 return Math.sqrt(1 - Math.pow(n, 2));
139         },
140
141         circInOut: function(/* Decimal? */n){
142                 n = n * 2;
143                 if(n < 1){ return -1 / 2 * (Math.sqrt(1 - Math.pow(n, 2)) - 1); }
144                 n -= 2;
145                 return 1 / 2 * (Math.sqrt(1 - Math.pow(n, 2)) + 1);
146         },
147
148         backIn: function(/* Decimal? */n){
149                 // summary:
150                 //              An easing function that starts away from the target,
151                 //              and quickly accelerates towards the end value.
152                 //
153                 //              Use caution when the easing will cause values to become
154                 //              negative as some properties cannot be set to negative values.
155                 var s = 1.70158;
156                 return Math.pow(n, 2) * ((s + 1) * n - s);
157         },
158
159         backOut: function(/* Decimal? */n){
160                 // summary:
161                 //              An easing function that pops past the range briefly, and slowly comes back.
162                 //
163                 // description:
164                 //              An easing function that pops past the range briefly, and slowly comes back.
165                 //
166                 //              Use caution when the easing will cause values to become negative as some
167                 //              properties cannot be set to negative values.
168
169                 n = n - 1;
170                 var s = 1.70158;
171                 return Math.pow(n, 2) * ((s + 1) * n + s) + 1;
172         },
173
174         backInOut: function(/* Decimal? */n){
175                 // summary:
176                 //              An easing function combining the effects of `backIn` and `backOut`
177                 //
178                 // description:
179                 //              An easing function combining the effects of `backIn` and `backOut`.
180                 //              Use caution when the easing will cause values to become negative
181                 //              as some properties cannot be set to negative values.
182                 var s = 1.70158 * 1.525;
183                 n = n * 2;
184                 if(n < 1){ return (Math.pow(n, 2) * ((s + 1) * n - s)) / 2; }
185                 n-=2;
186                 return (Math.pow(n, 2) * ((s + 1) * n + s) + 2) / 2;
187         },
188
189         elasticIn: function(/* Decimal? */n){
190                 // summary:
191                 //              An easing function the elastically snaps from the start value
192                 //
193                 // description:
194                 //              An easing function the elastically snaps from the start value
195                 //
196                 //              Use caution when the elasticity will cause values to become negative
197                 //              as some properties cannot be set to negative values.
198                 if(n == 0 || n == 1){ return n; }
199                 var p = .3;
200                 var s = p / 4;
201                 n = n - 1;
202                 return -1 * Math.pow(2, 10 * n) * Math.sin((n - s) * (2 * Math.PI) / p);
203         },
204
205         elasticOut: function(/* Decimal? */n){
206                 // summary:
207                 //              An easing function that elasticly snaps around the target value,
208                 //              near the end of the Animation
209                 //
210                 // description:
211                 //              An easing function that elasticly snaps around the target value,
212                 //              near the end of the Animation
213                 //
214                 //              Use caution when the elasticity will cause values to become
215                 //              negative as some properties cannot be set to negative values.
216                 if(n==0 || n == 1){ return n; }
217                 var p = .3;
218                 var s = p / 4;
219                 return Math.pow(2, -10 * n) * Math.sin((n - s) * (2 * Math.PI) / p) + 1;
220         },
221
222         elasticInOut: function(/* Decimal? */n){
223                 // summary:
224                 //              An easing function that elasticly snaps around the value, near
225                 //              the beginning and end of the Animation.
226                 //
227                 // description:
228                 //              An easing function that elasticly snaps around the value, near
229                 //              the beginning and end of the Animation.
230                 //
231                 //              Use caution when the elasticity will cause values to become
232                 //              negative as some properties cannot be set to negative values.
233                 if(n == 0) return 0;
234                 n = n * 2;
235                 if(n == 2) return 1;
236                 var p = .3 * 1.5;
237                 var s = p / 4;
238                 if(n < 1){
239                         n -= 1;
240                         return -.5 * (Math.pow(2, 10 * n) * Math.sin((n - s) * (2 * Math.PI) / p));
241                 }
242                 n -= 1;
243                 return .5 * (Math.pow(2, -10 * n) * Math.sin((n - s) * (2 * Math.PI) / p)) + 1;
244         },
245
246         bounceIn: function(/* Decimal? */n){
247                 // summary:
248                 //              An easing function that 'bounces' near the beginning of an Animation
249                 return (1 - easingFuncs.bounceOut(1 - n)); // Decimal
250         },
251
252         bounceOut: function(/* Decimal? */n){
253                 // summary:
254                 //              An easing function that 'bounces' near the end of an Animation
255                 var s = 7.5625;
256                 var p = 2.75;
257                 var l;
258                 if(n < (1 / p)){
259                         l = s * Math.pow(n, 2);
260                 }else if(n < (2 / p)){
261                         n -= (1.5 / p);
262                         l = s * Math.pow(n, 2) + .75;
263                 }else if(n < (2.5 / p)){
264                         n -= (2.25 / p);
265                         l = s * Math.pow(n, 2) + .9375;
266                 }else{
267                         n -= (2.625 / p);
268                         l = s * Math.pow(n, 2) + .984375;
269                 }
270                 return l;
271         },
272
273         bounceInOut: function(/* Decimal? */n){
274                 // summary:
275                 //              An easing function that 'bounces' at the beginning and end of the Animation
276                 if(n < 0.5){ return easingFuncs.bounceIn(n * 2) / 2; }
277                 return (easingFuncs.bounceOut(n * 2 - 1) / 2) + 0.5; // Decimal
278         }
279 };
280
281 lang.setObject("dojo.fx.easing", easingFuncs);
282
283 return easingFuncs;
284 });