diff options
author | darin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-28 20:50:12 +0000 |
---|---|---|
committer | darin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-28 20:50:12 +0000 |
commit | aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6 (patch) | |
tree | a63f2d36e86361d5c27122a6d6ef4098b755d7d9 /chrome/common/animation.cc | |
parent | e115558691eb08608fad56bb32f40265fdfa4ac5 (diff) | |
download | chromium_src-aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6.zip chromium_src-aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6.tar.gz chromium_src-aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6.tar.bz2 |
Simplify OneShotTimer and RepeatingTimer. Fix up all consumers.
Major changes:
OneShotTimer and RepeatingTimer become template classes that no longer require
a Task or a Timer object. They just use PostDelayedTask. Under the hood that
still uses a Timer object.
The API is much simpler for consumers as they now no longer need to worry about
allocating a Task or managing the lifetime of the object pointer held by the
Task.
I added some new unit tests to timer_unittest.cc to cover the API.
I preserved the old TimerManager / Timer API for now, but I plan to soon kill
it.
R=brettw
BUG=1346553
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1502 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/animation.cc')
-rw-r--r-- | chrome/common/animation.cc | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/chrome/common/animation.cc b/chrome/common/animation.cc index b4b4ba6..d407ccc 100644 --- a/chrome/common/animation.cc +++ b/chrome/common/animation.cc @@ -14,9 +14,7 @@ Animation::Animation(int frame_rate, iteration_count_(0), current_iteration_(0), state_(0.0), - delegate_(delegate), - timer_(TimeDelta::FromMilliseconds(timer_interval_)) { - timer_.set_unowned_task(this); + delegate_(delegate) { } Animation::Animation(int duration, @@ -29,9 +27,7 @@ Animation::Animation(int duration, iteration_count_(0), current_iteration_(0), state_(0.0), - delegate_(delegate), - timer_(TimeDelta::FromMilliseconds(timer_interval_)) { - timer_.set_unowned_task(this); + delegate_(delegate) { SetDuration(duration); } @@ -50,7 +46,8 @@ double Animation::GetCurrentValue() const { void Animation::Start() { if (!animating_) { - timer_.Start(); + timer_.Start(TimeDelta::FromMilliseconds(timer_interval_), this, + &Animation::Run); animating_ = true; if (delegate_) @@ -87,6 +84,17 @@ bool Animation::IsAnimating() { return animating_; } +void Animation::SetDuration(int duration) { + duration_ = duration; + if (duration_ < timer_interval_) + duration_ = timer_interval_; + iteration_count_ = duration_ / timer_interval_; + + // Changing the number of iterations forces us to reset the + // animation to the first iteration. + current_iteration_ = 0; +} + void Animation::Run() { state_ = static_cast<double>(++current_iteration_) / iteration_count_; @@ -101,17 +109,6 @@ void Animation::Run() { Stop(); } -void Animation::SetDuration(int duration) { - duration_ = duration; - if (duration_ < timer_interval_) - duration_ = timer_interval_; - iteration_count_ = duration_ / timer_interval_; - - // Changing the number of iterations forces us to reset the - // animation to the first iteration. - current_iteration_ = 0; -} - int Animation::CalculateInterval(int frame_rate) { int timer_interval = 1000 / frame_rate; if (timer_interval < 10) |