Home | History | Annotate | Download | only in touch
      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