1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "webkit/renderer/compositor_bindings/web_transform_animation_curve_impl.h"
7 #include "cc/animation/keyframed_animation_curve.h"
8 #include "cc/animation/timing_function.h"
9 #include "cc/animation/transform_operations.h"
10 #include "webkit/renderer/compositor_bindings/web_animation_curve_common.h"
11 #include "webkit/renderer/compositor_bindings/web_transform_operations_impl.h"
13 using blink::WebTransformKeyframe
;
17 WebTransformAnimationCurveImpl::WebTransformAnimationCurveImpl()
18 : curve_(cc::KeyframedTransformAnimationCurve::Create()) {}
20 WebTransformAnimationCurveImpl::~WebTransformAnimationCurveImpl() {}
22 blink::WebAnimationCurve::AnimationCurveType
23 WebTransformAnimationCurveImpl::type() const {
24 return WebAnimationCurve::AnimationCurveTypeTransform
;
27 void WebTransformAnimationCurveImpl::add(const WebTransformKeyframe
& keyframe
) {
28 add(keyframe
, TimingFunctionTypeEase
);
31 void WebTransformAnimationCurveImpl::add(const WebTransformKeyframe
& keyframe
,
32 TimingFunctionType type
) {
33 const cc::TransformOperations
& transform_operations
=
34 static_cast<const webkit::WebTransformOperationsImpl
&>(keyframe
.value())
35 .AsTransformOperations();
36 curve_
->AddKeyframe(cc::TransformKeyframe::Create(
37 keyframe
.time(), transform_operations
, CreateTimingFunction(type
)));
40 void WebTransformAnimationCurveImpl::add(const WebTransformKeyframe
& keyframe
,
45 const cc::TransformOperations
& transform_operations
=
46 static_cast<const webkit::WebTransformOperationsImpl
&>(keyframe
.value())
47 .AsTransformOperations();
48 curve_
->AddKeyframe(cc::TransformKeyframe::Create(
51 cc::CubicBezierTimingFunction::Create(x1
, y1
, x2
, y2
)
52 .PassAs
<cc::TimingFunction
>()));
55 scoped_ptr
<cc::AnimationCurve
>
56 WebTransformAnimationCurveImpl::CloneToAnimationCurve() const {
57 return curve_
->Clone();