| 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 |