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 "ui/base/layout.h" | 5 #include "ui/base/layout.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <limits> | 9 #include <limits> |
10 | 10 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 } | 83 } |
84 | 84 |
85 float GetImageScale(ScaleFactor scale_factor) { | 85 float GetImageScale(ScaleFactor scale_factor) { |
86 #if defined(OS_WIN) | 86 #if defined(OS_WIN) |
87 if (gfx::IsHighDPIEnabled()) | 87 if (gfx::IsHighDPIEnabled()) |
88 return gfx::win::GetDeviceScaleFactor(); | 88 return gfx::win::GetDeviceScaleFactor(); |
89 #endif | 89 #endif |
90 return GetScaleForScaleFactor(scale_factor); | 90 return GetScaleForScaleFactor(scale_factor); |
91 } | 91 } |
92 | 92 |
93 bool IsScaleFactorSupported(ScaleFactor scale_factor) { | |
94 DCHECK(g_supported_scale_factors != NULL); | |
95 return std::find(g_supported_scale_factors->begin(), | |
96 g_supported_scale_factors->end(), | |
97 scale_factor) != g_supported_scale_factors->end(); | |
98 } | |
99 | |
100 // Returns the scale factor closest to |scale| from the full list of factors. | |
101 // Note that it does NOT rely on the list of supported scale factors. | |
102 // Finding the closest match is inefficient and shouldn't be done frequently. | |
103 ScaleFactor FindClosestScaleFactorUnsafe(float scale) { | |
104 float smallest_diff = std::numeric_limits<float>::max(); | |
105 ScaleFactor closest_match = SCALE_FACTOR_100P; | |
106 for (int i = SCALE_FACTOR_100P; i < NUM_SCALE_FACTORS; ++i) { | |
107 const ScaleFactor scale_factor = static_cast<ScaleFactor>(i); | |
108 float diff = std::abs(kScaleFactorScales[scale_factor] - scale); | |
109 if (diff < smallest_diff) { | |
110 closest_match = scale_factor; | |
111 smallest_diff = diff; | |
112 } | |
113 } | |
114 return closest_match; | |
115 } | |
116 | |
117 float GetScaleForScaleFactor(ScaleFactor scale_factor) { | 93 float GetScaleForScaleFactor(ScaleFactor scale_factor) { |
118 return kScaleFactorScales[scale_factor]; | 94 return kScaleFactorScales[scale_factor]; |
119 } | 95 } |
120 | 96 |
121 namespace test { | 97 namespace test { |
122 | 98 |
123 ScopedSetSupportedScaleFactors::ScopedSetSupportedScaleFactors( | 99 ScopedSetSupportedScaleFactors::ScopedSetSupportedScaleFactors( |
124 const std::vector<ui::ScaleFactor>& new_scale_factors) { | 100 const std::vector<ui::ScaleFactor>& new_scale_factors) { |
125 if (g_supported_scale_factors) { | 101 if (g_supported_scale_factors) { |
126 original_scale_factors_ = | 102 original_scale_factors_ = |
(...skipping 21 matching lines...) Expand all Loading... |
148 gfx::Screen* screen = gfx::Screen::GetScreenFor(view); | 124 gfx::Screen* screen = gfx::Screen::GetScreenFor(view); |
149 if (screen->IsDIPEnabled()) { | 125 if (screen->IsDIPEnabled()) { |
150 gfx::Display display = screen->GetDisplayNearestWindow(view); | 126 gfx::Display display = screen->GetDisplayNearestWindow(view); |
151 return display.device_scale_factor(); | 127 return display.device_scale_factor(); |
152 } | 128 } |
153 return 1.0f; | 129 return 1.0f; |
154 } | 130 } |
155 #endif // !defined(OS_MACOSX) | 131 #endif // !defined(OS_MACOSX) |
156 | 132 |
157 } // namespace ui | 133 } // namespace ui |
OLD | NEW |