Chromium Code Reviews| Index: third_party/WebKit/Source/platform/animation/WebScrollOffsetAnimationCurve.cpp |
| diff --git a/third_party/WebKit/Source/platform/animation/WebScrollOffsetAnimationCurve.cpp b/third_party/WebKit/Source/platform/animation/WebScrollOffsetAnimationCurve.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..8955838b370d09f80eb774f96871d77e1444ad69 |
| --- /dev/null |
| +++ b/third_party/WebKit/Source/platform/animation/WebScrollOffsetAnimationCurve.cpp |
| @@ -0,0 +1,87 @@ |
| +// Copyright 2016 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 "platform/animation/WebScrollOffsetAnimationCurve.h" |
| + |
| +#include "cc/animation/scroll_offset_animation_curve.h" |
| +#include "cc/animation/timing_function.h" |
| + |
| +using blink::WebFloatPoint; |
| +using blink::WebScrollOffsetAnimationCurve; |
| +using DurationBehavior = cc::ScrollOffsetAnimationCurve::DurationBehavior; |
| + |
| +namespace blink { |
| + |
| +static DurationBehavior GetDurationBehavior( |
| + WebScrollOffsetAnimationCurve::ScrollDurationBehavior webDurationBehavior) |
| +{ |
| + switch (webDurationBehavior) { |
| + case WebScrollOffsetAnimationCurve::ScrollDurationDeltaBased: |
| + return DurationBehavior::DELTA_BASED; |
| + |
| + case WebScrollOffsetAnimationCurve::ScrollDurationConstant: |
| + return DurationBehavior::CONSTANT; |
| + |
| + case WebScrollOffsetAnimationCurve::ScrollDurationInverseDelta: |
| + return DurationBehavior::INVERSE_DELTA; |
| + } |
| + NOTREACHED(); |
| + return DurationBehavior::DELTA_BASED; |
| +} |
| + |
| +WebScrollOffsetAnimationCurve::WebScrollOffsetAnimationCurve( |
| + WebFloatPoint targetValue, |
| + TimingFunctionType timingFunction, |
| + ScrollDurationBehavior durationBehavior) |
| + : m_curve(cc::ScrollOffsetAnimationCurve::Create( |
| + gfx::ScrollOffset(targetValue.x, targetValue.y), |
| + WebCompositorAnimationCurve::CreateTimingFunction(timingFunction), |
| + GetDurationBehavior(durationBehavior))) |
| +{ |
| +} |
| + |
| +WebScrollOffsetAnimationCurve::~WebScrollOffsetAnimationCurve() |
| +{ |
| +} |
| + |
| +WebCompositorAnimationCurve::AnimationCurveType |
| +WebScrollOffsetAnimationCurve::type() const |
| +{ |
| + return WebCompositorAnimationCurve::AnimationCurveTypeScrollOffset; |
| +} |
| + |
| +void WebScrollOffsetAnimationCurve::setInitialValue(WebFloatPoint initialValue) |
| +{ |
| + m_curve->SetInitialValue(gfx::ScrollOffset(initialValue.x, initialValue.y)); |
| +} |
| + |
| +WebFloatPoint WebScrollOffsetAnimationCurve::getValue(double time) const |
| +{ |
| + gfx::ScrollOffset value = m_curve->GetValue(base::TimeDelta::FromSecondsD(time)); |
| + return WebFloatPoint(value.x(), value.y()); |
| +} |
| + |
| +double WebScrollOffsetAnimationCurve::duration() const |
| +{ |
| + return m_curve->Duration().InSecondsF(); |
| +} |
| + |
| +WebFloatPoint WebScrollOffsetAnimationCurve::targetValue() const |
| +{ |
| + gfx::ScrollOffset target = m_curve->target_value(); |
| + return WebFloatPoint(target.x(), target.y()); |
| +} |
| + |
| +void WebScrollOffsetAnimationCurve::updateTarget(double time, WebFloatPoint newTarget) |
| +{ |
| + m_curve->UpdateTarget(time, gfx::ScrollOffset(newTarget.x, newTarget.y)); |
|
esprehn
2016/01/28 03:40:40
we can probably add WebFoo to gfx::Foo conversion
loyso (OOO)
2016/01/28 07:10:09
Acknowledged.
|
| +} |
| + |
| +scoped_ptr<cc::AnimationCurve> |
| +WebScrollOffsetAnimationCurve::CloneToAnimationCurve() const |
| +{ |
| + return m_curve->Clone(); |
| +} |
| + |
| +} // namespace blink |