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 #ifndef UI_EVENTS_GESTURES_FLING_CURVE_H_ 6 #define UI_EVENTS_GESTURES_FLING_CURVE_H_ 7 8 #include "base/time/time.h" 9 #include "ui/events/events_base_export.h" 10 #include "ui/gfx/geometry/point_f.h" 11 #include "ui/gfx/geometry/vector2d_f.h" 12 13 namespace ui { 14 15 // FlingCurve can be used to scroll a UI element suitable for touch screen-based 16 // flings. 17 class EVENTS_BASE_EXPORT FlingCurve { 18 public: 19 FlingCurve(const gfx::Vector2dF& velocity, base::TimeTicks start_timestamp); 20 ~FlingCurve(); 21 22 gfx::Vector2dF GetScrollAmountAtTime(base::TimeTicks current_timestamp); 23 base::TimeTicks start_timestamp() const { return start_timestamp_; } 24 25 private: 26 const float curve_duration_; 27 const base::TimeTicks start_timestamp_; 28 29 gfx::Vector2dF displacement_ratio_; 30 gfx::Vector2dF cumulative_scroll_; 31 base::TimeTicks last_timestamp_; 32 float time_offset_; 33 float position_offset_; 34 35 DISALLOW_COPY_AND_ASSIGN(FlingCurve); 36 }; 37 38 } // namespace ui 39 40 #endif // UI_EVENTS_GESTURES_FLING_CURVE_H_ 41