| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_DISPLAY_TYPES_DISPLAY_SNAPSHOT_H_ |
| #define UI_DISPLAY_TYPES_DISPLAY_SNAPSHOT_H_ |
| |
| #include <stdint.h> |
| |
| #include <vector> |
| |
| #include "base/files/file_path.h" |
| #include "base/macros.h" |
| #include "ui/display/types/display_constants.h" |
| #include "ui/display/types/display_mode.h" |
| #include "ui/gfx/buffer_types.h" |
| #include "ui/gfx/geometry/point.h" |
| #include "ui/gfx/geometry/size.h" |
| |
| namespace ui { |
| |
| // This class represents the state of a display at one point in time. Platforms |
| // will extend this class in order to add platform specific configuration and |
| // identifiers required to configure this display. |
| class DISPLAY_TYPES_EXPORT DisplaySnapshot { |
| public: |
| using DisplayModeList = std::vector<std::unique_ptr<const DisplayMode>>; |
| |
| DisplaySnapshot(int64_t display_id, |
| const gfx::Point& origin, |
| const gfx::Size& physical_size, |
| DisplayConnectionType type, |
| bool is_aspect_preserving_scaling, |
| bool has_overscan, |
| bool has_color_correction_matrix, |
| std::string display_name, |
| const base::FilePath& sys_path, |
| DisplayModeList modes, |
| const std::vector<uint8_t>& edid, |
| const DisplayMode* current_mode, |
| const DisplayMode* native_mode); |
| virtual ~DisplaySnapshot(); |
| |
| const gfx::Point& origin() const { return origin_; } |
| const gfx::Size& physical_size() const { return physical_size_; } |
| ui::DisplayConnectionType type() const { return type_; } |
| bool is_aspect_preserving_scaling() const { |
| return is_aspect_preserving_scaling_; |
| } |
| bool has_overscan() const { return has_overscan_; } |
| std::string display_name() const { return display_name_; } |
| const base::FilePath& sys_path() const { return sys_path_; } |
| |
| int64_t display_id() const { return display_id_; } |
| |
| const DisplayMode* current_mode() const { return current_mode_; } |
| const DisplayMode* native_mode() const { return native_mode_; } |
| int64_t product_id() const { return product_id_; } |
| const gfx::Size& maximum_cursor_size() const { return maximum_cursor_size_; } |
| |
| const DisplayModeList& modes() const { return modes_; } |
| const std::vector<uint8_t>& edid() const { return edid_; } |
| |
| void set_current_mode(const DisplayMode* mode) { current_mode_ = mode; } |
| void set_origin(const gfx::Point& origin) { origin_ = origin; } |
| void add_mode(const DisplayMode* mode) { |
| modes_.push_back(mode->Clone()); |
| } |
| |
| // Whether this display has advanced color correction available. |
| bool has_color_correction_matrix() const { |
| return has_color_correction_matrix_; |
| } |
| |
| // Returns a textual representation of this display state. |
| virtual std::string ToString() const = 0; |
| |
| // Used when no product id known. |
| static const int64_t kInvalidProductID = -1; |
| |
| // Return the buffer format to be used for the primary plane buffer. |
| static gfx::BufferFormat PrimaryFormat(); |
| |
| protected: |
| // Display id for this output. |
| int64_t display_id_; |
| |
| // Display's origin on the framebuffer. |
| gfx::Point origin_; |
| |
| gfx::Size physical_size_; |
| |
| DisplayConnectionType type_; |
| |
| bool is_aspect_preserving_scaling_; |
| |
| bool has_overscan_; |
| |
| bool has_color_correction_matrix_; |
| |
| std::string display_name_; |
| |
| base::FilePath sys_path_; |
| |
| DisplayModeList modes_; |
| |
| // The display's EDID. It can be empty if nothing extracted such as in the |
| // case of a virtual display. |
| std::vector<uint8_t> edid_; |
| |
| // Mode currently being used by the output. |
| const DisplayMode* current_mode_; |
| |
| // "Best" mode supported by the output. |
| const DisplayMode* native_mode_; |
| |
| // Combination of manufacturer and product code. |
| int64_t product_id_; |
| |
| // Maximum supported cursor size on this display. |
| gfx::Size maximum_cursor_size_; |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(DisplaySnapshot); |
| }; |
| |
| } // namespace ui |
| |
| #endif // UI_DISPLAY_TYPES_DISPLAY_SNAPSHOT_H_ |