OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef ASH_DISPLAY_DISPLAY_INFO_H_ | 5 #ifndef ASH_DISPLAY_DISPLAY_INFO_H_ |
6 #define ASH_DISPLAY_DISPLAY_INFO_H_ | 6 #define ASH_DISPLAY_DISPLAY_INFO_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "ash/ash_export.h" | 11 #include "ash/ash_export.h" |
12 #include "ui/gfx/display.h" | 12 #include "ui/gfx/display.h" |
13 #include "ui/gfx/insets.h" | 13 #include "ui/gfx/insets.h" |
14 #include "ui/gfx/rect.h" | 14 #include "ui/gfx/rect.h" |
15 | 15 |
16 namespace ash { | 16 namespace ash { |
17 namespace internal { | 17 namespace internal { |
18 | 18 |
19 // A struct that represents the display's mode info. | 19 // A struct that represents the display's resolution and |
20 struct ASH_EXPORT DisplayMode { | 20 // interlaced info. |
21 DisplayMode(); | 21 struct ASH_EXPORT Resolution { |
22 DisplayMode(const gfx::Size& size, | 22 Resolution(const gfx::Size& size, bool interlaced); |
23 float refresh_rate, | |
24 bool interlaced, | |
25 bool native); | |
26 | 23 |
27 gfx::Size size; // Physical pixel size of the display. | 24 gfx::Size size; |
28 float refresh_rate; // Refresh rate of the display, in Hz. | 25 bool interlaced; |
29 bool interlaced; // True if mode is interlaced. | |
30 bool native; // True if mode is native mode of the display. | |
31 }; | 26 }; |
32 | 27 |
33 // DisplayInfo contains metadata for each display. This is used to | 28 // DisplayInfo contains metadata for each display. This is used to |
34 // create |gfx::Display| as well as to maintain extra infomation | 29 // create |gfx::Display| as well as to maintain extra infomation |
35 // to manage displays in ash environment. | 30 // to manage displays in ash environment. |
36 // This class is intentionally made copiable. | 31 // This class is intentionally made copiable. |
37 class ASH_EXPORT DisplayInfo { | 32 class ASH_EXPORT DisplayInfo { |
38 public: | 33 public: |
39 // Creates a DisplayInfo from string spec. 100+200-1440x800 creates display | 34 // Creates a DisplayInfo from string spec. 100+200-1440x800 creates display |
40 // whose size is 1440x800 at the location (100, 200) in host coordinates. | 35 // whose size is 1440x800 at the location (100, 200) in host coordinates. |
41 // The format is | 36 // The format is |
42 // | 37 // |
43 // [origin-]widthxheight[*device_scale_factor][#resolutions list] | 38 // [origin-]widthxheight[*device_scale_factor][#resolutions list] |
44 // [/<properties>][@ui-scale] | 39 // [/<properties>][@ui-scale] |
45 // | 40 // |
46 // where [] are optional: | 41 // where [] are optional: |
47 // - |origin| is given in x+y- format. | 42 // - |origin| is given in x+y- format. |
48 // - |device_scale_factor| is either 2 or 1 (or empty). | 43 // - |device_scale_factor| is either 2 or 1 (or empty). |
49 // - properties can combination of 'o', which adds default overscan insets | 44 // - properties can combination of 'o', which adds default overscan insets |
50 // (5%), and one rotation property where 'r' is 90 degree clock-wise | 45 // (5%), and one rotation property where 'r' is 90 degree clock-wise |
51 // (to the 'r'ight) 'u' is 180 degrees ('u'pside-down) and 'l' is | 46 // (to the 'r'ight) 'u' is 180 degrees ('u'pside-down) and 'l' is |
52 // 270 degrees (to the 'l'eft). | 47 // 270 degrees (to the 'l'eft). |
53 // - ui-scale is floating value, e.g. @1.5 or @1.25. | 48 // - ui-scale is floating value, e.g. @1.5 or @1.25. |
54 // - |resolution list| is the list of size that is given in | 49 // - |resolution list| is the list of size that is given in |
55 // |width x height [% refresh_rate]| separated by '|'. | 50 // |width x height| separated by '|'. |
56 // | 51 // |
57 // A couple of examples: | 52 // A couple of examples: |
58 // "100x100" | 53 // "100x100" |
59 // 100x100 window at 0,0 origin. 1x device scale factor. no overscan. | 54 // 100x100 window at 0,0 origin. 1x device scale factor. no overscan. |
60 // no rotation. 1.0 ui scale. | 55 // no rotation. 1.0 ui scale. |
61 // "5+5-300x200*2" | 56 // "5+5-300x200*2" |
62 // 300x200 window at 5,5 origin. 2x device scale factor. | 57 // 300x200 window at 5,5 origin. 2x device scale factor. |
63 // no overscan, no rotation. 1.0 ui scale. | 58 // no overscan, no rotation. 1.0 ui scale. |
64 // "300x200/ol" | 59 // "300x200/ol" |
65 // 300x200 window at 0,0 origin. 1x device scale factor. | 60 // 300x200 window at 0,0 origin. 1x device scale factor. |
66 // with 5% overscan. rotated to left (90 degree counter clockwise). | 61 // with 5% overscan. rotated to left (90 degree counter clockwise). |
67 // 1.0 ui scale. | 62 // 1.0 ui scale. |
68 // "10+20-300x200/u@1.5" | 63 // "10+20-300x200/u@1.5" |
69 // 300x200 window at 10,20 origin. 1x device scale factor. | 64 // 300x200 window at 10,20 origin. 1x device scale factor. |
70 // no overscan. flipped upside-down (180 degree) and 1.5 ui scale. | 65 // no overscan. flipped upside-down (180 degree) and 1.5 ui scale. |
71 // "200x100#300x200|200x100%59.0|100x100%60" | 66 // "200x100#300x200|200x100|100x100" |
72 // 200x100 window at 0,0 origin, with 3 possible resolutions, | 67 // 200x100 window at 0,0 origin, with 3 possible resolutions, |
73 // 300x200, 200x100 at 59 Hz, and 100x100 at 60 Hz. | 68 // 300x200, 200x100 and 100x100. |
74 static DisplayInfo CreateFromSpec(const std::string& spec); | 69 static DisplayInfo CreateFromSpec(const std::string& spec); |
75 | 70 |
76 // Creates a DisplayInfo from string spec using given |id|. | 71 // Creates a DisplayInfo from string spec using given |id|. |
77 static DisplayInfo CreateFromSpecWithID(const std::string& spec, | 72 static DisplayInfo CreateFromSpecWithID(const std::string& spec, |
78 int64 id); | 73 int64 id); |
79 | 74 |
80 DisplayInfo(); | 75 DisplayInfo(); |
81 DisplayInfo(int64 id, const std::string& name, bool has_overscan); | 76 DisplayInfo(int64 id, const std::string& name, bool has_overscan); |
82 ~DisplayInfo(); | 77 ~DisplayInfo(); |
83 | 78 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 // and rotation settings. | 135 // and rotation settings. |
141 void UpdateDisplaySize(); | 136 void UpdateDisplaySize(); |
142 | 137 |
143 // Sets/Clears the overscan insets. | 138 // Sets/Clears the overscan insets. |
144 void SetOverscanInsets(const gfx::Insets& insets_in_dip); | 139 void SetOverscanInsets(const gfx::Insets& insets_in_dip); |
145 gfx::Insets GetOverscanInsetsInPixel() const; | 140 gfx::Insets GetOverscanInsetsInPixel() const; |
146 | 141 |
147 void set_native(bool native) { native_ = native; } | 142 void set_native(bool native) { native_ = native; } |
148 bool native() const { return native_; } | 143 bool native() const { return native_; } |
149 | 144 |
150 const std::vector<DisplayMode>& display_modes() const { | 145 const std::vector<Resolution>& resolutions() const { |
151 return display_modes_; | 146 return resolutions_; |
152 } | 147 } |
153 void set_display_modes(std::vector<DisplayMode>& display_modes) { | 148 void set_resolutions(std::vector<Resolution>& resolution) { |
154 display_modes_.swap(display_modes); | 149 resolutions_.swap(resolution); |
155 } | 150 } |
156 | 151 |
157 // Returns a string representation of the DisplayInfo, excluding display | 152 // Returns a string representation of the DisplayInfo |
158 // modes. | 153 // excluding resolutions. |
159 std::string ToString() const; | 154 std::string ToString() const; |
160 | 155 |
161 // Returns a string representation of the DisplayInfo, including display | 156 // Returns a string representation of the DisplayInfo |
162 // modes. | 157 // including resolutions. |
163 std::string ToFullString() const; | 158 std::string ToFullString() const; |
164 | 159 |
165 private: | 160 private: |
166 int64 id_; | 161 int64 id_; |
167 std::string name_; | 162 std::string name_; |
168 bool has_overscan_; | 163 bool has_overscan_; |
169 gfx::Display::Rotation rotation_; | 164 gfx::Display::Rotation rotation_; |
170 gfx::Display::TouchSupport touch_support_; | 165 gfx::Display::TouchSupport touch_support_; |
171 | 166 |
172 // This specifies the device's pixel density. (For example, a | 167 // This specifies the device's pixel density. (For example, a |
(...skipping 13 matching lines...) Expand all Loading... |
186 // shrink) the desktop over the native display resolution (useful in | 181 // shrink) the desktop over the native display resolution (useful in |
187 // HighDPI display). Note that this should not be confused with the | 182 // HighDPI display). Note that this should not be confused with the |
188 // device scale factor, which specifies the pixel density of the | 183 // device scale factor, which specifies the pixel density of the |
189 // display. The actuall scale value to be used depends on the device | 184 // display. The actuall scale value to be used depends on the device |
190 // scale factor. See |GetEffectiveScaleFactor()|. | 185 // scale factor. See |GetEffectiveScaleFactor()|. |
191 float configured_ui_scale_; | 186 float configured_ui_scale_; |
192 | 187 |
193 // True if this comes from native platform (DisplayChangeObserver). | 188 // True if this comes from native platform (DisplayChangeObserver). |
194 bool native_; | 189 bool native_; |
195 | 190 |
196 // The list of modes supported by this display. | 191 // The list of resolutions supported by this display. |
197 std::vector<DisplayMode> display_modes_; | 192 std::vector<Resolution> resolutions_; |
198 }; | 193 }; |
199 | 194 |
200 } // namespace internal | 195 } // namespace internal |
201 } // namespace ash | 196 } // namespace ash |
202 | 197 |
203 #endif // ASH_DISPLAY_DISPLAY_INFO_H_ | 198 #endif // ASH_DISPLAY_DISPLAY_INFO_H_ |
OLD | NEW |