• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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