diff options
author | vollick@chromium.org <vollick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-17 03:42:25 +0000 |
---|---|---|
committer | vollick@chromium.org <vollick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-17 03:42:25 +0000 |
commit | 3c2196b2ddfefbfa7887fb9ae223ad588c2a4ae7 (patch) | |
tree | f3065a662b44fe4922f22a2775730d9f71237732 /ui/gfx/interpolated_transform.cc | |
parent | 6a3a9694ec9156a50cdd73aac564d5cd1f167606 (diff) | |
download | chromium_src-3c2196b2ddfefbfa7887fb9ae223ad588c2a4ae7.zip chromium_src-3c2196b2ddfefbfa7887fb9ae223ad588c2a4ae7.tar.gz chromium_src-3c2196b2ddfefbfa7887fb9ae223ad588c2a4ae7.tar.bz2 |
Adds a new layer animation element which owns an interpolated transform. This allows more control over the interpolation, and in particular, it allows for a rotation about a pivot.
BUG=None
TEST=None
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=127269
Review URL: http://codereview.chromium.org/9704070
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127337 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/gfx/interpolated_transform.cc')
-rw-r--r-- | ui/gfx/interpolated_transform.cc | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/ui/gfx/interpolated_transform.cc b/ui/gfx/interpolated_transform.cc index b2669bb..6989fda 100644 --- a/ui/gfx/interpolated_transform.cc +++ b/ui/gfx/interpolated_transform.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -27,18 +27,22 @@ namespace ui { InterpolatedTransform::InterpolatedTransform() : start_time_(0.0f), - end_time_(1.0f) { + end_time_(1.0f), + reversed_(false) { } InterpolatedTransform::InterpolatedTransform(float start_time, float end_time) : start_time_(start_time), - end_time_(end_time) { + end_time_(end_time), + reversed_(false) { } InterpolatedTransform::~InterpolatedTransform() {} ui::Transform InterpolatedTransform::Interpolate(float t) const { + if (reversed_) + t = 1.0f - t; ui::Transform result = InterpolateButDoNotCompose(t); if (child_.get()) { result.ConcatTransform(child_->Interpolate(t)); @@ -158,6 +162,41 @@ ui::Transform InterpolatedRotation::InterpolateButDoNotCompose(float t) const { } /////////////////////////////////////////////////////////////////////////////// +// InterpolatedAxisAngleRotation +// + +InterpolatedAxisAngleRotation::InterpolatedAxisAngleRotation( + gfx::Point3f axis, + float start_degrees, + float end_degrees) + : InterpolatedTransform(), + axis_(axis), + start_degrees_(start_degrees), + end_degrees_(end_degrees) { +} + +InterpolatedAxisAngleRotation::InterpolatedAxisAngleRotation( + gfx::Point3f axis, + float start_degrees, + float end_degrees, + float start_time, + float end_time) + : InterpolatedTransform(start_time, end_time), + axis_(axis), + start_degrees_(start_degrees), + end_degrees_(end_degrees) { +} + +InterpolatedAxisAngleRotation::~InterpolatedAxisAngleRotation() {} + +ui::Transform +InterpolatedAxisAngleRotation::InterpolateButDoNotCompose(float t) const { + ui::Transform result; + result.SetRotateAbout(axis_, ValueBetween(t, start_degrees_, end_degrees_)); + return result; +} + +/////////////////////////////////////////////////////////////////////////////// // InterpolatedScale // |