animation_test_common.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "cc/test/animation_test_common.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/animation/animation_id_provider.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/keyframed_animation_curve.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/layer_animation_controller.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/transform_operations.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/layers/layer.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/layers/layer_impl.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using cc::Animation;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::AnimationCurve;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::EaseTimingFunction;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::FloatKeyframe;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::KeyframedFloatAnimationCurve;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::KeyframedTransformAnimationCurve;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::TimingFunction;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::TransformKeyframe;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class Target>
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddOpacityTransition(Target* target,
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         double duration,
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         float start_opacity,
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         float end_opacity,
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         bool use_timing_function) {
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<KeyframedFloatAnimationCurve>
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve(KeyframedFloatAnimationCurve::Create());
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<TimingFunction> func;
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!use_timing_function)
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    func = EaseTimingFunction::Create();
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (duration > 0.0)
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    curve->AddKeyframe(FloatKeyframe::Create(0.0, start_opacity, func.Pass()));
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  curve->AddKeyframe(FloatKeyframe::Create(duration,
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           end_opacity,
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           scoped_ptr<cc::TimingFunction>()));
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int id = AnimationIdProvider::NextAnimationId();
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<Animation> animation(Animation::Create(
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve.PassAs<AnimationCurve>(),
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      id,
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      AnimationIdProvider::NextGroupId(),
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      Animation::Opacity));
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  animation->set_needs_synchronized_start_time(true);
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  target->AddAnimation(animation.Pass());
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return id;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class Target>
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddAnimatedTransform(Target* target,
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         double duration,
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         int delta_x,
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         int delta_y) {
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<KeyframedTransformAnimationCurve>
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve(KeyframedTransformAnimationCurve::Create());
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (duration > 0.0) {
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    TransformOperations start_operations;
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    start_operations.AppendTranslate(delta_x, delta_y, 0.0);
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    curve->AddKeyframe(TransformKeyframe::Create(
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        0.0,
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        start_operations,
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        scoped_ptr<cc::TimingFunction>()));
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TransformOperations operations;
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  operations.AppendTranslate(delta_x, delta_y, 0.0);
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  curve->AddKeyframe(TransformKeyframe::Create(
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      duration,
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      operations,
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      scoped_ptr<cc::TimingFunction>()));
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int id = AnimationIdProvider::NextAnimationId();
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<Animation> animation(Animation::Create(
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve.PassAs<AnimationCurve>(),
84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      id,
85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      AnimationIdProvider::NextGroupId(),
86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      Animation::Transform));
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  animation->set_needs_synchronized_start_time(true);
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  target->AddAnimation(animation.Pass());
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return id;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)template <class Target>
944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)int AddAnimatedFilter(Target* target,
954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                      double duration,
964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                      float start_brightness,
974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                      float end_brightness) {
984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<KeyframedFilterAnimationCurve>
994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      curve(KeyframedFilterAnimationCurve::Create());
1004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (duration > 0.0) {
1024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    FilterOperations start_filters;
1034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    start_filters.Append(
1044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)        FilterOperation::CreateBrightnessFilter(start_brightness));
1054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    curve->AddKeyframe(FilterKeyframe::Create(
1064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)        0.0, start_filters, scoped_ptr<cc::TimingFunction>()));
1074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FilterOperations filters;
1104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  filters.Append(FilterOperation::CreateBrightnessFilter(end_brightness));
1114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  curve->AddKeyframe(FilterKeyframe::Create(
1124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      duration, filters, scoped_ptr<cc::TimingFunction>()));
1134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  int id = AnimationIdProvider::NextAnimationId();
1154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<Animation> animation(Animation::Create(
1174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      curve.PassAs<AnimationCurve>(),
1184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      id,
1194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      AnimationIdProvider::NextGroupId(),
1204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      Animation::Filter));
1214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  animation->set_needs_synchronized_start_time(true);
1224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  target->AddAnimation(animation.Pass());
1244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return id;
1254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
1264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatAnimationCurve::FakeFloatAnimationCurve()
128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(1.0) {}
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatAnimationCurve::FakeFloatAnimationCurve(double duration)
131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(duration) {}
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeFloatAnimationCurve::~FakeFloatAnimationCurve() {}
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeFloatAnimationCurve::Duration() const {
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return duration_;
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)float FakeFloatAnimationCurve::GetValue(double now) const {
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return 0.0f;
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<cc::AnimationCurve> FakeFloatAnimationCurve::Clone() const {
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return make_scoped_ptr(
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      new FakeFloatAnimationCurve).PassAs<cc::AnimationCurve>();
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeTransformTransition::FakeTransformTransition(double duration)
149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(duration) {}
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeTransformTransition::~FakeTransformTransition() {}
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeTransformTransition::Duration() const {
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return duration_;
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)gfx::Transform FakeTransformTransition::GetValue(double time) const {
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return gfx::Transform();
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)bool FakeTransformTransition::AnimatedBoundsForBox(const gfx::BoxF& box,
1623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                                   gfx::BoxF* bounds) const {
1633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  return false;
1643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}
1653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<cc::AnimationCurve> FakeTransformTransition::Clone() const {
1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return make_scoped_ptr(
1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      new FakeTransformTransition(*this)).PassAs<cc::AnimationCurve>();
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatTransition::FakeFloatTransition(double duration, float from, float to)
173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(duration), from_(from), to_(to) {}
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeFloatTransition::~FakeFloatTransition() {}
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeFloatTransition::Duration() const {
1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return duration_;
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)float FakeFloatTransition::GetValue(double time) const {
1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  time /= duration_;
1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (time >= 1.0)
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    time = 1.0;
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return (1.0 - time) * from_ + time * to_;
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FakeLayerAnimationValueObserver::FakeLayerAnimationValueObserver()
189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : opacity_(0.0f) {}
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeLayerAnimationValueObserver::~FakeLayerAnimationValueObserver() {}
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnFilterAnimated(
1944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    const FilterOperations& filters) {
1954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  filters_ = filters;
1964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
1974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnOpacityAnimated(float opacity) {
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  opacity_ = opacity;
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnTransformAnimated(
2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const gfx::Transform& transform) {
2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  transform_ = transform;
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool FakeLayerAnimationValueObserver::IsActive() const {
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return true;
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool FakeInactiveLayerAnimationValueObserver::IsActive() const {
21290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return false;
21390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
21490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<cc::AnimationCurve> FakeFloatTransition::Clone() const {
2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return make_scoped_ptr(
2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      new FakeFloatTransition(*this)).PassAs<cc::AnimationCurve>();
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddOpacityTransitionToController(cc::LayerAnimationController* controller,
2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     double duration,
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     float start_opacity,
2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     float end_opacity,
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     bool use_timing_function) {
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddOpacityTransition(controller,
2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              start_opacity,
2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              end_opacity,
2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              use_timing_function);
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddAnimatedTransformToController(cc::LayerAnimationController* controller,
2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     double duration,
2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     int delta_x,
2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     int delta_y) {
2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddAnimatedTransform(controller,
2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_x,
2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_y);
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)int AddAnimatedFilterToController(cc::LayerAnimationController* controller,
2434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                  double duration,
2444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                  float start_brightness,
2454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                  float end_brightness) {
2464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return AddAnimatedFilter(
2474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      controller, duration, start_brightness, end_brightness);
2484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
2494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddOpacityTransitionToLayer(cc::Layer* layer,
2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float start_opacity,
2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float end_opacity,
2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                bool use_timing_function) {
2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddOpacityTransition(layer,
2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              start_opacity,
2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              end_opacity,
2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              use_timing_function);
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddOpacityTransitionToLayer(cc::LayerImpl* layer,
2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float start_opacity,
2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float end_opacity,
2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                bool use_timing_function) {
2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddOpacityTransition(layer->layer_animation_controller(),
2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              start_opacity,
2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              end_opacity,
2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              use_timing_function);
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddAnimatedTransformToLayer(cc::Layer* layer,
2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_x,
2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_y) {
2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddAnimatedTransform(layer, duration, delta_x, delta_y);
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddAnimatedTransformToLayer(cc::LayerImpl* layer,
2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_x,
2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_y) {
2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddAnimatedTransform(layer->layer_animation_controller(),
2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_x,
2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_y);
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)int AddAnimatedFilterToLayer(cc::Layer* layer,
2924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             double duration,
2934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             float start_brightness,
2944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             float end_brightness) {
2954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return AddAnimatedFilter(layer, duration, start_brightness, end_brightness);
2964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
2974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)int AddAnimatedFilterToLayer(cc::LayerImpl* layer,
2994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             double duration,
3004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             float start_brightness,
3014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             float end_brightness) {
3024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return AddAnimatedFilter(layer->layer_animation_controller(),
3034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           duration,
3044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           start_brightness,
3054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           end_brightness);
3064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
3074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace cc
309