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 173c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochbool FakeTransformTransition::IsTranslation() const { return true; } 174c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 1751675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdochbool FakeTransformTransition::MaximumTargetScale(bool forward_direction, 1761675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch float* max_scale) const { 177c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch *max_scale = 1.f; 178c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return true; 179c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 180c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 181a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)scoped_ptr<AnimationCurve> FakeTransformTransition::Clone() const { 182a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return make_scoped_ptr(new FakeTransformTransition(*this)) 183a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) .PassAs<AnimationCurve>(); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatTransition::FakeFloatTransition(double duration, float from, float to) 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : duration_(duration), from_(from), to_(to) {} 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeFloatTransition::~FakeFloatTransition() {} 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeFloatTransition::Duration() const { 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return duration_; 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)float FakeFloatTransition::GetValue(double time) const { 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) time /= duration_; 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (time >= 1.0) 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) time = 1.0; 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return (1.0 - time) * from_ + time * to_; 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FakeLayerAnimationValueObserver::FakeLayerAnimationValueObserver() 204f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : opacity_(0.0f), 205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) animation_waiting_for_deletion_(false) {} 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeLayerAnimationValueObserver::~FakeLayerAnimationValueObserver() {} 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnFilterAnimated( 2104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const FilterOperations& filters) { 2114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) filters_ = filters; 2124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 2134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnOpacityAnimated(float opacity) { 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) opacity_ = opacity; 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnTransformAnimated( 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Transform& transform) { 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) transform_ = transform; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 223a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void FakeLayerAnimationValueObserver::OnScrollOffsetAnimated( 2245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Vector2dF& scroll_offset) { 225a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scroll_offset_ = scroll_offset; 226a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 227a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnAnimationWaitingForDeletion() { 229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) animation_waiting_for_deletion_ = true; 230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 231f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool FakeLayerAnimationValueObserver::IsActive() const { 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return true; 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool FakeInactiveLayerAnimationValueObserver::IsActive() const { 23790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return false; 23890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 23990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 240a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)gfx::Vector2dF FakeLayerAnimationValueProvider::ScrollOffsetForAnimation() 241a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const { 242a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return scroll_offset_; 243a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 244a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 245a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)scoped_ptr<AnimationCurve> FakeFloatTransition::Clone() const { 246a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return make_scoped_ptr(new FakeFloatTransition(*this)) 247a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) .PassAs<AnimationCurve>(); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 250a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddOpacityTransitionToController(LayerAnimationController* controller, 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(controller, 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) 262a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedTransformToController(LayerAnimationController* controller, 2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_x, 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_y) { 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddAnimatedTransform(controller, 2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration, 2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delta_x, 2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delta_y); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 272a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedFilterToController(LayerAnimationController* controller, 2734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) double duration, 2744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float start_brightness, 2754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float end_brightness) { 2764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return AddAnimatedFilter( 2774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) controller, duration, start_brightness, end_brightness); 2784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 2794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 280a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddOpacityTransitionToLayer(Layer* layer, 2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float start_opacity, 2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float end_opacity, 2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool use_timing_function) { 2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddOpacityTransition(layer, 2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration, 2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) start_opacity, 2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) end_opacity, 2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) use_timing_function); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 292a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddOpacityTransitionToLayer(LayerImpl* layer, 2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 2942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float start_opacity, 2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float end_opacity, 2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool use_timing_function) { 2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddOpacityTransition(layer->layer_animation_controller(), 2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration, 2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) start_opacity, 3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) end_opacity, 3012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) use_timing_function); 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 304a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedTransformToLayer(Layer* layer, 3052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_x, 3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_y) { 3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddAnimatedTransform(layer, duration, delta_x, delta_y); 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 311a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedTransformToLayer(LayerImpl* layer, 3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double duration, 3132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_x, 3142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int delta_y) { 3152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return AddAnimatedTransform(layer->layer_animation_controller(), 3162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) duration, 3172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delta_x, 3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delta_y); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 321c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochint AddAnimatedTransformToLayer(Layer* layer, 322c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch double duration, 323c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch TransformOperations start_operations, 324c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch TransformOperations operations) { 325c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return AddAnimatedTransform(layer, duration, start_operations, operations); 326c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 327c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 3285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int AddAnimatedTransformToLayer(LayerImpl* layer, 3295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) double duration, 3305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) TransformOperations start_operations, 3315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) TransformOperations operations) { 3325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return AddAnimatedTransform(layer->layer_animation_controller(), 3335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) duration, 3345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) start_operations, 3355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) operations); 3365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 3375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 338a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedFilterToLayer(Layer* layer, 3394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) double duration, 3404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float start_brightness, 3414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float end_brightness) { 3424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return AddAnimatedFilter(layer, duration, start_brightness, end_brightness); 3434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 3444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 345a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int AddAnimatedFilterToLayer(LayerImpl* layer, 3464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) double duration, 3474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float start_brightness, 3484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) float end_brightness) { 3494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return AddAnimatedFilter(layer->layer_animation_controller(), 3504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) duration, 3514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) start_brightness, 3524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) end_brightness); 3534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 3544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 3552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 356