Index: ash/display/event_transformation_handler.cc |
diff --git a/ash/display/event_transformation_handler.cc b/ash/display/event_transformation_handler.cc |
index cd9961a954e93ea39b8c95e06070b7019935c523..62a6fa15cf2d381cc51d363ca2bba42196175870 100644 |
--- a/ash/display/event_transformation_handler.cc |
+++ b/ash/display/event_transformation_handler.cc |
@@ -18,71 +18,12 @@ |
#include "ui/gfx/display.h" |
#include "ui/gfx/screen.h" |
-#if defined(OS_CHROMEOS) |
-#include "ui/display/chromeos/display_configurator.h" |
-#endif // defined(OS_CHROMEOS) |
- |
namespace ash { |
namespace { |
// Boost factor for non-integrated displays. |
const float kBoostForNonIntegrated = 1.20f; |
-#if defined(OS_CHROMEOS) |
-gfx::Size GetNativeModeSize(const DisplayInfo& info) { |
- const std::vector<DisplayMode>& modes = info.display_modes(); |
- for (size_t i = 0; i < modes.size(); ++i) { |
- if (modes[i].native) |
- return modes[i].size; |
- } |
- |
- return gfx::Size(); |
-} |
- |
-float GetMirroredDisplayAreaRatio(const gfx::Size& current_size, |
- const gfx::Size& native_size) { |
- float area_ratio = 1.0f; |
- |
- if (current_size.IsEmpty() || native_size.IsEmpty()) |
- return area_ratio; |
- |
- float width_ratio = static_cast<float>(current_size.width()) / |
- static_cast<float>(native_size.width()); |
- float height_ratio = static_cast<float>(current_size.height()) / |
- static_cast<float>(native_size.height()); |
- |
- area_ratio = width_ratio * height_ratio; |
- return area_ratio; |
-} |
- |
-// Key of the map is the touch display's id, and the value of the map is the |
-// touch display's area ratio in mirror mode defined as: |
-// mirror_mode_area / native_mode_area. |
-// This is used for scaling touch event's radius when the touch display is in |
-// mirror mode: new_touch_radius = sqrt(area_ratio) * old_touch_radius |
-std::map<int, float> GetMirroredDisplayAreaRatioMap() { |
- std::map<int, float> area_ratios; |
- DisplayManager* display_manager = |
- ash::Shell::GetInstance()->display_manager(); |
- const std::vector<gfx::Display>& displays = display_manager->displays(); |
- for (size_t i = 0; i < displays.size(); ++i) { |
- const DisplayInfo& info = display_manager->GetDisplayInfo( |
- displays[i].id()); |
- const gfx::Size current_size = info.size_in_pixel(); |
- const gfx::Size native_size = GetNativeModeSize(info); |
- |
- if (info.touch_support() == gfx::Display::TOUCH_SUPPORT_AVAILABLE && |
- current_size != native_size && |
- info.is_aspect_preserving_scaling()) { |
- area_ratios[info.touch_device_id()] = GetMirroredDisplayAreaRatio( |
- current_size, native_size); |
- } |
- } |
- |
- return area_ratios; |
-} |
-#endif // defined(OS_CHROMEOS) |
- |
} // namespace |
EventTransformationHandler::EventTransformationHandler() |
@@ -109,38 +50,4 @@ void EventTransformationHandler::OnScrollEvent(ui::ScrollEvent* event) { |
event->Scale(kBoostForNonIntegrated); |
} |
-#if defined(OS_CHROMEOS) |
-// This is to scale the TouchEvent's radius when the touch display is in |
-// mirror mode. TouchEvent's radius is often reported in the touchscreen's |
-// native resolution. In mirror mode, the touch display could be configured |
-// at a lower resolution. We scale down the radius using the ratio defined as |
-// the sqrt of |
-// (mirror_width * mirror_height) / (native_width * native_height) |
-void EventTransformationHandler::OnTouchEvent(ui::TouchEvent* event) { |
- // Check display_configurator's output_state instead of checking |
- // DisplayManager::IsMirrored() because the compositor based mirroring |
- // won't cause the scaling issue. |
- if (ash::Shell::GetInstance()->display_configurator()->display_state() != |
- ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR) |
- return; |
- |
- const std::map<int, float> area_ratio_map = GetMirroredDisplayAreaRatioMap(); |
- |
- // TODO(miletus): When there are more than 1 touchscreen (e.g. Link connected |
- // to an external touchscreen), the correct way to do is to have a way |
- // to find out which touchscreen is the event originating from and use the |
- // area ratio of that touchscreen to scale the event's radius. |
- // Tracked here crbug.com/233245 |
- if (area_ratio_map.size() != 1) { |
- LOG(ERROR) << "Mirroring mode with " << area_ratio_map.size() |
- << " touch display found"; |
- return; |
- } |
- |
- float area_ratio_sqrt = std::sqrt(area_ratio_map.begin()->second); |
- event->set_radius_x(event->radius_x() * area_ratio_sqrt); |
- event->set_radius_y(event->radius_y() * area_ratio_sqrt); |
-} |
-#endif // defined(OS_CHROMEOS) |
- |
} // namespace ash |