Home | History | Annotate | Download | only in gestures
      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