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 |