diff options
Diffstat (limited to 'ui/aura/gestures/gesture_point.cc')
-rw-r--r-- | ui/aura/gestures/gesture_point.cc | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/ui/aura/gestures/gesture_point.cc b/ui/aura/gestures/gesture_point.cc index 6619b93..78f32fb 100644 --- a/ui/aura/gestures/gesture_point.cc +++ b/ui/aura/gestures/gesture_point.cc @@ -12,13 +12,19 @@ namespace { -// TODO(girard): Make these configurable in sync with this CL -// http://crbug.com/100773 +// TODO(girard): Make these configurable in sync with +// http://crbug.com/113227 +// It will be necessary to update gesture_recognizer_unittest when +// these constants are made configurable. const double kMaximumTouchDownDurationInSecondsForClick = 0.8; const double kMinimumTouchDownDurationInSecondsForClick = 0.01; const double kMaximumSecondsBetweenDoubleClick = 0.7; const int kMaximumTouchMoveInPixelsForClick = 20; const float kMinFlickSpeedSquared = 550.f * 550.f; +const int kMinRailBreakVelocity = 200; +const int kMinScrollDeltaSquared = 5 * 5; +const int kRailBreakProportion = 15; +const int kRailStartProportion = 2; const int kBufferedPoints = 10; } // namespace @@ -105,6 +111,38 @@ float GesturePoint::Distance(const GesturePoint& point) const { return sqrt(x_diff * x_diff + y_diff * y_diff); } +bool GesturePoint::HasEnoughDataToEstablishRail() const { + int dx = x_delta(); + int dy = y_delta(); + + int delta_squared = dx * dx + dy * dy; + return delta_squared > kMinScrollDeltaSquared; +} + +bool GesturePoint::IsInHorizontalRailWindow() const { + int dx = x_delta(); + int dy = y_delta(); + return abs(dx) > kRailStartProportion * abs(dy); +} + +bool GesturePoint::IsInVerticalRailWindow() const { + int dx = x_delta(); + int dy = y_delta(); + return abs(dy) > kRailStartProportion * abs(dx); +} + +bool GesturePoint::BreaksHorizontalRail() { + float vx = XVelocity(); + float vy = YVelocity(); + return fabs(vy) > kRailBreakProportion * fabs(vx) + kMinRailBreakVelocity; +} + +bool GesturePoint::BreaksVerticalRail() { + float vx = XVelocity(); + float vy = YVelocity(); + return fabs(vx) > kRailBreakProportion * fabs(vy) + kMinRailBreakVelocity; +} + bool GesturePoint::IsInClickTimeWindow() const { double duration = last_touch_time_ - first_touch_time_; return duration >= kMinimumTouchDownDurationInSecondsForClick && |