Home | History | Annotate | Download | only in types
      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 UI_DISPLAY_TYPES_DISPLAY_SNAPSHOT_H_
      6 #define UI_DISPLAY_TYPES_DISPLAY_SNAPSHOT_H_
      7 
      8 #include <vector>
      9 
     10 #include "ui/display/types/display_constants.h"
     11 #include "ui/display/types/display_mode.h"
     12 #include "ui/gfx/geometry/point.h"
     13 #include "ui/gfx/geometry/size.h"
     14 
     15 namespace ui {
     16 
     17 // This class represents the state of a display at one point in time. Platforms
     18 // will extend this class in order to add platform specific configuration and
     19 // identifiers required to configure this display.
     20 class DISPLAY_TYPES_EXPORT DisplaySnapshot {
     21  public:
     22   DisplaySnapshot(int64_t display_id,
     23                   bool has_proper_display_id,
     24                   const gfx::Point& origin,
     25                   const gfx::Size& physical_size,
     26                   DisplayConnectionType type,
     27                   bool is_aspect_preserving_scaling,
     28                   bool has_overscan,
     29                   std::string display_name,
     30                   const std::vector<const DisplayMode*>& modes,
     31                   const DisplayMode* current_mode,
     32                   const DisplayMode* native_mode);
     33   virtual ~DisplaySnapshot();
     34 
     35   const gfx::Point& origin() const { return origin_; }
     36   const gfx::Size& physical_size() const { return physical_size_; }
     37   ui::DisplayConnectionType type() const { return type_; }
     38   bool is_aspect_preserving_scaling() const {
     39     return is_aspect_preserving_scaling_;
     40   }
     41   bool has_overscan() const { return has_overscan_; }
     42   std::string display_name() const { return display_name_; }
     43 
     44   int64_t display_id() const { return display_id_; }
     45   bool has_proper_display_id() const { return has_proper_display_id_; }
     46 
     47   const DisplayMode* current_mode() const { return current_mode_; }
     48   const DisplayMode* native_mode() const { return native_mode_; }
     49 
     50   const std::vector<const DisplayMode*>& modes() const { return modes_; }
     51 
     52   void set_current_mode(const DisplayMode* mode) { current_mode_ = mode; }
     53   void set_origin(const gfx::Point& origin) { origin_ = origin; }
     54   void add_mode(const DisplayMode* mode) { modes_.push_back(mode); }
     55 
     56   // Returns a textual representation of this display state.
     57   virtual std::string ToString() const = 0;
     58 
     59  protected:
     60   // Display id for this output.
     61   int64_t display_id_;
     62   bool has_proper_display_id_;
     63 
     64   // Display's origin on the framebuffer.
     65   gfx::Point origin_;
     66 
     67   gfx::Size physical_size_;
     68 
     69   DisplayConnectionType type_;
     70 
     71   bool is_aspect_preserving_scaling_;
     72 
     73   bool has_overscan_;
     74 
     75   std::string display_name_;
     76 
     77   std::vector<const DisplayMode*> modes_;  // Not owned.
     78 
     79   // Mode currently being used by the output.
     80   const DisplayMode* current_mode_;
     81 
     82   // "Best" mode supported by the output.
     83   const DisplayMode* native_mode_;
     84 
     85   DISALLOW_COPY_AND_ASSIGN(DisplaySnapshot);
     86 };
     87 
     88 }  // namespace ui
     89 
     90 #endif  // UI_DISPLAY_TYPES_DISPLAY_SNAPSHOT_H_
     91