Index: ui/display/manager/chromeos/touch_transform_controller.h |
diff --git a/ui/display/manager/chromeos/touch_transform_controller.h b/ui/display/manager/chromeos/touch_transform_controller.h |
index b911a311feceb45e95405369a7ed8319f2a3e96e..69239bc5301dd7e74058b4948f8d71e40d38e3f0 100644 |
--- a/ui/display/manager/chromeos/touch_transform_controller.h |
+++ b/ui/display/manager/chromeos/touch_transform_controller.h |
@@ -5,6 +5,10 @@ |
#ifndef UI_DISPLAY_MANAGER_CHROMEOS_TOUCH_TRANSFORM_CONTROLLER_H_ |
#define UI_DISPLAY_MANAGER_CHROMEOS_TOUCH_TRANSFORM_CONTROLLER_H_ |
+#include <map> |
+#include <memory> |
+#include <vector> |
+ |
#include "base/macros.h" |
#include "ui/display/manager/display_manager_export.h" |
#include "ui/gfx/geometry/size.h" |
@@ -20,6 +24,9 @@ namespace display { |
class DisplayConfigurator; |
class DisplayManager; |
class ManagedDisplayInfo; |
+class TouchTransformSetter; |
+ |
+struct TouchDeviceTransform; |
namespace test { |
class TouchTransformControllerTest; |
@@ -31,7 +38,8 @@ class TouchTransformControllerTest; |
class DISPLAY_MANAGER_EXPORT TouchTransformController { |
public: |
TouchTransformController(DisplayConfigurator* display_configurator, |
- DisplayManager* display_manager); |
+ DisplayManager* display_manager, |
+ std::unique_ptr<TouchTransformSetter> setter); |
~TouchTransformController(); |
// Updates the transform for touch input-devices and pushes the new transforms |
@@ -45,6 +53,17 @@ class DISPLAY_MANAGER_EXPORT TouchTransformController { |
private: |
friend class test::TouchTransformControllerTest; |
+ // Contains the data that is passed to TouchTransformSetter. |
+ struct UpdateData { |
+ UpdateData(); |
+ ~UpdateData(); |
+ |
+ std::map<int32_t, double> device_to_scale; |
+ std::vector<TouchDeviceTransform> touch_device_transforms; |
+ }; |
+ |
+ void UpdateTouchTransforms(UpdateData* data) const; |
+ |
// Returns a transform that will be used to change an event's location from |
// the touchscreen's coordinate system into |display|'s coordinate system. |
// The transform is also responsible for properly scaling the display if the |
@@ -66,20 +85,23 @@ class DISPLAY_MANAGER_EXPORT TouchTransformController { |
const ManagedDisplayInfo& touch_display, |
const ui::TouchscreenDevice& touch_device) const; |
- // For the provided |display| update the touch radius mapping. |
- void UpdateTouchRadius(const ManagedDisplayInfo& display) const; |
+ // For the provided |display| update the touch radius mapping in |
+ // |update_data|. |
+ void UpdateTouchRadius(const ManagedDisplayInfo& display, |
+ UpdateData* update_data) const; |
// For a given |target_display| and |target_display_id| update the touch |
- // transformation based on the touchscreen associated with |touch_display|. |
- // |target_display_id| is the display id whose root window will receive the |
- // touch events. |
+ // transformation in |update_data| based on the touchscreen associated with |
+ // |touch_display|. |target_display_id| is the display id to update the |
+ // transform for. |
// |touch_display| is the physical display that has the touchscreen |
// from which the events arrive. |
// |target_display| provides the dimensions to which the touch event will be |
// transformed. |
void UpdateTouchTransform(int64_t target_display_id, |
const ManagedDisplayInfo& touch_display, |
- const ManagedDisplayInfo& target_display) const; |
+ const ManagedDisplayInfo& target_display, |
+ UpdateData* update_data) const; |
// Both |display_configurator_| and |display_manager_| are not owned and must |
// outlive TouchTransformController. |
@@ -88,6 +110,8 @@ class DISPLAY_MANAGER_EXPORT TouchTransformController { |
bool is_calibrating_ = false; |
+ std::unique_ptr<TouchTransformSetter> setter_; |
+ |
DISALLOW_COPY_AND_ASSIGN(TouchTransformController); |
}; |