| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "ash/display/display_manager.h" | 5 #include "ash/display/display_manager.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 struct ScaleComparator { | 79 struct ScaleComparator { |
| 80 ScaleComparator(float s) : scale(s) {} | 80 ScaleComparator(float s) : scale(s) {} |
| 81 | 81 |
| 82 bool operator()(float s) const { | 82 bool operator()(float s) const { |
| 83 const float kEpsilon = 0.0001f; | 83 const float kEpsilon = 0.0001f; |
| 84 return std::abs(scale - s) < kEpsilon; | 84 return std::abs(scale - s) < kEpsilon; |
| 85 } | 85 } |
| 86 float scale; | 86 float scale; |
| 87 }; | 87 }; |
| 88 | 88 |
| 89 std::vector<float> GetScalesForDisplay(const DisplayInfo& info) { | |
| 90 std::vector<float> ret; | |
| 91 if (info.device_scale_factor() == 2.0f) { | |
| 92 ret.assign(kUIScalesFor2x, kUIScalesFor2x + arraysize(kUIScalesFor2x)); | |
| 93 return ret; | |
| 94 } | |
| 95 switch (info.bounds_in_pixel().width()) { | |
| 96 case 1280: | |
| 97 ret.assign(kUIScalesFor1280, | |
| 98 kUIScalesFor1280 + arraysize(kUIScalesFor1280)); | |
| 99 break; | |
| 100 case 1366: | |
| 101 ret.assign(kUIScalesFor1366, | |
| 102 kUIScalesFor1366 + arraysize(kUIScalesFor1366)); | |
| 103 break; | |
| 104 default: | |
| 105 ret.assign(kUIScalesFor1280, | |
| 106 kUIScalesFor1280 + arraysize(kUIScalesFor1280)); | |
| 107 #if defined(OS_CHROMEOS) | |
| 108 if (base::chromeos::IsRunningOnChromeOS()) | |
| 109 NOTREACHED() << "Unknown resolution:" << info.ToString(); | |
| 110 #endif | |
| 111 } | |
| 112 return ret; | |
| 113 } | |
| 114 | |
| 115 gfx::Display& GetInvalidDisplay() { | 89 gfx::Display& GetInvalidDisplay() { |
| 116 static gfx::Display* invalid_display = new gfx::Display(); | 90 static gfx::Display* invalid_display = new gfx::Display(); |
| 117 return *invalid_display; | 91 return *invalid_display; |
| 118 } | 92 } |
| 119 | 93 |
| 120 } // namespace | 94 } // namespace |
| 121 | 95 |
| 122 using aura::RootWindow; | 96 using aura::RootWindow; |
| 123 using aura::Window; | 97 using aura::Window; |
| 124 using std::string; | 98 using std::string; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 136 #if defined(OS_CHROMEOS) | 110 #if defined(OS_CHROMEOS) |
| 137 change_display_upon_host_resize_ = !base::chromeos::IsRunningOnChromeOS(); | 111 change_display_upon_host_resize_ = !base::chromeos::IsRunningOnChromeOS(); |
| 138 #endif | 112 #endif |
| 139 Init(); | 113 Init(); |
| 140 } | 114 } |
| 141 | 115 |
| 142 DisplayManager::~DisplayManager() { | 116 DisplayManager::~DisplayManager() { |
| 143 } | 117 } |
| 144 | 118 |
| 145 // static | 119 // static |
| 120 std::vector<float> DisplayManager::GetScalesForDisplay( |
| 121 const DisplayInfo& info) { |
| 122 std::vector<float> ret; |
| 123 if (info.device_scale_factor() == 2.0f) { |
| 124 ret.assign(kUIScalesFor2x, kUIScalesFor2x + arraysize(kUIScalesFor2x)); |
| 125 return ret; |
| 126 } |
| 127 switch (info.bounds_in_pixel().width()) { |
| 128 case 1280: |
| 129 ret.assign(kUIScalesFor1280, |
| 130 kUIScalesFor1280 + arraysize(kUIScalesFor1280)); |
| 131 break; |
| 132 case 1366: |
| 133 ret.assign(kUIScalesFor1366, |
| 134 kUIScalesFor1366 + arraysize(kUIScalesFor1366)); |
| 135 break; |
| 136 default: |
| 137 ret.assign(kUIScalesFor1280, |
| 138 kUIScalesFor1280 + arraysize(kUIScalesFor1280)); |
| 139 #if defined(OS_CHROMEOS) |
| 140 if (base::chromeos::IsRunningOnChromeOS()) |
| 141 NOTREACHED() << "Unknown resolution:" << info.ToString(); |
| 142 #endif |
| 143 } |
| 144 return ret; |
| 145 } |
| 146 |
| 147 // static |
| 146 float DisplayManager::GetNextUIScale(const DisplayInfo& info, bool up) { | 148 float DisplayManager::GetNextUIScale(const DisplayInfo& info, bool up) { |
| 147 float scale = info.ui_scale(); | 149 float scale = info.ui_scale(); |
| 148 std::vector<float> scales = GetScalesForDisplay(info); | 150 std::vector<float> scales = GetScalesForDisplay(info); |
| 149 for (size_t i = 0; i < scales.size(); ++i) { | 151 for (size_t i = 0; i < scales.size(); ++i) { |
| 150 if (ScaleComparator(scales[i])(scale)) { | 152 if (ScaleComparator(scales[i])(scale)) { |
| 151 if (up && i != scales.size() - 1) | 153 if (up && i != scales.size() - 1) |
| 152 return scales[i + 1]; | 154 return scales[i + 1]; |
| 153 if (!up && i != 0) | 155 if (!up && i != 0) |
| 154 return scales[i - 1]; | 156 return scales[i - 1]; |
| 155 return scales[i]; | 157 return scales[i]; |
| (...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 740 // always (0,0) and the secondary display's bounds will be updated | 742 // always (0,0) and the secondary display's bounds will be updated |
| 741 // by |DisplayController::UpdateDisplayBoundsForLayout|. | 743 // by |DisplayController::UpdateDisplayBoundsForLayout|. |
| 742 new_display.SetScaleAndBounds( | 744 new_display.SetScaleAndBounds( |
| 743 display_info.device_scale_factor(), gfx::Rect(bounds_in_pixel.size())); | 745 display_info.device_scale_factor(), gfx::Rect(bounds_in_pixel.size())); |
| 744 new_display.set_rotation(display_info.rotation()); | 746 new_display.set_rotation(display_info.rotation()); |
| 745 return new_display; | 747 return new_display; |
| 746 } | 748 } |
| 747 | 749 |
| 748 } // namespace internal | 750 } // namespace internal |
| 749 } // namespace ash | 751 } // namespace ash |
| OLD | NEW |