1// Copyright 2014 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. 4 5#include "cc/blink/web_float_animation_curve_impl.h" 6 7#include "cc/animation/animation_curve.h" 8#include "cc/animation/keyframed_animation_curve.h" 9#include "cc/animation/timing_function.h" 10#include "cc/blink/web_animation_curve_common.h" 11 12using blink::WebFloatKeyframe; 13 14namespace cc_blink { 15 16WebFloatAnimationCurveImpl::WebFloatAnimationCurveImpl() 17 : curve_(cc::KeyframedFloatAnimationCurve::Create()) { 18} 19 20WebFloatAnimationCurveImpl::~WebFloatAnimationCurveImpl() { 21} 22 23blink::WebCompositorAnimationCurve::AnimationCurveType 24WebFloatAnimationCurveImpl::type() const { 25 return blink::WebCompositorAnimationCurve::AnimationCurveTypeFloat; 26} 27 28void WebFloatAnimationCurveImpl::add(const WebFloatKeyframe& keyframe) { 29 add(keyframe, TimingFunctionTypeEase); 30} 31 32void WebFloatAnimationCurveImpl::add(const WebFloatKeyframe& keyframe, 33 TimingFunctionType type) { 34 curve_->AddKeyframe(cc::FloatKeyframe::Create( 35 keyframe.time, keyframe.value, CreateTimingFunction(type))); 36} 37 38void WebFloatAnimationCurveImpl::add(const WebFloatKeyframe& keyframe, 39 double x1, 40 double y1, 41 double x2, 42 double y2) { 43 curve_->AddKeyframe(cc::FloatKeyframe::Create( 44 keyframe.time, 45 keyframe.value, 46 cc::CubicBezierTimingFunction::Create(x1, y1, x2, y2) 47 .PassAs<cc::TimingFunction>())); 48} 49 50float WebFloatAnimationCurveImpl::getValue(double time) const { 51 return curve_->GetValue(time); 52} 53 54scoped_ptr<cc::AnimationCurve> 55WebFloatAnimationCurveImpl::CloneToAnimationCurve() const { 56 return curve_->Clone(); 57} 58 59} // namespace cc_blink 60