Home | History | Annotate | Download | only in display
      1 // Copyright (c) 2012 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 CHROME_BROWSER_CHROMEOS_DISPLAY_OVERSCAN_CALIBRATOR_H_
      6 #define CHROME_BROWSER_CHROMEOS_DISPLAY_OVERSCAN_CALIBRATOR_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/memory/scoped_ptr.h"
     10 #include "ui/compositor/layer_delegate.h"
     11 #include "ui/gfx/display.h"
     12 #include "ui/gfx/insets.h"
     13 #include "ui/gfx/rect.h"
     14 
     15 namespace ui {
     16 class Layer;
     17 }
     18 
     19 namespace chromeos {
     20 
     21 // This is used to show the visible feedback to the user's operations for
     22 // calibrating display overscan settings.
     23 class OverscanCalibrator : public ui::LayerDelegate {
     24  public:
     25   OverscanCalibrator(const gfx::Display& target_display,
     26                      const gfx::Insets& initial_insets);
     27   virtual ~OverscanCalibrator();
     28 
     29   // Commits the current insets data to the system.
     30   void Commit();
     31 
     32   // Reset the overscan insets to default value.  If the display has
     33   // overscan, the default value is the display's default overscan
     34   // value. Otherwise, the default value is the old |initial_insets_|.
     35   void Reset();
     36 
     37   // Updates the insets and redraw the visual feedback.
     38   void UpdateInsets(const gfx::Insets& insets);
     39 
     40   const gfx::Insets& insets() const { return insets_; }
     41 
     42  private:
     43   // ui::LayerDelegate overrides:
     44   virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE;
     45   virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE;
     46   virtual base::Closure PrepareForLayerBoundsChange() OVERRIDE;
     47 
     48   // The target display.
     49   const gfx::Display display_;
     50 
     51   // The current insets.
     52   gfx::Insets insets_;
     53 
     54   // The insets initially given. Stored so we can undo the insets later.
     55   gfx::Insets initial_insets_;
     56 
     57   // Whether the current insets are committed to the system or not.
     58   bool committed_;
     59 
     60   // The visualization layer for the current calibration region.
     61   scoped_ptr<ui::Layer> calibration_layer_;
     62 
     63   DISALLOW_COPY_AND_ASSIGN(OverscanCalibrator);
     64 };
     65 
     66 }  // namespace chromeos
     67 
     68 #endif  // CHROME_BROWSER_CHROMEOS_DISPLAY_OVERSCAN_CALIBRATOR_H_
     69