| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/chromeos/touch_exploration_controller.h" | 5 #include "ui/chromeos/touch_exploration_controller.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 root_window->GetHost()->GetEventSource()->AddEventRewriter(this); | 55 root_window->GetHost()->GetEventSource()->AddEventRewriter(this); |
| 56 } | 56 } |
| 57 | 57 |
| 58 TouchExplorationController::~TouchExplorationController() { | 58 TouchExplorationController::~TouchExplorationController() { |
| 59 root_window_->GetHost()->GetEventSource()->RemoveEventRewriter(this); | 59 root_window_->GetHost()->GetEventSource()->RemoveEventRewriter(this); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void TouchExplorationController::SetTouchAccessibilityAnchorPoint( | 62 void TouchExplorationController::SetTouchAccessibilityAnchorPoint( |
| 63 const gfx::Point& anchor_point) { | 63 const gfx::Point& anchor_point) { |
| 64 gfx::Point native_point = anchor_point; | 64 gfx::Point native_point = anchor_point; |
| 65 root_window_->GetHost()->ConvertPointToNativeScreen(&native_point); | 65 root_window_->GetHost()->ConvertPointFromDIPToNativeScreen(&native_point); |
| 66 | 66 |
| 67 anchor_point_ = gfx::PointF(native_point.x(), native_point.y()); | 67 anchor_point_ = gfx::PointF(native_point.x(), native_point.y()); |
| 68 anchor_point_state_ = ANCHOR_POINT_EXPLICITLY_SET; | 68 anchor_point_state_ = ANCHOR_POINT_EXPLICITLY_SET; |
| 69 } | 69 } |
| 70 | 70 |
| 71 void TouchExplorationController::SetExcludeBounds(const gfx::Rect& bounds) { | 71 void TouchExplorationController::SetExcludeBounds(const gfx::Rect& bounds) { |
| 72 exclude_bounds_ = bounds; | 72 exclude_bounds_ = bounds; |
| 73 } | 73 } |
| 74 | 74 |
| 75 ui::EventRewriteStatus TouchExplorationController::RewriteEvent( | 75 ui::EventRewriteStatus TouchExplorationController::RewriteEvent( |
| (...skipping 10 matching lines...) Expand all Loading... |
| 86 return ui::EVENT_REWRITE_CONTINUE; | 86 return ui::EVENT_REWRITE_CONTINUE; |
| 87 } | 87 } |
| 88 const ui::TouchEvent& touch_event = static_cast<const ui::TouchEvent&>(event); | 88 const ui::TouchEvent& touch_event = static_cast<const ui::TouchEvent&>(event); |
| 89 | 89 |
| 90 // Let TouchAccessibilityEnabler process the unrewritten event. | 90 // Let TouchAccessibilityEnabler process the unrewritten event. |
| 91 if (touch_accessibility_enabler_) | 91 if (touch_accessibility_enabler_) |
| 92 touch_accessibility_enabler_->HandleTouchEvent(touch_event); | 92 touch_accessibility_enabler_->HandleTouchEvent(touch_event); |
| 93 | 93 |
| 94 if (!exclude_bounds_.IsEmpty()) { | 94 if (!exclude_bounds_.IsEmpty()) { |
| 95 gfx::Point location = touch_event.location(); | 95 gfx::Point location = touch_event.location(); |
| 96 root_window_->GetHost()->ConvertPointFromNativeScreen(&location); | 96 root_window_->GetHost()->ConvertPointFromNativeScreenToDIP(&location); |
| 97 bool in_exclude_area = exclude_bounds_.Contains(location); | 97 bool in_exclude_area = exclude_bounds_.Contains(location); |
| 98 if (in_exclude_area) { | 98 if (in_exclude_area) { |
| 99 if (state_ == NO_FINGERS_DOWN) | 99 if (state_ == NO_FINGERS_DOWN) |
| 100 return ui::EVENT_REWRITE_CONTINUE; | 100 return ui::EVENT_REWRITE_CONTINUE; |
| 101 if (touch_event.type() == ui::ET_TOUCH_MOVED || | 101 if (touch_event.type() == ui::ET_TOUCH_MOVED || |
| 102 touch_event.type() == ui::ET_TOUCH_PRESSED) { | 102 touch_event.type() == ui::ET_TOUCH_PRESSED) { |
| 103 return ui::EVENT_REWRITE_DISCARD; | 103 return ui::EVENT_REWRITE_DISCARD; |
| 104 } | 104 } |
| 105 // Otherwise, continue handling events. Basically, we want to let | 105 // Otherwise, continue handling events. Basically, we want to let |
| 106 // CANCELLED or RELEASE events through so this can get back to | 106 // CANCELLED or RELEASE events through so this can get back to |
| (...skipping 787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 894 if (edge & TOP_EDGE) { | 894 if (edge & TOP_EDGE) { |
| 895 delegate_->SetOutputLevel(100); | 895 delegate_->SetOutputLevel(100); |
| 896 return; | 896 return; |
| 897 } | 897 } |
| 898 if (edge & BOTTOM_EDGE) { | 898 if (edge & BOTTOM_EDGE) { |
| 899 delegate_->SetOutputLevel(0); | 899 delegate_->SetOutputLevel(0); |
| 900 return; | 900 return; |
| 901 } | 901 } |
| 902 | 902 |
| 903 location = gesture->location(); | 903 location = gesture->location(); |
| 904 root_window_->GetHost()->ConvertPointFromNativeScreen(&location); | 904 root_window_->GetHost()->ConvertPointFromNativeScreenToDIP(&location); |
| 905 float volume_adjust_height = | 905 float volume_adjust_height = |
| 906 root_window_->bounds().height() - 2 * kMaxDistanceFromEdge; | 906 root_window_->bounds().height() - 2 * kMaxDistanceFromEdge; |
| 907 float ratio = (location.y() - kMaxDistanceFromEdge) / volume_adjust_height; | 907 float ratio = (location.y() - kMaxDistanceFromEdge) / volume_adjust_height; |
| 908 float volume = 100 - 100 * ratio; | 908 float volume = 100 - 100 * ratio; |
| 909 if (VLOG_on_) { | 909 if (VLOG_on_) { |
| 910 VLOG(1) << "\n Volume = " << volume | 910 VLOG(1) << "\n Volume = " << volume |
| 911 << "\n Location = " << location.ToString() | 911 << "\n Location = " << location.ToString() |
| 912 << "\n Bounds = " << root_window_->bounds().right(); | 912 << "\n Bounds = " << root_window_->bounds().right(); |
| 913 } | 913 } |
| 914 delegate_->SetOutputLevel(static_cast<int>(volume)); | 914 delegate_->SetOutputLevel(static_cast<int>(volume)); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 996 } | 996 } |
| 997 | 997 |
| 998 if (gesture != ui::AX_GESTURE_NONE) | 998 if (gesture != ui::AX_GESTURE_NONE) |
| 999 delegate_->HandleAccessibilityGesture(gesture); | 999 delegate_->HandleAccessibilityGesture(gesture); |
| 1000 } | 1000 } |
| 1001 | 1001 |
| 1002 int TouchExplorationController::FindEdgesWithinBounds(gfx::Point point, | 1002 int TouchExplorationController::FindEdgesWithinBounds(gfx::Point point, |
| 1003 float bounds) { | 1003 float bounds) { |
| 1004 // Since GetBoundsInScreen is in DIPs but point is not, then point needs to be | 1004 // Since GetBoundsInScreen is in DIPs but point is not, then point needs to be |
| 1005 // converted. | 1005 // converted. |
| 1006 root_window_->GetHost()->ConvertPointFromNativeScreen(&point); | 1006 root_window_->GetHost()->ConvertPointFromNativeScreenToDIP(&point); |
| 1007 gfx::Rect window = root_window_->GetBoundsInScreen(); | 1007 gfx::Rect window = root_window_->GetBoundsInScreen(); |
| 1008 | 1008 |
| 1009 float left_edge_limit = window.x() + bounds; | 1009 float left_edge_limit = window.x() + bounds; |
| 1010 float right_edge_limit = window.right() - bounds; | 1010 float right_edge_limit = window.right() - bounds; |
| 1011 float top_edge_limit = window.y() + bounds; | 1011 float top_edge_limit = window.y() + bounds; |
| 1012 float bottom_edge_limit = window.bottom() - bounds; | 1012 float bottom_edge_limit = window.bottom() - bounds; |
| 1013 | 1013 |
| 1014 // Bitwise manipulation in order to determine where on the screen the point | 1014 // Bitwise manipulation in order to determine where on the screen the point |
| 1015 // lies. If more than one bit is turned on, then it is a corner where the two | 1015 // lies. If more than one bit is turned on, then it is a corner where the two |
| 1016 // bit/edges intersect. Otherwise, if no bits are turned on, the point must be | 1016 // bit/edges intersect. Otherwise, if no bits are turned on, the point must be |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1190 return "TWO_FINGER_TAP"; | 1190 return "TWO_FINGER_TAP"; |
| 1191 } | 1191 } |
| 1192 return "Not a state"; | 1192 return "Not a state"; |
| 1193 } | 1193 } |
| 1194 | 1194 |
| 1195 float TouchExplorationController::GetSplitTapTouchSlop() { | 1195 float TouchExplorationController::GetSplitTapTouchSlop() { |
| 1196 return gesture_detector_config_.touch_slop * 3; | 1196 return gesture_detector_config_.touch_slop * 3; |
| 1197 } | 1197 } |
| 1198 | 1198 |
| 1199 } // namespace ui | 1199 } // namespace ui |
| OLD | NEW |