Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / ui / display / types / chromeos / display_snapshot.h
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_CHROMEOS_DISPLAY_SNAPSHOT_H_
6 #define UI_DISPLAY_TYPES_CHROMEOS_DISPLAY_SNAPSHOT_H_
7
8 #include <vector>
9
10 #include "ui/display/types/chromeos/display_mode.h"
11 #include "ui/display/types/display_constants.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_CHROMEOS_DISPLAY_SNAPSHOT_H_