Index: sky/examples/fn/widgets/animationgenerator.dart |
diff --git a/sky/examples/fn/widgets/animationgenerator.dart b/sky/examples/fn/widgets/animationgenerator.dart |
deleted file mode 100644 |
index ef916548946b2892db204aaee920b0ae8470ff76..0000000000000000000000000000000000000000 |
--- a/sky/examples/fn/widgets/animationgenerator.dart |
+++ /dev/null |
@@ -1,83 +0,0 @@ |
-part of widgets; |
- |
-class FrameGenerator { |
- |
- Function onDone; |
- StreamController _controller; |
- |
- Stream<double> get onTick => _controller.stream; |
- |
- int _animationId = 0; |
- bool _cancelled = false; |
- |
- FrameGenerator({this.onDone}) { |
- _controller = new StreamController( |
- sync: true, |
- onListen: _scheduleTick, |
- onCancel: cancel); |
- } |
- |
- void cancel() { |
- if (_cancelled) { |
- return; |
- } |
- if (_animationId != 0) { |
- sky.window.cancelAnimationFrame(_animationId); |
- } |
- _animationId = 0; |
- _cancelled = true; |
- if (onDone != null) { |
- onDone(); |
- } |
- } |
- |
- void _scheduleTick() { |
- assert(_animationId == 0); |
- _animationId = sky.window.requestAnimationFrame(_tick); |
- } |
- |
- void _tick(double timeStamp) { |
- _animationId = 0; |
- _controller.add(timeStamp); |
- if (!_cancelled) { |
- _scheduleTick(); |
- } |
- } |
-} |
- |
-class AnimationGenerator extends FrameGenerator { |
- |
- Stream<double> get onTick => _stream; |
- final double duration; |
- final double begin; |
- final double end; |
- final Curve curve; |
- Stream<double> _stream; |
- bool _done = false; |
- |
- AnimationGenerator(this.duration, { |
- this.begin: 0.0, |
- this.end: 1.0, |
- this.curve: linear, |
- Function onDone |
- }):super(onDone: onDone) { |
- double startTime = 0.0; |
- double targetTime = 0.0; |
- _stream = super.onTick.map((timeStamp) { |
- if (startTime == 0.0) { |
- startTime = timeStamp; |
- targetTime = startTime + duration; |
- } |
- return math.min((timeStamp - startTime) / duration, 1.0); |
- }) |
- .takeWhile(_checkForCompletion) |
- .map((t) => begin + (end - begin) * curve.transform(t)); |
- } |
- |
- bool _checkForCompletion(double t) { |
- if (_done) |
- return false; |
- _done = t >= 1; |
- return true; |
- } |
-} |