summaryrefslogtreecommitdiffstats
path: root/content/child/touch_fling_gesture_curve.h
diff options
context:
space:
mode:
Diffstat (limited to 'content/child/touch_fling_gesture_curve.h')
-rw-r--r--content/child/touch_fling_gesture_curve.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/content/child/touch_fling_gesture_curve.h b/content/child/touch_fling_gesture_curve.h
new file mode 100644
index 0000000..555fc74
--- /dev/null
+++ b/content/child/touch_fling_gesture_curve.h
@@ -0,0 +1,55 @@
+// 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.
+
+#ifndef CONTENT_CHILD_TOUCH_FLING_GESTURE_CURVE_H_
+#define CONTENT_CHILD_TOUCH_FLING_GESTURE_CURVE_H_
+
+#include "content/common/content_export.h"
+#include "third_party/WebKit/public/platform/WebFloatPoint.h"
+#include "third_party/WebKit/public/platform/WebFloatSize.h"
+#include "third_party/WebKit/public/platform/WebGestureCurve.h"
+#include "third_party/WebKit/public/platform/WebSize.h"
+
+namespace blink {
+class WebGestureCurveTarget;
+}
+
+namespace content {
+
+// Implementation of WebGestureCurve suitable for touch pad/screen-based
+// fling scroll. Starts with a flat velocity profile based on 'velocity', which
+// tails off to zero. Time is scaled to that duration of the fling is
+// proportional to the initial velocity.
+class TouchFlingGestureCurve : public blink::WebGestureCurve {
+ public:
+
+ static CONTENT_EXPORT WebGestureCurve* Create(
+ const blink::WebFloatPoint& initial_velocity,
+ float p0, float p1, float p2,
+ const blink::WebSize& cumulativeScroll);
+
+ virtual bool apply(double monotonicTime,
+ blink::WebGestureCurveTarget*) OVERRIDE;
+
+ private:
+ TouchFlingGestureCurve(const blink::WebFloatPoint& initial_velocity,
+ float p0,
+ float p1,
+ float p2,
+ const blink::WebSize& cumulativeScroll);
+ virtual ~TouchFlingGestureCurve();
+
+ blink::WebFloatPoint displacement_ratio_;
+ blink::WebFloatSize cumulative_scroll_;
+ float coefficients_[3];
+ float time_offset_;
+ float curve_duration_;
+ float position_offset_;
+
+ DISALLOW_COPY_AND_ASSIGN(TouchFlingGestureCurve);
+};
+
+} // namespace content
+
+#endif // CONTENT_CHILD_TOUCH_FLING_GESTURE_CURVE_H_