animation_test_common.cc revision e5d81f57cb97b3b6b7fccc9c5610d21eb81db09d
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()));
39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  curve->AddKeyframe(FloatKeyframe::Create(
40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      duration, end_opacity, scoped_ptr<TimingFunction>()));
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int id = AnimationIdProvider::NextAnimationId();
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<Animation> animation(Animation::Create(
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve.PassAs<AnimationCurve>(),
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      id,
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      AnimationIdProvider::NextGroupId(),
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      Animation::Opacity));
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  animation->set_needs_synchronized_start_time(true);
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  target->AddAnimation(animation.Pass());
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return id;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class Target>
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddAnimatedTransform(Target* target,
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         double duration,
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                         TransformOperations start_operations,
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                         TransformOperations operations) {
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<KeyframedTransformAnimationCurve>
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve(KeyframedTransformAnimationCurve::Create());
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (duration > 0.0) {
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    curve->AddKeyframe(TransformKeyframe::Create(
65a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        0.0, start_operations, scoped_ptr<TimingFunction>()));
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  curve->AddKeyframe(TransformKeyframe::Create(
69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      duration, operations, scoped_ptr<TimingFunction>()));
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int id = AnimationIdProvider::NextAnimationId();
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<Animation> animation(Animation::Create(
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve.PassAs<AnimationCurve>(),
75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      id,
76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      AnimationIdProvider::NextGroupId(),
77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      Animation::Transform));
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  animation->set_needs_synchronized_start_time(true);
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  target->AddAnimation(animation.Pass());
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return id;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)template <class Target>
855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int AddAnimatedTransform(Target* target,
865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                         double duration,
875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                         int delta_x,
885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                         int delta_y) {
895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  TransformOperations start_operations;
905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  if (duration > 0.0) {
915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    start_operations.AppendTranslate(delta_x, delta_y, 0.0);
925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  TransformOperations operations;
955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  operations.AppendTranslate(delta_x, delta_y, 0.0);
965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return AddAnimatedTransform(target, duration, start_operations, operations);
975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)template <class Target>
1004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)int AddAnimatedFilter(Target* target,
1014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                      double duration,
1024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                      float start_brightness,
1034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                      float end_brightness) {
1044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<KeyframedFilterAnimationCurve>
1054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      curve(KeyframedFilterAnimationCurve::Create());
1064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (duration > 0.0) {
1084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    FilterOperations start_filters;
1094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    start_filters.Append(
1104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)        FilterOperation::CreateBrightnessFilter(start_brightness));
1114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    curve->AddKeyframe(FilterKeyframe::Create(
112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        0.0, start_filters, scoped_ptr<TimingFunction>()));
1134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
1144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FilterOperations filters;
1164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  filters.Append(FilterOperation::CreateBrightnessFilter(end_brightness));
117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  curve->AddKeyframe(
118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      FilterKeyframe::Create(duration, filters, scoped_ptr<TimingFunction>()));
1194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  int id = AnimationIdProvider::NextAnimationId();
1214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<Animation> animation(Animation::Create(
1234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      curve.PassAs<AnimationCurve>(),
1244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      id,
1254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      AnimationIdProvider::NextGroupId(),
1264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      Animation::Filter));
1274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  animation->set_needs_synchronized_start_time(true);
1284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  target->AddAnimation(animation.Pass());
1304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return id;
1314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
1324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatAnimationCurve::FakeFloatAnimationCurve()
134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(1.0) {}
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatAnimationCurve::FakeFloatAnimationCurve(double duration)
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(duration) {}
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeFloatAnimationCurve::~FakeFloatAnimationCurve() {}
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeFloatAnimationCurve::Duration() const {
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return duration_;
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)float FakeFloatAnimationCurve::GetValue(double now) const {
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return 0.0f;
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
149a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)scoped_ptr<AnimationCurve> FakeFloatAnimationCurve::Clone() const {
150a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return make_scoped_ptr(new FakeFloatAnimationCurve).PassAs<AnimationCurve>();
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeTransformTransition::FakeTransformTransition(double duration)
154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(duration) {}
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeTransformTransition::~FakeTransformTransition() {}
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeTransformTransition::Duration() const {
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return duration_;
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)gfx::Transform FakeTransformTransition::GetValue(double time) const {
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return gfx::Transform();
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)bool FakeTransformTransition::AnimatedBoundsForBox(const gfx::BoxF& box,
1673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                                   gfx::BoxF* bounds) const {
1683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  return false;
1693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}
1703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
171e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochbool FakeTransformTransition::AffectsScale() const { return false; }
172e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch
173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)scoped_ptr<AnimationCurve> FakeTransformTransition::Clone() const {
174a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return make_scoped_ptr(new FakeTransformTransition(*this))
175a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      .PassAs<AnimationCurve>();
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatTransition::FakeFloatTransition(double duration, float from, float to)
180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(duration), from_(from), to_(to) {}
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeFloatTransition::~FakeFloatTransition() {}
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeFloatTransition::Duration() const {
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return duration_;
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)float FakeFloatTransition::GetValue(double time) const {
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  time /= duration_;
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (time >= 1.0)
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    time = 1.0;
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return (1.0 - time) * from_ + time * to_;
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FakeLayerAnimationValueObserver::FakeLayerAnimationValueObserver()
196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    : opacity_(0.0f),
197f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      animation_waiting_for_deletion_(false) {}
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeLayerAnimationValueObserver::~FakeLayerAnimationValueObserver() {}
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnFilterAnimated(
2024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    const FilterOperations& filters) {
2034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  filters_ = filters;
2044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
2054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnOpacityAnimated(float opacity) {
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  opacity_ = opacity;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnTransformAnimated(
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const gfx::Transform& transform) {
2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  transform_ = transform;
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void FakeLayerAnimationValueObserver::OnScrollOffsetAnimated(
2165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    const gfx::Vector2dF& scroll_offset) {
217a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  scroll_offset_ = scroll_offset;
218a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
219a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
220f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnAnimationWaitingForDeletion() {
221f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  animation_waiting_for_deletion_ = true;
222f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
223f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool FakeLayerAnimationValueObserver::IsActive() const {
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return true;
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool FakeInactiveLayerAnimationValueObserver::IsActive() const {
22990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return false;
23090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
23190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
232a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)gfx::Vector2dF FakeLayerAnimationValueProvider::ScrollOffsetForAnimation()
233a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    const {
234a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return scroll_offset_;
235a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
236a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
237a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)scoped_ptr<AnimationCurve> FakeFloatTransition::Clone() const {
238a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return make_scoped_ptr(new FakeFloatTransition(*this))
239a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      .PassAs<AnimationCurve>();
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
242a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddOpacityTransitionToController(LayerAnimationController* controller,
2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     double duration,
2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     float start_opacity,
2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     float end_opacity,
2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     bool use_timing_function) {
2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddOpacityTransition(controller,
2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              start_opacity,
2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              end_opacity,
2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              use_timing_function);
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
254a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedTransformToController(LayerAnimationController* controller,
2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     double duration,
2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     int delta_x,
2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     int delta_y) {
2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddAnimatedTransform(controller,
2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_x,
2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_y);
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
264a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedFilterToController(LayerAnimationController* controller,
2654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                  double duration,
2664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                  float start_brightness,
2674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                  float end_brightness) {
2684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return AddAnimatedFilter(
2694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      controller, duration, start_brightness, end_brightness);
2704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
2714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
272a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddOpacityTransitionToLayer(Layer* layer,
2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float start_opacity,
2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float end_opacity,
2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                bool use_timing_function) {
2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddOpacityTransition(layer,
2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              start_opacity,
2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              end_opacity,
2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              use_timing_function);
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
284a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddOpacityTransitionToLayer(LayerImpl* layer,
2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float start_opacity,
2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float end_opacity,
2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                bool use_timing_function) {
2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddOpacityTransition(layer->layer_animation_controller(),
2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              start_opacity,
2922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              end_opacity,
2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              use_timing_function);
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
296a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedTransformToLayer(Layer* layer,
2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_x,
2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_y) {
3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddAnimatedTransform(layer, duration, delta_x, delta_y);
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
303a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedTransformToLayer(LayerImpl* layer,
3042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
3052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_x,
3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_y) {
3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddAnimatedTransform(layer->layer_animation_controller(),
3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
3092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_x,
3102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_y);
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int AddAnimatedTransformToLayer(LayerImpl* layer,
3145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                double duration,
3155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                TransformOperations start_operations,
3165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                TransformOperations operations) {
3175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return AddAnimatedTransform(layer->layer_animation_controller(),
3185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                              duration,
3195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                              start_operations,
3205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                              operations);
3215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
3225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
323a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedFilterToLayer(Layer* layer,
3244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             double duration,
3254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             float start_brightness,
3264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             float end_brightness) {
3274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return AddAnimatedFilter(layer, duration, start_brightness, end_brightness);
3284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
3294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
330a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedFilterToLayer(LayerImpl* layer,
3314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             double duration,
3324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             float start_brightness,
3334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                             float end_brightness) {
3344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return AddAnimatedFilter(layer->layer_animation_controller(),
3354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           duration,
3364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           start_brightness,
3374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                           end_brightness);
3384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
3394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
3402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace cc
341