animation_test_common.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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) 171a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)scoped_ptr<AnimationCurve> FakeTransformTransition::Clone() const { 172a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return make_scoped_ptr(new FakeTransformTransition(*this)) 173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) .PassAs<AnimationCurve>(); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatTransition::FakeFloatTransition(double duration, float from, float to) 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : duration_(duration), from_(from), to_(to) {} 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeFloatTransition::~FakeFloatTransition() {} 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeFloatTransition::Duration() const { 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return duration_; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)float FakeFloatTransition::GetValue(double time) const { 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) time /= duration_; 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (time >= 1.0) 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) time = 1.0; 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return (1.0 - time) * from_ + time * to_; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FakeLayerAnimationValueObserver::FakeLayerAnimationValueObserver() 194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : opacity_(0.0f), 195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) animation_waiting_for_deletion_(false) {} 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeLayerAnimationValueObserver::~FakeLayerAnimationValueObserver() {} 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnFilterAnimated( 2004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const FilterOperations& filters) { 2014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) filters_ = filters; 2024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 2034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnOpacityAnimated(float opacity) { 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) opacity_ = opacity; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnTransformAnimated( 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Transform& transform) { 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) transform_ = transform; 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 213a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void FakeLayerAnimationValueObserver::OnScrollOffsetAnimated( 2145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Vector2dF& scroll_offset) { 215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scroll_offset_ = scroll_offset; 216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 217a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 218f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnAnimationWaitingForDeletion() { 219f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) animation_waiting_for_deletion_ = true; 220f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 221f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool FakeLayerAnimationValueObserver::IsActive() const { 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return true; 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool FakeInactiveLayerAnimationValueObserver::IsActive() const { 22790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return false; 22890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 22990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 230a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)gfx::Vector2dF FakeLayerAnimationValueProvider::ScrollOffsetForAnimation() 231a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const { 232a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return scroll_offset_; 233a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 234a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 235a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)scoped_ptr<AnimationCurve> FakeFloatTransition::Clone() const { 236a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return make_scoped_ptr(new FakeFloatTransition(*this)) 237a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) .PassAs<AnimationCurve>(); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 240a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddOpacityTransitionToController(LayerAnimationController* controller, 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float start_opacity, 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float end_opacity, 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool use_timing_function) { 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddOpacityTransition(controller, 2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration, 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) start_opacity, 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) end_opacity, 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) use_timing_function); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 252a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedTransformToController(LayerAnimationController* controller, 2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_x, 2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_y) { 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddAnimatedTransform(controller, 2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration, 2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delta_x, 2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delta_y); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 262a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedFilterToController(LayerAnimationController* controller, 2634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) double duration, 2644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float start_brightness, 2654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float end_brightness) { 2664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return AddAnimatedFilter( 2674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) controller, duration, start_brightness, end_brightness); 2684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 2694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 270a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddOpacityTransitionToLayer(Layer* layer, 2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float start_opacity, 2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float end_opacity, 2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool use_timing_function) { 2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddOpacityTransition(layer, 2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration, 2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) start_opacity, 2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) end_opacity, 2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) use_timing_function); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 282a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddOpacityTransitionToLayer(LayerImpl* layer, 2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float start_opacity, 2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float end_opacity, 2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool use_timing_function) { 2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddOpacityTransition(layer->layer_animation_controller(), 2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration, 2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) start_opacity, 2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) end_opacity, 2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) use_timing_function); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 294a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedTransformToLayer(Layer* layer, 2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_x, 2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_y) { 2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddAnimatedTransform(layer, duration, delta_x, delta_y); 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 301a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedTransformToLayer(LayerImpl* layer, 3022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 3032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_x, 3042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_y) { 3052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddAnimatedTransform(layer->layer_animation_controller(), 3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration, 3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delta_x, 3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delta_y); 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int AddAnimatedTransformToLayer(LayerImpl* layer, 3125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) double duration, 3135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) TransformOperations start_operations, 3145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) TransformOperations operations) { 3155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return AddAnimatedTransform(layer->layer_animation_controller(), 3165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) duration, 3175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) start_operations, 3185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) operations); 3195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 3205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 321a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedFilterToLayer(Layer* layer, 3224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) double duration, 3234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float start_brightness, 3244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float end_brightness) { 3254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return AddAnimatedFilter(layer, duration, start_brightness, end_brightness); 3264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 3274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 328a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedFilterToLayer(LayerImpl* layer, 3294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) double duration, 3304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float start_brightness, 3314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float end_brightness) { 3324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return AddAnimatedFilter(layer->layer_animation_controller(), 3334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) duration, 3344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) start_brightness, 3354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) end_brightness); 3364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 3374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 3382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 339