diff options
Diffstat (limited to 'chromium/content/renderer/compositor_bindings/web_transform_animation_curve_impl.cc')
-rw-r--r-- | chromium/content/renderer/compositor_bindings/web_transform_animation_curve_impl.cc | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/chromium/content/renderer/compositor_bindings/web_transform_animation_curve_impl.cc b/chromium/content/renderer/compositor_bindings/web_transform_animation_curve_impl.cc new file mode 100644 index 00000000000..8b03f48a813 --- /dev/null +++ b/chromium/content/renderer/compositor_bindings/web_transform_animation_curve_impl.cc @@ -0,0 +1,63 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/renderer/compositor_bindings/web_transform_animation_curve_impl.h" + +#include "cc/animation/keyframed_animation_curve.h" +#include "cc/animation/timing_function.h" +#include "cc/animation/transform_operations.h" +#include "content/renderer/compositor_bindings/web_animation_curve_common.h" +#include "content/renderer/compositor_bindings/web_transform_operations_impl.h" + +using blink::WebTransformKeyframe; + +namespace content { + +WebTransformAnimationCurveImpl::WebTransformAnimationCurveImpl() + : curve_(cc::KeyframedTransformAnimationCurve::Create()) { +} + +WebTransformAnimationCurveImpl::~WebTransformAnimationCurveImpl() { +} + +blink::WebAnimationCurve::AnimationCurveType +WebTransformAnimationCurveImpl::type() const { + return WebAnimationCurve::AnimationCurveTypeTransform; +} + +void WebTransformAnimationCurveImpl::add(const WebTransformKeyframe& keyframe) { + add(keyframe, TimingFunctionTypeEase); +} + +void WebTransformAnimationCurveImpl::add(const WebTransformKeyframe& keyframe, + TimingFunctionType type) { + const cc::TransformOperations& transform_operations = + static_cast<const WebTransformOperationsImpl&>(keyframe.value()) + .AsTransformOperations(); + curve_->AddKeyframe(cc::TransformKeyframe::Create( + keyframe.time(), transform_operations, CreateTimingFunction(type))); +} + +void WebTransformAnimationCurveImpl::add(const WebTransformKeyframe& keyframe, + double x1, + double y1, + double x2, + double y2) { + const cc::TransformOperations& transform_operations = + static_cast<const WebTransformOperationsImpl&>(keyframe.value()) + .AsTransformOperations(); + curve_->AddKeyframe(cc::TransformKeyframe::Create( + keyframe.time(), + transform_operations, + cc::CubicBezierTimingFunction::Create(x1, y1, x2, y2) + .PassAs<cc::TimingFunction>())); +} + +scoped_ptr<cc::AnimationCurve> +WebTransformAnimationCurveImpl::CloneToAnimationCurve() const { + return curve_->Clone(); +} + +} // namespace content + |