Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ui / events / gesture_detection / snap_scroll_controller.h
index 753c2bc..049bcd7 100644 (file)
@@ -7,50 +7,42 @@
 
 #include "base/basictypes.h"
 #include "ui/events/gesture_detection/gesture_detection_export.h"
-
-namespace gfx {
-class Display;
-}
+#include "ui/gfx/geometry/point_f.h"
+#include "ui/gfx/geometry/size_f.h"
+#include "ui/gfx/geometry/vector2d_f.h"
 
 namespace ui {
 
 class MotionEvent;
-class ZoomManager;
 
 // Port of SnapScrollController.java from Chromium
 // Controls the scroll snapping behavior based on scroll updates.
-class SnapScrollController {
+class GESTURE_DETECTION_EXPORT SnapScrollController {
  public:
-  explicit SnapScrollController(const gfx::Display& display);
+  SnapScrollController(float snap_bound, const gfx::SizeF& display_size);
   ~SnapScrollController();
 
+  // Sets the snap scroll mode based on the event type.
+  void SetSnapScrollMode(const MotionEvent& event,
+                         bool is_scale_gesture_detection_in_progress);
+
   // Updates the snap scroll mode based on the given X and Y distance to be
   // moved on scroll.  If the scroll update is above a threshold, the snapping
   // behavior is reset.
   void UpdateSnapScrollMode(float distance_x, float distance_y);
 
-  // Sets the snap scroll mode based on the event type.
-  void SetSnapScrollingMode(const MotionEvent& event,
-                            bool is_scale_gesture_detection_in_progress);
-
-  void ResetSnapScrollMode() { snap_scroll_mode_ = SNAP_NONE; }
-  bool IsSnapVertical() const { return snap_scroll_mode_ == SNAP_VERT; }
-  bool IsSnapHorizontal() const { return snap_scroll_mode_ == SNAP_HORIZ; }
-  bool IsSnappingScrolls() const { return snap_scroll_mode_ != SNAP_NONE; }
+  bool IsSnapVertical() const;
+  bool IsSnapHorizontal() const;
+  bool IsSnappingScrolls() const;
 
  private:
-  enum SnapMode {
-    SNAP_NONE,
-    SNAP_HORIZ,
-    SNAP_VERT
-  };
-
-  float channel_distance_;
-  SnapMode snap_scroll_mode_;
-  float first_touch_x_;
-  float first_touch_y_;
-  float distance_x_;
-  float distance_y_;
+  enum SnapMode { SNAP_NONE, SNAP_PENDING, SNAP_HORIZ, SNAP_VERT };
+
+  const float snap_bound_;
+  const float channel_distance_;
+  SnapMode mode_;
+  gfx::PointF down_position_;
+  gfx::Vector2dF accumulated_distance_;
 
   DISALLOW_COPY_AND_ASSIGN(SnapScrollController);
 };