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 origin()35 const gfx::Point& origin() const { return origin_; } physical_size()36 const gfx::Size& physical_size() const { return physical_size_; } type()37 ui::DisplayConnectionType type() const { return type_; } is_aspect_preserving_scaling()38 bool is_aspect_preserving_scaling() const { 39 return is_aspect_preserving_scaling_; 40 } has_overscan()41 bool has_overscan() const { return has_overscan_; } display_name()42 std::string display_name() const { return display_name_; } 43 display_id()44 int64_t display_id() const { return display_id_; } has_proper_display_id()45 bool has_proper_display_id() const { return has_proper_display_id_; } 46 current_mode()47 const DisplayMode* current_mode() const { return current_mode_; } native_mode()48 const DisplayMode* native_mode() const { return native_mode_; } 49 modes()50 const std::vector<const DisplayMode*>& modes() const { return modes_; } 51 set_current_mode(const DisplayMode * mode)52 void set_current_mode(const DisplayMode* mode) { current_mode_ = mode; } set_origin(const gfx::Point & origin)53 void set_origin(const gfx::Point& origin) { origin_ = origin; } add_mode(const DisplayMode * mode)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