summaryrefslogtreecommitdiffstats
path: root/app/animation.cc
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-07 17:23:14 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-07 17:23:14 +0000
commitdbba0c455f8b3f139fbfd9634d0bfba268085a33 (patch)
tree91c42ac484be649b5ed537ff1e12fc7edbe9f7fa /app/animation.cc
parent4c1b6f0b5e1ce512780f5c83c245fd62dca3f3d1 (diff)
downloadchromium_src-dbba0c455f8b3f139fbfd9634d0bfba268085a33.zip
chromium_src-dbba0c455f8b3f139fbfd9634d0bfba268085a33.tar.gz
chromium_src-dbba0c455f8b3f139fbfd9634d0bfba268085a33.tar.bz2
Adds Animation::CurrentValueBetween and gets rid of a bunch of
duplicate code. BUG=none TEST=none Review URL: http://codereview.chromium.org/570055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38330 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app/animation.cc')
-rw-r--r--app/animation.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/app/animation.cc b/app/animation.cc
index 94c99c2..b341d2a 100644
--- a/app/animation.cc
+++ b/app/animation.cc
@@ -4,6 +4,7 @@
#include "app/animation.h"
+#include "base/gfx/rect.h"
#include "base/message_loop.h"
#if defined(OS_WIN)
@@ -47,6 +48,25 @@ double Animation::GetCurrentValue() const {
return state_;
}
+double Animation::CurrentValueBetween(double start, double target) const {
+ return start + (target - start) * GetCurrentValue();
+}
+
+int Animation::CurrentValueBetween(int start, int target) const {
+ return static_cast<int>(CurrentValueBetween(static_cast<double>(start),
+ static_cast<double>(target)));
+}
+
+gfx::Rect Animation::CurrentValueBetween(const gfx::Rect& start_bounds,
+ const gfx::Rect& target_bounds) const {
+ return gfx::Rect(CurrentValueBetween(start_bounds.x(), target_bounds.x()),
+ CurrentValueBetween(start_bounds.y(), target_bounds.y()),
+ CurrentValueBetween(start_bounds.width(),
+ target_bounds.width()),
+ CurrentValueBetween(start_bounds.height(),
+ target_bounds.height()));
+}
+
void Animation::Start() {
if (!animating_) {
start_time_ = Time::Now();