| 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 "ash/touch/touch_transformer_controller.h" | 5 #include "ash/touch/touch_transformer_controller.h" |
| 6 | 6 |
| 7 #include "ash/display/display_controller.h" | 7 #include "ash/display/display_controller.h" |
| 8 #include "ash/display/display_manager.h" | 8 #include "ash/display/display_manager.h" |
| 9 #include "ash/host/ash_window_tree_host.h" | 9 #include "ash/host/ash_window_tree_host.h" |
| 10 #include "ash/root_window_controller.h" | 10 #include "ash/root_window_controller.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 // This is to compute the scale ratio for the TouchEvent's radius. The | 28 // This is to compute the scale ratio for the TouchEvent's radius. The |
| 29 // configured resolution of the display is not always the same as the touch | 29 // configured resolution of the display is not always the same as the touch |
| 30 // screen's reporting resolution, e.g. the display could be set as | 30 // screen's reporting resolution, e.g. the display could be set as |
| 31 // 1920x1080 while the touchscreen is reporting touch position range at | 31 // 1920x1080 while the touchscreen is reporting touch position range at |
| 32 // 32767x32767. Touch radius is reported in the units the same as touch position | 32 // 32767x32767. Touch radius is reported in the units the same as touch position |
| 33 // so we need to scale the touch radius to be compatible with the display's | 33 // so we need to scale the touch radius to be compatible with the display's |
| 34 // resolution. We compute the scale as | 34 // resolution. We compute the scale as |
| 35 // sqrt of (display_area / touchscreen_area) | 35 // sqrt of (display_area / touchscreen_area) |
| 36 double TouchTransformerController::GetTouchResolutionScale( | 36 double TouchTransformerController::GetTouchResolutionScale( |
| 37 const DisplayInfo& touch_display) const { | 37 const DisplayInfo& touch_display) const { |
| 38 if (touch_display.touch_device_id() == 0) | 38 if (touch_display.touch_device_id() == 0u) |
| 39 return 1.0; | 39 return 1.0; |
| 40 | 40 |
| 41 double min_x, max_x; | 41 double min_x, max_x; |
| 42 double min_y, max_y; | 42 double min_y, max_y; |
| 43 if (!ui::DeviceDataManagerX11::GetInstance()->GetDataRange( | 43 if (!ui::DeviceDataManagerX11::GetInstance()->GetDataRange( |
| 44 touch_display.touch_device_id(), | 44 touch_display.touch_device_id(), |
| 45 ui::DeviceDataManagerX11::DT_TOUCH_POSITION_X, | 45 ui::DeviceDataManagerX11::DT_TOUCH_POSITION_X, |
| 46 &min_x, &max_x) || | 46 &min_x, &max_x) || |
| 47 !ui::DeviceDataManagerX11::GetInstance()->GetDataRange( | 47 !ui::DeviceDataManagerX11::GetInstance()->GetDataRange( |
| 48 touch_display.touch_device_id(), | 48 touch_display.touch_device_id(), |
| (...skipping 21 matching lines...) Expand all Loading... |
| 70 return ratio; | 70 return ratio; |
| 71 } | 71 } |
| 72 | 72 |
| 73 // This function computes the extended mode TouchTransformer for | 73 // This function computes the extended mode TouchTransformer for |
| 74 // |touch_display|. The TouchTransformer maps the touch event position | 74 // |touch_display|. The TouchTransformer maps the touch event position |
| 75 // from framebuffer size to the display size. | 75 // from framebuffer size to the display size. |
| 76 gfx::Transform | 76 gfx::Transform |
| 77 TouchTransformerController::GetExtendedModeTouchTransformer( | 77 TouchTransformerController::GetExtendedModeTouchTransformer( |
| 78 const DisplayInfo& touch_display, const gfx::Size& fb_size) const { | 78 const DisplayInfo& touch_display, const gfx::Size& fb_size) const { |
| 79 gfx::Transform ctm; | 79 gfx::Transform ctm; |
| 80 if (touch_display.touch_device_id() == 0 || | 80 if (touch_display.touch_device_id() == 0u || fb_size.width() == 0.0 || |
| 81 fb_size.width() == 0.0 || | |
| 82 fb_size.height() == 0.0) | 81 fb_size.height() == 0.0) |
| 83 return ctm; | 82 return ctm; |
| 84 float width = touch_display.bounds_in_native().width(); | 83 float width = touch_display.bounds_in_native().width(); |
| 85 float height = touch_display.bounds_in_native().height(); | 84 float height = touch_display.bounds_in_native().height(); |
| 86 ctm.Scale(width / fb_size.width(), height / fb_size.height()); | 85 ctm.Scale(width / fb_size.width(), height / fb_size.height()); |
| 87 return ctm; | 86 return ctm; |
| 88 } | 87 } |
| 89 | 88 |
| 90 bool TouchTransformerController::ShouldComputeMirrorModeTouchTransformer( | 89 bool TouchTransformerController::ShouldComputeMirrorModeTouchTransformer( |
| 91 const DisplayInfo& touch_display) const { | 90 const DisplayInfo& touch_display) const { |
| 92 if (force_compute_mirror_mode_touch_transformer_) | 91 if (force_compute_mirror_mode_touch_transformer_) |
| 93 return true; | 92 return true; |
| 94 | 93 |
| 95 if (touch_display.touch_device_id() == 0) | 94 if (touch_display.touch_device_id() == 0u) |
| 96 return false; | 95 return false; |
| 97 | 96 |
| 98 if (touch_display.size_in_pixel() == touch_display.GetNativeModeSize() || | 97 if (touch_display.size_in_pixel() == touch_display.GetNativeModeSize() || |
| 99 !touch_display.is_aspect_preserving_scaling()) { | 98 !touch_display.is_aspect_preserving_scaling()) { |
| 100 return false; | 99 return false; |
| 101 } | 100 } |
| 102 | 101 |
| 103 return true; | 102 return true; |
| 104 } | 103 } |
| 105 | 104 |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 | 271 |
| 273 void TouchTransformerController::OnDisplaysInitialized() { | 272 void TouchTransformerController::OnDisplaysInitialized() { |
| 274 UpdateTouchTransformer(); | 273 UpdateTouchTransformer(); |
| 275 } | 274 } |
| 276 | 275 |
| 277 void TouchTransformerController::OnDisplayConfigurationChanged() { | 276 void TouchTransformerController::OnDisplayConfigurationChanged() { |
| 278 UpdateTouchTransformer(); | 277 UpdateTouchTransformer(); |
| 279 } | 278 } |
| 280 | 279 |
| 281 } // namespace ash | 280 } // namespace ash |
| OLD | NEW |