Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Unified Diff: ui/compositor/transform_animation_curve_adapter.cc

Issue 2971503002: Transform animations should not collapse by default when interpolating (Closed)
Patch Set: try again Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/compositor/transform_animation_curve_adapter.cc
diff --git a/ui/compositor/transform_animation_curve_adapter.cc b/ui/compositor/transform_animation_curve_adapter.cc
index e698be64f4d1c4fc9db328bc9dbd31baebfe01e2..a73540f2467912248e1e612a24dd40d6e5917458 100644
--- a/ui/compositor/transform_animation_curve_adapter.cc
+++ b/ui/compositor/transform_animation_curve_adapter.cc
@@ -9,6 +9,16 @@
namespace ui {
+namespace {
+
+static cc::TransformOperations wrapTransform(const gfx::Transform& transform) {
ajuma 2017/07/04 14:50:56 nit: capitalize function name
Ian Vollick 2017/07/04 16:15:18 Done.
+ cc::TransformOperations operations;
+ operations.AppendMatrix(transform);
+ return operations;
+}
+
+} // namespace
+
TransformAnimationCurveAdapter::TransformAnimationCurveAdapter(
gfx::Tween::Type tween_type,
gfx::Transform initial_value,
@@ -38,18 +48,19 @@ std::unique_ptr<cc::AnimationCurve> TransformAnimationCurveAdapter::Clone()
tween_type_, initial_value_, target_value_, duration_));
}
-gfx::Transform TransformAnimationCurveAdapter::GetValue(
+cc::TransformOperations TransformAnimationCurveAdapter::GetValue(
base::TimeDelta t) const {
if (t >= duration_)
- return target_value_;
+ return wrapTransform(target_value_);
if (t <= base::TimeDelta())
- return initial_value_;
+ return wrapTransform(initial_value_);
double progress = cc::TimeUtil::Divide(t, duration_);
gfx::DecomposedTransform to_return = gfx::BlendDecomposedTransforms(
decomposed_target_value_, decomposed_initial_value_,
gfx::Tween::CalculateValue(tween_type_, progress));
- return gfx::ComposeTransform(to_return);
+
+ return wrapTransform(gfx::ComposeTransform(to_return));
}
bool TransformAnimationCurveAdapter::AnimatedBoundsForBox(
@@ -92,7 +103,7 @@ InverseTransformCurveAdapter::InverseTransformCurveAdapter(
initial_value_(initial_value),
duration_(duration) {
effective_initial_value_ =
- base_curve_.GetValue(base::TimeDelta()) * initial_value_;
+ base_curve_.GetValue(base::TimeDelta()).Apply() * initial_value_;
}
InverseTransformCurveAdapter::~InverseTransformCurveAdapter() {
@@ -108,18 +119,20 @@ std::unique_ptr<cc::AnimationCurve> InverseTransformCurveAdapter::Clone()
new InverseTransformCurveAdapter(base_curve_, initial_value_, duration_));
}
-gfx::Transform InverseTransformCurveAdapter::GetValue(base::TimeDelta t) const {
+cc::TransformOperations InverseTransformCurveAdapter::GetValue(
+ base::TimeDelta t) const {
if (t <= base::TimeDelta())
- return initial_value_;
+ return wrapTransform(initial_value_);
- gfx::Transform base_transform = base_curve_.GetValue(t);
+ gfx::Transform base_transform = base_curve_.GetValue(t).Apply();
// Invert base
gfx::Transform to_return(gfx::Transform::kSkipInitialization);
bool is_invertible = base_transform.GetInverse(&to_return);
DCHECK(is_invertible);
to_return.PreconcatTransform(effective_initial_value_);
- return to_return;
+
+ return wrapTransform(to_return);
}
bool InverseTransformCurveAdapter::AnimatedBoundsForBox(

Powered by Google App Engine
This is Rietveld 408576698