| Index: packages/charted/lib/core/interpolators/easing.dart
|
| diff --git a/packages/charted/lib/core/interpolators/easing.dart b/packages/charted/lib/core/interpolators/easing.dart
|
| index 2b4bdec1193843ea0ab713c660bc52f5c91c1c3f..e80bbd6f533b77262a00e6d1dc6b2e80e3c6d326 100644
|
| --- a/packages/charted/lib/core/interpolators/easing.dart
|
| +++ b/packages/charted/lib/core/interpolators/easing.dart
|
| @@ -8,21 +8,21 @@
|
|
|
| part of charted.core.interpolators;
|
|
|
| -const String EASE_TYPE_LINEAR = 'linear';
|
| -const String EASE_TYPE_POLY = 'poly';
|
| -const String EASE_TYPE_QUAD = 'quad';
|
| -const String EASE_TYPE_CUBIC = 'cubic';
|
| -const String EASE_TYPE_SIN = 'sin';
|
| -const String EASE_TYPE_EXP = 'exp';
|
| -const String EASE_TYPE_CIRCLE = 'circle';
|
| -const String EASE_TYPE_ELASTIC = 'elastic';
|
| -const String EASE_TYPE_BACK = 'back';
|
| -const String EASE_TYPE_BOUNCE = 'bounce';
|
| -
|
| -const String EASE_MODE_IN = 'in';
|
| -const String EASE_MODE_OUT = 'out';
|
| -const String EASE_MODE_IN_OUT = 'in-out';
|
| -const String EASE_MODE_OUT_IN = 'out-in';
|
| +const String EASE_TYPE_LINEAR = 'linear';
|
| +const String EASE_TYPE_POLY = 'poly';
|
| +const String EASE_TYPE_QUAD = 'quad';
|
| +const String EASE_TYPE_CUBIC = 'cubic';
|
| +const String EASE_TYPE_SIN = 'sin';
|
| +const String EASE_TYPE_EXP = 'exp';
|
| +const String EASE_TYPE_CIRCLE = 'circle';
|
| +const String EASE_TYPE_ELASTIC = 'elastic';
|
| +const String EASE_TYPE_BACK = 'back';
|
| +const String EASE_TYPE_BOUNCE = 'bounce';
|
| +
|
| +const String EASE_MODE_IN = 'in';
|
| +const String EASE_MODE_OUT = 'out';
|
| +const String EASE_MODE_IN_OUT = 'in-out';
|
| +const String EASE_MODE_OUT_IN = 'out-in';
|
|
|
| /// [EasingFunction] manipulates progression of an animation. The returned
|
| /// value is passed to an [Interpolator] to generate intermediate state.
|
| @@ -33,8 +33,8 @@ typedef num EasingFunction(num t);
|
| typedef EasingFunction EasingModeFunction(EasingFunction fn);
|
|
|
| /// Creates an easing function based on type and mode.
|
| -EasingFunction easingFunctionByName(
|
| - String type, [String mode = EASE_MODE_IN, List params]) {
|
| +EasingFunction easingFunctionByName(String type,
|
| + [String mode = EASE_MODE_IN, List params]) {
|
| const Map easingTypes = const {
|
| EASE_TYPE_LINEAR: identityFunction,
|
| EASE_TYPE_POLY: easePoly,
|
| @@ -47,21 +47,21 @@ EasingFunction easingFunctionByName(
|
| EASE_TYPE_BACK: easeBack,
|
| EASE_TYPE_BOUNCE: easeBounce
|
| };
|
| -
|
| +
|
| const Map easingModes = const {
|
| EASE_MODE_IN: identityFunction,
|
| EASE_MODE_OUT: reverseEasingFn,
|
| EASE_MODE_IN_OUT: reflectEasingFn,
|
| EASE_MODE_OUT_IN: reflectReverseEasingFn
|
| };
|
| -
|
| +
|
| const Map customEasingFunctions = const {
|
| - '$EASE_TYPE_CUBIC-$EASE_MODE_IN_OUT': easeCubicInOut
|
| + '$EASE_TYPE_CUBIC-$EASE_MODE_IN_OUT': easeCubicInOut
|
| };
|
|
|
| assert(easingTypes.containsKey(type));
|
| assert(easingModes.containsKey(mode));
|
| -
|
| +
|
| EasingFunction fn;
|
| if (customEasingFunctions.containsKey('$type-$mode')) {
|
| fn = Function.apply(customEasingFunctions['$type-$mode'], params);
|
| @@ -72,18 +72,15 @@ EasingFunction easingFunctionByName(
|
| return clampEasingFn(fn);
|
| }
|
|
|
| -
|
| /// Clamps transition progress to stay between 0.0 and 1.0
|
| EasingFunction clampEasingFn(EasingFunction f) =>
|
| (t) => t <= 0 ? 0 : t >= 1 ? 1 : f(t);
|
|
|
| -
|
| //
|
| // Implementation of easing modes.
|
| //
|
|
|
| -EasingFunction reverseEasingFn(EasingFunction f) =>
|
| - (t) => 1 - f(1 - t);
|
| +EasingFunction reverseEasingFn(EasingFunction f) => (t) => 1 - f(1 - t);
|
|
|
| EasingFunction reflectEasingFn(EasingFunction f) =>
|
| (t) => .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t)));
|
| @@ -91,7 +88,6 @@ EasingFunction reflectEasingFn(EasingFunction f) =>
|
| EasingFunction reflectReverseEasingFn(EasingFunction f) =>
|
| reflectEasingFn(reverseEasingFn(f));
|
|
|
| -
|
| //
|
| // Implementation of easing function generators.
|
| //
|
| @@ -100,38 +96,33 @@ EasingFunction easePoly([e = 1]) => (t) => math.pow(t, e);
|
|
|
| EasingFunction easeElastic([a = 1, p = 0.45]) {
|
| var s = p / 2 * math.PI * math.asin(1 / a);
|
| - return (t) => 1 + a * math.pow(2, -10 * t) *
|
| - math.sin((t - s) * 2 * math.PI / p);
|
| + return (t) =>
|
| + 1 + a * math.pow(2, -10 * t) * math.sin((t - s) * 2 * math.PI / p);
|
| }
|
|
|
| -EasingFunction easeBack([s = 1.70158]) =>
|
| - (num t) => t * t * ((s + 1) * t - s);
|
| +EasingFunction easeBack([s = 1.70158]) => (num t) => t * t * ((s + 1) * t - s);
|
|
|
| EasingFunction easeQuad() => (num t) => t * t;
|
|
|
| EasingFunction easeCubic() => (num t) => t * t * t;
|
|
|
| -EasingFunction easeCubicInOut() =>
|
| - (num t) {
|
| +EasingFunction easeCubicInOut() => (num t) {
|
| if (t <= 0) return 0;
|
| if (t >= 1) return 1;
|
| - var t2 = t * t,
|
| - t3 = t2 * t;
|
| + var t2 = t * t, t3 = t2 * t;
|
| return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
|
| };
|
|
|
| -EasingFunction easeSin() =>
|
| - (num t) => 1 - math.cos(t * math.PI / 2);
|
| +EasingFunction easeSin() => (num t) => 1 - math.cos(t * math.PI / 2);
|
|
|
| -EasingFunction easeExp() =>
|
| - (num t) => math.pow(2, 10 * (t - 1));
|
| +EasingFunction easeExp() => (num t) => math.pow(2, 10 * (t - 1));
|
|
|
| -EasingFunction easeCircle() =>
|
| - (num t) => 1 - math.sqrt(1 - t * t);
|
| +EasingFunction easeCircle() => (num t) => 1 - math.sqrt(1 - t * t);
|
|
|
| -EasingFunction easeBounce() =>
|
| - (num t) => t < 1 / 2.75 ?
|
| - 7.5625 * t * t : t < 2 / 2.75 ?
|
| - 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ?
|
| - 7.5625 * (t -= 2.25 / 2.75) * t + .9375
|
| - : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
|
| +EasingFunction easeBounce() => (num t) => t < 1 / 2.75
|
| + ? 7.5625 * t * t
|
| + : t < 2 / 2.75
|
| + ? 7.5625 * (t -= 1.5 / 2.75) * t + .75
|
| + : t < 2.5 / 2.75
|
| + ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375
|
| + : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
|
|
|