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 3 // found in the LICENSE file. 4 5 #ifndef ASH_TOUCH_TOUCH_TRANSFORMER_CONTROLLER_H_ 6 #define ASH_TOUCH_TOUCH_TRANSFORMER_CONTROLLER_H_ 7 8 #include "ash/ash_export.h" 9 #include "ash/display/display_controller.h" 10 #include "ui/gfx/transform.h" 11 12 namespace ash { 13 14 // TouchTransformerController listens to display configuration change 15 // and updates the touch transformation for touch displays. 16 class ASH_EXPORT TouchTransformerController 17 : public DisplayController::Observer { 18 public: 19 TouchTransformerController(); 20 virtual ~TouchTransformerController(); 21 22 // Updates the TouchTransformer for touch device and pushes the new 23 // TouchTransformer into device manager. 24 void UpdateTouchTransformer() const; 25 26 // DisplayController::Observer: 27 virtual void OnDisplaysInitialized() OVERRIDE; 28 virtual void OnDisplayConfigurationChanged() OVERRIDE; 29 30 private: 31 FRIEND_TEST_ALL_PREFIXES(TouchTransformerControllerTest, 32 TouchTransformerMirrorModeLetterboxing); 33 FRIEND_TEST_ALL_PREFIXES(TouchTransformerControllerTest, 34 TouchTransformerMirrorModePillarboxing); 35 FRIEND_TEST_ALL_PREFIXES(TouchTransformerControllerTest, 36 TouchTransformerExtendedMode); 37 FRIEND_TEST_ALL_PREFIXES(TouchTransformerControllerTest, 38 TouchRadiusScale); 39 40 bool ShouldComputeMirrorModeTouchTransformer( 41 const DisplayInfo& touch_display) const ; 42 43 gfx::Transform GetMirrorModeTouchTransformer( 44 const DisplayInfo& touch_display) const; 45 46 gfx::Transform GetExtendedModeTouchTransformer( 47 const DisplayInfo& touch_display, const gfx::Size& fb_size) const; 48 49 double GetTouchResolutionScale(const DisplayInfo& touch_display) const; 50 51 // For unittests only. 52 bool force_compute_mirror_mode_touch_transformer_; 53 54 DISALLOW_COPY_AND_ASSIGN(TouchTransformerController); 55 }; 56 57 } // namespace ash 58 59 #endif // ASH_TOUCH_TOUCH_TRANSFORMER_CONTROLLER_H_ 60