Upgrade to ExtJS 3.0.3 - Released 10/11/2009
[extjs.git] / docs / source / ext-base-anim-extra.html
1 <html>
2 <head>
3   <title>The source code</title>
4     <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
5     <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
6 </head>
7 <body  onload="prettyPrint();">
8     <pre class="prettyprint lang-js">/*!
9  * Ext JS Library 3.0.3
10  * Copyright(c) 2006-2009 Ext JS, LLC
11  * licensing@extjs.com
12  * http://www.extjs.com/license
13  */
14 // Easing functions\r
15 (function(){\r
16         // shortcuts to aid compression\r
17         var abs = Math.abs,\r
18                 pi = Math.PI,\r
19                 asin = Math.asin,\r
20                 pow = Math.pow,\r
21                 sin = Math.sin,\r
22                 EXTLIB = Ext.lib;\r
23                 \r
24     Ext.apply(EXTLIB.Easing, {\r
25         \r
26         easeBoth: function (t, b, c, d) {\r
27                 return ((t /= d / 2) < 1)  ?  c / 2 * t * t + b  :  -c / 2 * ((--t) * (t - 2) - 1) + b;               \r
28         },\r
29         \r
30         easeInStrong: function (t, b, c, d) {\r
31             return c * (t /= d) * t * t * t + b;\r
32         },\r
33 \r
34         easeOutStrong: function (t, b, c, d) {\r
35             return -c * ((t = t / d - 1) * t * t * t - 1) + b;\r
36         },\r
37 \r
38         easeBothStrong: function (t, b, c, d) {\r
39             return ((t /= d / 2) < 1)  ?  c / 2 * t * t * t * t + b  :  -c / 2 * ((t -= 2) * t * t * t - 2) + b;\r
40         },\r
41 \r
42         elasticIn: function (t, b, c, d, a, p) {\r
43                 if (t == 0 || (t /= d) == 1) {\r
44                 return t == 0 ? b : b + c;\r
45             }               \r
46             p = p || (d * .3);              \r
47 \r
48                         var s;\r
49                         if (a >= abs(c)) {\r
50                                 s = p / (2 * pi) * asin(c / a);\r
51                         } else {\r
52                                 a = c;\r
53                                 s = p / 4;\r
54                         }\r
55         \r
56             return -(a * pow(2, 10 * (t -= 1)) * sin((t * d - s) * (2 * pi) / p)) + b;\r
57                       \r
58         },      \r
59         \r
60                 elasticOut: function (t, b, c, d, a, p) {\r
61                 if (t == 0 || (t /= d) == 1) {\r
62                 return t == 0 ? b : b + c;\r
63             }               \r
64             p = p || (d * .3);              \r
65 \r
66                         var s;\r
67                         if (a >= abs(c)) {\r
68                                 s = p / (2 * pi) * asin(c / a);\r
69                         } else {\r
70                                 a = c;\r
71                                 s = p / 4;\r
72                         }\r
73         \r
74             return a * pow(2, -10 * t) * sin((t * d - s) * (2 * pi) / p) + c + b;        \r
75         },      \r
76         \r
77         elasticBoth: function (t, b, c, d, a, p) {\r
78             if (t == 0 || (t /= d / 2) == 2) {\r
79                 return t == 0 ? b : b + c;\r
80             }                           \r
81                     \r
82             p = p || (d * (.3 * 1.5));              \r
83 \r
84             var s;\r
85             if (a >= abs(c)) {\r
86                     s = p / (2 * pi) * asin(c / a);\r
87             } else {\r
88                     a = c;\r
89                 s = p / 4;\r
90             }\r
91 \r
92             return t < 1 ?\r
93                         -.5 * (a * pow(2, 10 * (t -= 1)) * sin((t * d - s) * (2 * pi) / p)) + b :\r
94                     a * pow(2, -10 * (t -= 1)) * sin((t * d - s) * (2 * pi) / p) * .5 + c + b;\r
95         },\r
96 \r
97         backIn: function (t, b, c, d, s) {\r
98             s = s ||  1.70158;              \r
99             return c * (t /= d) * t * ((s + 1) * t - s) + b;\r
100         },\r
101 \r
102 \r
103         backOut: function (t, b, c, d, s) {\r
104             if (!s) {\r
105                 s = 1.70158;\r
106             }\r
107             return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\r
108         },\r
109 \r
110 \r
111         backBoth: function (t, b, c, d, s) {\r
112             s = s || 1.70158;               \r
113 \r
114             return ((t /= d / 2 ) < 1) ?\r
115                     c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b :                  \r
116                         c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;\r
117         },\r
118 \r
119 \r
120         bounceIn: function (t, b, c, d) {\r
121             return c - EXTLIB.Easing.bounceOut(d - t, 0, c, d) + b;\r
122         },\r
123 \r
124 \r
125         bounceOut: function (t, b, c, d) {\r
126         if ((t /= d) < (1 / 2.75)) {\r
127                 return c * (7.5625 * t * t) + b;\r
128             } else if (t < (2 / 2.75)) {\r
129                 return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;\r
130             } else if (t < (2.5 / 2.75)) {\r
131                 return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;\r
132             }\r
133             return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;\r
134         },\r
135 \r
136 \r
137         bounceBoth: function (t, b, c, d) {\r
138             return (t < d / 2) ?\r
139                    EXTLIB.Easing.bounceIn(t * 2, 0, c, d) * .5 + b : \r
140                    EXTLIB.Easing.bounceOut(t * 2 - d, 0, c, d) * .5 + c * .5 + b;\r
141         }\r
142     });\r
143 })();\r
144 \r
145 (function() {\r
146     var EXTLIB = Ext.lib;\r
147         // Color Animation\r
148         EXTLIB.Anim.color = function(el, args, duration, easing, cb, scope) {\r
149             return EXTLIB.Anim.run(el, args, duration, easing, cb, scope, EXTLIB.ColorAnim);\r
150         }\r
151         \r
152     EXTLIB.ColorAnim = function(el, attributes, duration, method) {\r
153         EXTLIB.ColorAnim.superclass.constructor.call(this, el, attributes, duration, method);\r
154     };\r
155 \r
156     Ext.extend(EXTLIB.ColorAnim, EXTLIB.AnimBase);\r
157 \r
158     var superclass = EXTLIB.ColorAnim.superclass,\r
159         colorRE = /color$/i,\r
160         transparentRE = /^transparent|rgba\(0, 0, 0, 0\)$/,\r
161         rgbRE = /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,\r
162         hexRE= /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,\r
163         hex3RE = /^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i,\r
164         isset = function(v){\r
165             return typeof v !== 'undefined';\r
166         }\r
167                 \r
168         // private      \r
169     function parseColor(s) {    \r
170         var pi = parseInt,\r
171             base,\r
172             out = null,\r
173             c;\r
174         \r
175             if (s.length == 3) {\r
176             return s;\r
177         }\r
178         \r
179         Ext.each([hexRE, rgbRE, hex3RE], function(re, idx){\r
180             base = (idx % 2 == 0) ? 16 : 10;\r
181             c = re.exec(s);\r
182             if(c && c.length == 4){\r
183                 out = [pi(c[1], base), pi(c[2], base), pi(c[3], base)];\r
184                 return false;\r
185             }\r
186         });\r
187         return out;\r
188     }   \r
189 \r
190     Ext.apply(EXTLIB.ColorAnim.prototype, {\r
191         getAttr : function(attr) {\r
192             var me = this,\r
193                 el = me.el,\r
194                 val;                \r
195             if(colorRE.test(attr)){\r
196                 while(el && transparentRE.test(val = Ext.fly(el).getStyle(attr))){\r
197                     el = el.parentNode;\r
198                     val = "fff";\r
199                 }\r
200             }else{\r
201                 val = superclass.getAttr.call(me, attr);\r
202             }\r
203             return val;\r
204         },\r
205 \r
206         doMethod : function(attr, start, end) {\r
207             var me = this,\r
208                 val,\r
209                 floor = Math.floor;            \r
210 \r
211             if(colorRE.test(attr)){\r
212                 val = [];\r
213              \r
214                     Ext.each(start, function(v, i) {\r
215                     val[i] = superclass.doMethod.call(me, attr, v, end[i]);\r
216                 });\r
217 \r
218                 val = 'rgb(' + floor(val[0]) + ',' + floor(val[1]) + ',' + floor(val[2]) + ')';\r
219             }else{\r
220                 val = superclass.doMethod.call(me, attr, start, end);\r
221             }\r
222             return val;\r
223         },\r
224 \r
225         setRunAttr : function(attr) {\r
226             var me = this,\r
227                 a = me.attributes[attr],\r
228                 to = a.to,\r
229                 by = a.by,\r
230                 ra;\r
231                 \r
232             superclass.setRunAttr.call(me, attr);\r
233             ra = me.runAttrs[attr];\r
234             if(colorRE.test(attr)){\r
235                 var start = parseColor(ra.start),\r
236                     end = parseColor(ra.end);\r
237 \r
238                 if(!isset(to) && isset(by)){\r
239                     end = parseColor(by);\r
240                     Ext.each(start, function(item, i){\r
241                         end[i] = item + end[i];\r
242                     });\r
243                 }\r
244                 ra.start = start;\r
245                 ra.end = end;\r
246             }\r
247         }\r
248         });\r
249 })();   \r
250 \r
251         \r
252 (function() {\r
253             // Scroll Animation \r
254     var EXTLIB = Ext.lib;\r
255         EXTLIB.Anim.scroll = function(el, args, duration, easing, cb, scope) {          \r
256             return EXTLIB.Anim.run(el, args, duration, easing, cb, scope, EXTLIB.Scroll);\r
257         }\r
258         \r
259     EXTLIB.Scroll = function(el, attributes, duration, method) {\r
260         if(el){\r
261             EXTLIB.Scroll.superclass.constructor.call(this, el, attributes, duration, method);\r
262         }\r
263     };\r
264 \r
265     Ext.extend(EXTLIB.Scroll, EXTLIB.ColorAnim);\r
266 \r
267     var superclass = EXTLIB.Scroll.superclass,\r
268         SCROLL = 'scroll';\r
269 \r
270     Ext.apply(EXTLIB.Scroll.prototype, {\r
271 \r
272         doMethod : function(attr, start, end) {\r
273             var val,\r
274                 me = this,\r
275                 curFrame = me.curFrame,\r
276                 totalFrames = me.totalFrames;\r
277 \r
278             if(attr == SCROLL){\r
279                 val = [me.method(curFrame, start[0], end[0] - start[0], totalFrames),\r
280                        me.method(curFrame, start[1], end[1] - start[1], totalFrames)];\r
281             }else{\r
282                 val = superclass.doMethod.call(me, attr, start, end);\r
283             }\r
284             return val;\r
285         },\r
286 \r
287         getAttr : function(attr) {\r
288             var me = this;\r
289 \r
290             if (attr == SCROLL) {\r
291                 return [me.el.scrollLeft, me.el.scrollTop];\r
292             }else{\r
293                 return superclass.getAttr.call(me, attr);\r
294             }\r
295         },\r
296 \r
297         setAttr : function(attr, val, unit) {\r
298             var me = this;\r
299 \r
300             if(attr == SCROLL){\r
301                 me.el.scrollLeft = val[0];\r
302                 me.el.scrollTop = val[1];\r
303             }else{\r
304                 superclass.setAttr.call(me, attr, val, unit);\r
305             }\r
306         }\r
307     });\r
308 })();</pre>
309 </body>
310 </html>