Index: ui/events/gestures/gesture_point.cc |
diff --git a/ui/events/gestures/gesture_point.cc b/ui/events/gestures/gesture_point.cc |
deleted file mode 100644 |
index 33966235a10fb0468d16dbbba964a3099d8eb869..0000000000000000000000000000000000000000 |
--- a/ui/events/gestures/gesture_point.cc |
+++ /dev/null |
@@ -1,231 +0,0 @@ |
-// Copyright (c) 2012 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. |
- |
-#include "ui/events/gestures/gesture_point.h" |
- |
-#include <cmath> |
- |
-#include "base/basictypes.h" |
-#include "ui/events/event.h" |
-#include "ui/events/event_constants.h" |
-#include "ui/events/gestures/gesture_configuration.h" |
-#include "ui/events/gestures/gesture_types.h" |
- |
-namespace ui { |
- |
-GesturePoint::GesturePoint() |
- : first_touch_time_(0.0), |
- second_last_touch_time_(0.0), |
- last_touch_time_(0.0), |
- second_last_tap_time_(0.0), |
- last_tap_time_(0.0), |
- velocity_calculator_( |
- GestureConfiguration::points_buffered_for_velocity()), |
- point_id_(-1), |
- touch_id_(-1), |
- source_device_id_(-1) { |
- max_touch_move_in_pixels_for_click_squared_ = |
- GestureConfiguration::max_touch_move_in_pixels_for_click() * |
- GestureConfiguration::max_touch_move_in_pixels_for_click(); |
- max_distance_between_taps_for_double_tap_squared_ = |
- GestureConfiguration::max_distance_between_taps_for_double_tap() * |
- GestureConfiguration::max_distance_between_taps_for_double_tap(); |
-} |
- |
-GesturePoint::~GesturePoint() {} |
- |
-void GesturePoint::Reset() { |
- first_touch_time_ = second_last_touch_time_ = last_touch_time_ = 0.0; |
- ResetVelocity(); |
- point_id_ = -1; |
- clear_enclosing_rectangle(); |
- source_device_id_ = -1; |
-} |
- |
-void GesturePoint::ResetVelocity() { |
- velocity_calculator_.ClearHistory(); |
-} |
- |
-gfx::Vector2dF GesturePoint::ScrollDelta() const { |
- return last_touch_position_ - second_last_touch_position_; |
-} |
- |
-void GesturePoint::UpdateValues(const TouchEvent& event) { |
- const int64 event_timestamp_microseconds = |
- event.time_stamp().InMicroseconds(); |
- if (event.type() == ui::ET_TOUCH_MOVED) { |
- velocity_calculator_.PointSeen(event.location().x(), |
- event.location().y(), |
- event_timestamp_microseconds); |
- gfx::Vector2d sd(ScrollVelocityDirection(velocity_calculator_.XVelocity()), |
- ScrollVelocityDirection(velocity_calculator_.YVelocity())); |
- } |
- |
- last_touch_time_ = event.time_stamp().InSecondsF(); |
- last_touch_position_ = event.location_f(); |
- |
- if (event.type() == ui::ET_TOUCH_PRESSED) { |
- ResetVelocity(); |
- clear_enclosing_rectangle(); |
- first_touch_time_ = last_touch_time_; |
- first_touch_position_ = event.location(); |
- second_last_touch_position_ = last_touch_position_; |
- second_last_touch_time_ = last_touch_time_; |
- velocity_calculator_.PointSeen(event.location().x(), |
- event.location().y(), |
- event_timestamp_microseconds); |
- } |
- |
- UpdateEnclosingRectangle(event); |
-} |
- |
-void GesturePoint::UpdateForTap() { |
- // Update the tap-position and time, and reset every other state. |
- second_last_tap_position_ = last_tap_position_; |
- second_last_tap_time_ = last_tap_time_; |
- last_tap_time_ = last_touch_time_; |
- last_tap_position_ = last_touch_position_; |
-} |
- |
-void GesturePoint::UpdateForScroll() { |
- second_last_touch_position_ = last_touch_position_; |
- second_last_touch_time_ = last_touch_time_; |
-} |
- |
-bool GesturePoint::IsInClickWindow(const TouchEvent& event) const { |
- return IsInClickTimeWindow() && IsInsideTouchSlopRegion(event); |
-} |
- |
-bool GesturePoint::IsInDoubleClickWindow(const TouchEvent& event) const { |
- return IsInClickAggregateTimeWindow(last_tap_time_, last_touch_time_) && |
- IsPointInsideDoubleTapTouchSlopRegion( |
- event.location(), last_tap_position_); |
-} |
- |
-bool GesturePoint::IsInTripleClickWindow(const TouchEvent& event) const { |
- return IsInClickAggregateTimeWindow(last_tap_time_, last_touch_time_) && |
- IsInClickAggregateTimeWindow(second_last_tap_time_, last_tap_time_) && |
- IsPointInsideDoubleTapTouchSlopRegion( |
- event.location(), last_tap_position_) && |
- IsPointInsideDoubleTapTouchSlopRegion(last_tap_position_, |
- second_last_tap_position_); |
-} |
- |
-bool GesturePoint::IsInScrollWindow(const TouchEvent& event) const { |
- return event.type() == ui::ET_TOUCH_MOVED && |
- !IsInsideTouchSlopRegion(event); |
-} |
- |
-bool GesturePoint::IsInFlickWindow(const TouchEvent& event) { |
- return IsOverMinFlickSpeed() && |
- event.type() != ui::ET_TOUCH_CANCELLED; |
-} |
- |
-int GesturePoint::ScrollVelocityDirection(float v) { |
- if (v < -GestureConfiguration::min_scroll_velocity()) |
- return -1; |
- else if (v > GestureConfiguration::min_scroll_velocity()) |
- return 1; |
- else |
- return 0; |
-} |
- |
-bool GesturePoint::DidScroll(const TouchEvent& event, int dist) const { |
- gfx::Vector2dF d = last_touch_position_ - second_last_touch_position_; |
- return fabs(d.x()) > dist || fabs(d.y()) > dist; |
-} |
- |
-bool GesturePoint::IsInHorizontalRailWindow() const { |
- gfx::Vector2dF d = last_touch_position_ - second_last_touch_position_; |
- return std::abs(d.x()) > |
- GestureConfiguration::rail_start_proportion() * std::abs(d.y()); |
-} |
- |
-bool GesturePoint::IsInVerticalRailWindow() const { |
- gfx::Vector2dF d = last_touch_position_ - second_last_touch_position_; |
- return std::abs(d.y()) > |
- GestureConfiguration::rail_start_proportion() * std::abs(d.x()); |
-} |
- |
-bool GesturePoint::BreaksHorizontalRail() { |
- float vx = XVelocity(); |
- float vy = YVelocity(); |
- return fabs(vy) > GestureConfiguration::rail_break_proportion() * fabs(vx) + |
- GestureConfiguration::min_rail_break_velocity(); |
-} |
- |
-bool GesturePoint::BreaksVerticalRail() { |
- float vx = XVelocity(); |
- float vy = YVelocity(); |
- return fabs(vx) > GestureConfiguration::rail_break_proportion() * fabs(vy) + |
- GestureConfiguration::min_rail_break_velocity(); |
-} |
- |
-bool GesturePoint::IsInClickTimeWindow() const { |
- double duration = last_touch_time_ - first_touch_time_; |
- return duration >= |
- GestureConfiguration::min_touch_down_duration_in_seconds_for_click() && |
- duration < |
- GestureConfiguration::max_touch_down_duration_in_seconds_for_click(); |
-} |
- |
-bool GesturePoint::IsInClickAggregateTimeWindow(double before, |
- double after) const { |
- double duration = after - before; |
- return duration < GestureConfiguration::max_seconds_between_double_click(); |
-} |
- |
-bool GesturePoint::IsInsideTouchSlopRegion(const TouchEvent& event) const { |
- const gfx::PointF& p1 = event.location(); |
- const gfx::PointF& p2 = first_touch_position_; |
- float dx = p1.x() - p2.x(); |
- float dy = p1.y() - p2.y(); |
- float distance = dx * dx + dy * dy; |
- return distance < max_touch_move_in_pixels_for_click_squared_; |
-} |
- |
-bool GesturePoint::IsPointInsideDoubleTapTouchSlopRegion(gfx::PointF p1, |
- gfx::PointF p2) const { |
- float dx = p1.x() - p2.x(); |
- float dy = p1.y() - p2.y(); |
- float distance = dx * dx + dy * dy; |
- return distance < max_distance_between_taps_for_double_tap_squared_; |
-} |
- |
-bool GesturePoint::IsOverMinFlickSpeed() { |
- return velocity_calculator_.VelocitySquared() > |
- GestureConfiguration::min_flick_speed_squared(); |
-} |
- |
-void GesturePoint::UpdateEnclosingRectangle(const TouchEvent& event) { |
- int radius; |
- |
- // Ignore this TouchEvent if it has a radius larger than the maximum |
- // allowed radius size. |
- if (event.radius_x() > GestureConfiguration::max_radius() || |
- event.radius_y() > GestureConfiguration::max_radius()) |
- return; |
- |
- // If the device provides at least one of the radius values, take the larger |
- // of the two and use this as both the x radius and the y radius of the |
- // touch region. Otherwise use the default radius value. |
- // TODO(tdanderson): Implement a more specific check for the exact |
- // information provided by the device (0-2 radii values, force, angle) and |
- // use this to compute a more representative rectangular touch region. |
- if (event.radius_x() || event.radius_y()) |
- radius = std::max(event.radius_x(), event.radius_y()); |
- else |
- radius = GestureConfiguration::default_radius(); |
- |
- gfx::RectF rect(event.location_f().x() - radius, |
- event.location_f().y() - radius, |
- radius * 2, |
- radius * 2); |
- if (IsInClickWindow(event)) |
- enclosing_rect_.Union(rect); |
- else |
- enclosing_rect_ = rect; |
-} |
- |
-} // namespace ui |