123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.fx._core"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.fx._core"] = true;
- dojo.provide("dojox.fx._core");
- dojox.fx._Line = function(start, end){
- // summary: a custom _Line to accomodate multi-dimensional values
- //
- // description:
- // a normal dojo._Line is the curve, and does Line(start,end)
- // for propertyAnimation. as we make more complicatied animations, we realize
- // some properties can have 2, or 4 values relevant (x,y) or (t,l,r,b) for example
- //
- // this function provides support for those Lines, and is ported directly from 0.4
- // this is a lot of extra code for something so seldom used, so we'll put it here as
- // and optional core addition. you can create a new line, and use it during onAnimate
- // as you see fit.
- //
- // start: Integer|Array
- // An Integer (or an Array of integers) to use as a starting point
- // end: Integer|Array
- // An Integer (or an Array of integers) to use as an ending point
- //
- // example: see dojox.fx.smoothScroll
- //
- // example:
- // | // this is 10 .. 100 and 50 .. 500
- // | var curve = new dojox.fx._Line([10,50],[100,500]);
- // | // dojo.Animation.onAnimate is called at every step of the animation
- // | // to define current values. this _Line returns an array
- // | // at each step. arguments[0] and [1] in this example.
- //
- this.start = start;
- this.end = end;
-
- var isArray = dojo.isArray(start),
- d = (isArray ? [] : end - start);
-
- if(isArray){
- // multi-dimensional branch
- dojo.forEach(this.start, function(s, i){
- d[i] = this.end[i] - s;
- }, this);
-
- this.getValue = function(/*float*/ n){
- var res = [];
- dojo.forEach(this.start, function(s, i){
- res[i] = (d[i] * n) + s;
- }, this);
- return res; // Array
- }
- }else{
- // single value branch, document here for both branches:
- this.getValue = function(/*float*/ n){
- // summary: Returns the point on the line, or an array of points
- // n: a floating point number greater than 0 and less than 1
- // returns: Mixed
- return (d * n) + this.start; // Decimal
- }
- }
- };
- }
|