animation_test_common.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "cc/test/animation_test_common.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/animation/animation_id_provider.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/keyframed_animation_curve.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/layer_animation_controller.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/transform_operations.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/layers/layer.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/layers/layer_impl.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using cc::Animation;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::AnimationCurve;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::EaseTimingFunction;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::FloatKeyframe;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::KeyframedFloatAnimationCurve;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::KeyframedTransformAnimationCurve;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::TimingFunction;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using cc::TransformKeyframe;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class Target>
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddOpacityTransition(Target* target,
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         double duration,
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         float start_opacity,
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         float end_opacity,
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         bool use_timing_function) {
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<KeyframedFloatAnimationCurve>
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve(KeyframedFloatAnimationCurve::Create());
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<TimingFunction> func;
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!use_timing_function)
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    func = EaseTimingFunction::Create();
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (duration > 0.0)
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    curve->AddKeyframe(FloatKeyframe::Create(0.0, start_opacity, func.Pass()));
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  curve->AddKeyframe(FloatKeyframe::Create(duration,
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           end_opacity,
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           scoped_ptr<cc::TimingFunction>()));
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int id = AnimationIdProvider::NextAnimationId();
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<Animation> animation(Animation::Create(
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve.PassAs<AnimationCurve>(),
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      id,
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      AnimationIdProvider::NextGroupId(),
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      Animation::Opacity));
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  animation->set_needs_synchronized_start_time(true);
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  target->AddAnimation(animation.Pass());
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return id;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class Target>
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddAnimatedTransform(Target* target,
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         double duration,
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         int delta_x,
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         int delta_y) {
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<KeyframedTransformAnimationCurve>
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve(KeyframedTransformAnimationCurve::Create());
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (duration > 0.0) {
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    TransformOperations start_operations;
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    start_operations.AppendTranslate(delta_x, delta_y, 0.0);
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    curve->AddKeyframe(TransformKeyframe::Create(
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        0.0,
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        start_operations,
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        scoped_ptr<cc::TimingFunction>()));
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TransformOperations operations;
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  operations.AppendTranslate(delta_x, delta_y, 0.0);
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  curve->AddKeyframe(TransformKeyframe::Create(
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      duration,
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      operations,
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      scoped_ptr<cc::TimingFunction>()));
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int id = AnimationIdProvider::NextAnimationId();
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<Animation> animation(Animation::Create(
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      curve.PassAs<AnimationCurve>(),
84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      id,
85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      AnimationIdProvider::NextGroupId(),
86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      Animation::Transform));
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  animation->set_needs_synchronized_start_time(true);
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  target->AddAnimation(animation.Pass());
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return id;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatAnimationCurve::FakeFloatAnimationCurve()
94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(1.0) {}
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatAnimationCurve::FakeFloatAnimationCurve(double duration)
97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(duration) {}
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeFloatAnimationCurve::~FakeFloatAnimationCurve() {}
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeFloatAnimationCurve::Duration() const {
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return duration_;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)float FakeFloatAnimationCurve::GetValue(double now) const {
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return 0.0f;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<cc::AnimationCurve> FakeFloatAnimationCurve::Clone() const {
1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return make_scoped_ptr(
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      new FakeFloatAnimationCurve).PassAs<cc::AnimationCurve>();
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeTransformTransition::FakeTransformTransition(double duration)
115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(duration) {}
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeTransformTransition::~FakeTransformTransition() {}
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeTransformTransition::Duration() const {
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return duration_;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)gfx::Transform FakeTransformTransition::GetValue(double time) const {
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return gfx::Transform();
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<cc::AnimationCurve> FakeTransformTransition::Clone() const {
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return make_scoped_ptr(
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      new FakeTransformTransition(*this)).PassAs<cc::AnimationCurve>();
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FakeFloatTransition::FakeFloatTransition(double duration, float from, float to)
134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : duration_(duration), from_(from), to_(to) {}
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeFloatTransition::~FakeFloatTransition() {}
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)double FakeFloatTransition::Duration() const {
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return duration_;
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)float FakeFloatTransition::GetValue(double time) const {
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  time /= duration_;
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (time >= 1.0)
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    time = 1.0;
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return (1.0 - time) * from_ + time * to_;
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FakeLayerAnimationValueObserver::FakeLayerAnimationValueObserver()
150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : opacity_(0.0f) {}
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)FakeLayerAnimationValueObserver::~FakeLayerAnimationValueObserver() {}
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnOpacityAnimated(float opacity) {
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  opacity_ = opacity;
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FakeLayerAnimationValueObserver::OnTransformAnimated(
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const gfx::Transform& transform) {
1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  transform_ = transform;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool FakeLayerAnimationValueObserver::IsActive() const {
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return true;
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<cc::AnimationCurve> FakeFloatTransition::Clone() const {
1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return make_scoped_ptr(
1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      new FakeFloatTransition(*this)).PassAs<cc::AnimationCurve>();
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddOpacityTransitionToController(cc::LayerAnimationController* controller,
1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     double duration,
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     float start_opacity,
1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     float end_opacity,
1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     bool use_timing_function) {
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddOpacityTransition(controller,
1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              start_opacity,
1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              end_opacity,
1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              use_timing_function);
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddAnimatedTransformToController(cc::LayerAnimationController* controller,
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     double duration,
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     int delta_x,
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     int delta_y) {
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddAnimatedTransform(controller,
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_x,
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_y);
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddOpacityTransitionToLayer(cc::Layer* layer,
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float start_opacity,
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float end_opacity,
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                bool use_timing_function) {
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddOpacityTransition(layer,
2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              start_opacity,
2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              end_opacity,
2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              use_timing_function);
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddOpacityTransitionToLayer(cc::LayerImpl* layer,
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float start_opacity,
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                float end_opacity,
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                bool use_timing_function) {
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddOpacityTransition(layer->layer_animation_controller(),
2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              start_opacity,
2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              end_opacity,
2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              use_timing_function);
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddAnimatedTransformToLayer(cc::Layer* layer,
2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_x,
2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_y) {
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddAnimatedTransform(layer, duration, delta_x, delta_y);
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int AddAnimatedTransformToLayer(cc::LayerImpl* layer,
2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                double duration,
2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_x,
2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int delta_y) {
2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return AddAnimatedTransform(layer->layer_animation_controller(),
2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              duration,
2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_x,
2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              delta_y);
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace cc
236