animation_test_common.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "cc/keyframed_animation_curve.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "cc/layer.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "cc/layer_animation_controller.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "cc/layer_impl.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <public/WebTransformOperations.h> 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::ActiveAnimation; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::AnimationCurve; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::EaseTimingFunction; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::FloatKeyframe; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::KeyframedFloatAnimationCurve; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::KeyframedTransformAnimationCurve; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::TimingFunction; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::TransformKeyframe; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int nextAnimationId = 0; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class Target> 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int addOpacityTransition(Target& target, double duration, float startOpacity, float endOpacity, bool useTimingFunction) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<KeyframedFloatAnimationCurve> curve(KeyframedFloatAnimationCurve::create()); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TimingFunction> func; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!useTimingFunction) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) func = EaseTimingFunction::create(); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (duration > 0) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) curve->addKeyframe(FloatKeyframe::create(0, startOpacity, func.Pass())); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) curve->addKeyframe(FloatKeyframe::create(duration, endOpacity, scoped_ptr<cc::TimingFunction>())); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int id = nextAnimationId++; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<ActiveAnimation> animation(ActiveAnimation::create(curve.PassAs<AnimationCurve>(), id, 0, ActiveAnimation::Opacity)); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) animation->setNeedsSynchronizedStartTime(true); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target.addAnimation(animation.Pass()); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return id; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class Target> 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int addAnimatedTransform(Target& target, double duration, int deltaX, int deltaY) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<KeyframedTransformAnimationCurve> curve(KeyframedTransformAnimationCurve::create()); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (duration > 0) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebTransformOperations startOperations; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) startOperations.appendTranslate(deltaX, deltaY, 0); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) curve->addKeyframe(TransformKeyframe::create(0, startOperations, scoped_ptr<cc::TimingFunction>())); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebTransformOperations operations; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) operations.appendTranslate(deltaX, deltaY, 0); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) curve->addKeyframe(TransformKeyframe::create(duration, operations, scoped_ptr<cc::TimingFunction>())); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int id = nextAnimationId++; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<ActiveAnimation> animation(ActiveAnimation::create(curve.PassAs<AnimationCurve>(), id, 0, ActiveAnimation::Transform)); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) animation->setNeedsSynchronizedStartTime(true); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) target.addAnimation(animation.Pass()); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return id; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace WebKitTests { 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatAnimationCurve::FakeFloatAnimationCurve() 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : m_duration(1) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatAnimationCurve::FakeFloatAnimationCurve(double duration) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : m_duration(duration) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatAnimationCurve::~FakeFloatAnimationCurve() 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double FakeFloatAnimationCurve::duration() const 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_duration; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)float FakeFloatAnimationCurve::getValue(double now) const 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)scoped_ptr<cc::AnimationCurve> FakeFloatAnimationCurve::clone() const 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return make_scoped_ptr(new FakeFloatAnimationCurve).PassAs<cc::AnimationCurve>(); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeTransformTransition::FakeTransformTransition(double duration) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : m_duration(duration) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeTransformTransition::~FakeTransformTransition() 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double FakeTransformTransition::duration() const 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_duration; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebKit::WebTransformationMatrix FakeTransformTransition::getValue(double time) const 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return WebKit::WebTransformationMatrix(); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)scoped_ptr<cc::AnimationCurve> FakeTransformTransition::clone() const 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return make_scoped_ptr(new FakeTransformTransition(*this)).PassAs<cc::AnimationCurve>(); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatTransition::FakeFloatTransition(double duration, float from, float to) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : m_duration(duration) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) , m_from(from) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) , m_to(to) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatTransition::~FakeFloatTransition() 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double FakeFloatTransition::duration() const 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_duration; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)float FakeFloatTransition::getValue(double time) const 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) time /= m_duration; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (time >= 1) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) time = 1; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (1 - time) * m_from + time * m_to; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeLayerAnimationControllerClient::FakeLayerAnimationControllerClient() 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : m_opacity(0) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeLayerAnimationControllerClient::~FakeLayerAnimationControllerClient() 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int FakeLayerAnimationControllerClient::id() const 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FakeLayerAnimationControllerClient::setOpacityFromAnimation(float opacity) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_opacity = opacity; 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)float FakeLayerAnimationControllerClient::opacity() const 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_opacity; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FakeLayerAnimationControllerClient::setTransformFromAnimation(const WebKit::WebTransformationMatrix& transform) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_transform = transform; 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const WebKit::WebTransformationMatrix& FakeLayerAnimationControllerClient::transform() const 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_transform; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)scoped_ptr<cc::AnimationCurve> FakeFloatTransition::clone() const 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return make_scoped_ptr(new FakeFloatTransition(*this)).PassAs<cc::AnimationCurve>(); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int addOpacityTransitionToController(cc::LayerAnimationController& controller, double duration, float startOpacity, float endOpacity, bool useTimingFunction) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return addOpacityTransition(controller, duration, startOpacity, endOpacity, useTimingFunction); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int addAnimatedTransformToController(cc::LayerAnimationController& controller, double duration, int deltaX, int deltaY) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return addAnimatedTransform(controller, duration, deltaX, deltaY); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int addOpacityTransitionToLayer(cc::Layer& layer, double duration, float startOpacity, float endOpacity, bool useTimingFunction) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return addOpacityTransition(layer, duration, startOpacity, endOpacity, useTimingFunction); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int addOpacityTransitionToLayer(cc::LayerImpl& layer, double duration, float startOpacity, float endOpacity, bool useTimingFunction) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return addOpacityTransition(*layer.layerAnimationController(), duration, startOpacity, endOpacity, useTimingFunction); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int addAnimatedTransformToLayer(cc::Layer& layer, double duration, int deltaX, int deltaY) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return addAnimatedTransform(layer, duration, deltaX, deltaY); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int addAnimatedTransformToLayer(cc::LayerImpl& layer, double duration, int deltaX, int deltaY) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return addAnimatedTransform(*layer.layerAnimationController(), duration, deltaX, deltaY); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace WebKitTests 223