| Index: charted/lib/core/timer.dart
|
| diff --git a/charted/lib/core/timer.dart b/charted/lib/core/timer.dart
|
| deleted file mode 100644
|
| index a1666314b7c07137555cacb53a539b64a3f2d9a3..0000000000000000000000000000000000000000
|
| --- a/charted/lib/core/timer.dart
|
| +++ /dev/null
|
| @@ -1,99 +0,0 @@
|
| -//
|
| -// Copyright 2014 Google Inc. All rights reserved.
|
| -//
|
| -// Use of this source code is governed by a BSD-style
|
| -// license that can be found in the LICENSE file or at
|
| -// https://developers.google.com/open-source/licenses/bsd
|
| -//
|
| -
|
| -/// A [window.requestAnimationFrame] based timer for use with transitions.
|
| -/// Uses [dart.async.Timer] when the time until next timeout is too long.
|
| -library charted.core.timer;
|
| -
|
| -import 'dart:async';
|
| -import 'dart:html' show window;
|
| -import 'dart:collection';
|
| -
|
| -typedef bool TimerCallback(int time);
|
| -
|
| -class AnimationTimer extends LinkedListEntry {
|
| - static LinkedList<AnimationTimer> _queue = new LinkedList<AnimationTimer>();
|
| -
|
| - /// true if we are already waiting for window.animationFrame. At any given
|
| - /// time, only one of _timerScheduled and _animationFrameRequested are set
|
| - static bool _animationFrameRequested = false;
|
| -
|
| - /// Instance of currently scheduled timer. At any given time, only one
|
| - /// of _timerScheduled and _animationFrameRequested are set.
|
| - static Timer _timerScheduled;
|
| -
|
| - /// Currently active timer.
|
| - static AnimationTimer active;
|
| -
|
| - /// Callback function that is called when the timer is fired.
|
| - final TimerCallback callback;
|
| -
|
| - /// Start time of the animation.
|
| - final int time;
|
| -
|
| - /// Schedule a new [callback] to be called [delay] micro-seconds after
|
| - /// [then] micro-seconds since epoch.
|
| - AnimationTimer(this.callback, { int delay: 0, int then: null })
|
| - : time = then == null
|
| - ? new DateTime.now().millisecondsSinceEpoch + delay
|
| - : then + delay {
|
| - _queue.add(this);
|
| - if (!_animationFrameRequested) {
|
| - if (_timerScheduled != null) {
|
| - _timerScheduled.cancel();
|
| - }
|
| - _animationFrameRequested = true;
|
| - window.animationFrame.then(_step);
|
| - }
|
| - }
|
| -
|
| - /// Iterate through all timers, call the callbacks where necessary and
|
| - /// return milliseconds until next timer.
|
| - static int flush() {
|
| - int now = new DateTime.now().millisecondsSinceEpoch;
|
| - int earliest = null;
|
| - AnimationTimer timer = _queue.isEmpty ? null : _queue.first;
|
| -
|
| - while(timer != null) {
|
| - bool finished = false;
|
| - AnimationTimer ref = timer;
|
| -
|
| - if (now > timer.time) {
|
| - active = timer;
|
| - finished = timer.callback(now - timer.time);
|
| - }
|
| - if (!finished && (earliest == null || timer.time < earliest)) {
|
| - earliest = timer.time;
|
| - }
|
| - timer = timer.next;
|
| - if (finished) ref.unlink();
|
| - }
|
| - active = null;
|
| - return earliest == null ? earliest : earliest - now;
|
| - }
|
| -
|
| - /// Internal timer and animation frame handler.
|
| - _step([_]) {
|
| - int delay = flush();
|
| -
|
| - if (delay == null) {
|
| - _animationFrameRequested = false;
|
| - }
|
| - else if (delay > 24) {
|
| - if (_timerScheduled != null) {
|
| - _timerScheduled.cancel();
|
| - }
|
| - _timerScheduled = new Timer(new Duration(milliseconds: delay), _step);
|
| - _animationFrameRequested = false;
|
| - }
|
| - else {
|
| - _animationFrameRequested = true;
|
| - window.animationFrame.then(_step);
|
| - }
|
| - }
|
| -}
|
|
|