Index: ui/base/layout.cc |
diff --git a/ui/base/layout.cc b/ui/base/layout.cc |
index 2c1fb51a3952706e1f6d77a0b2f29a46c2508124..6bc382ee565035b4dd9bd7b04dd7e61f033f5f29 100644 |
--- a/ui/base/layout.cc |
+++ b/ui/base/layout.cc |
@@ -20,6 +20,7 @@ |
#if defined(OS_WIN) |
#include "base/win/metro.h" |
+#include "ui/gfx/win/dpi.h" |
#include <Windows.h> |
#endif // defined(OS_WIN) |
@@ -60,13 +61,13 @@ bool UseTouchOptimizedUI() { |
} |
#endif // defined(OS_WIN) |
-const float kScaleFactorScales[] = {1.0f, 1.0f, 1.25f, 1.33f, 1.4f, 1.5f, 1.8f, |
- 2.0f, 3.0f}; |
-COMPILE_ASSERT(NUM_SCALE_FACTORS == arraysize(kScaleFactorScales), |
- kScaleFactorScales_incorrect_size); |
- |
} // namespace |
+float g_kScaleFactorScales[] = {1.0f, 1.0f, 1.25f, 1.33f, 1.4f, 1.5f, 1.8f, |
+ 2.0f, 3.0f}; |
+COMPILE_ASSERT(NUM_SCALE_FACTORS == arraysize(g_kScaleFactorScales), |
+ kScaleFactorScales_incorrect_size); |
+ |
DisplayLayout GetDisplayLayout() { |
#if defined(OS_WIN) |
if (UseTouchOptimizedUI()) |
@@ -90,7 +91,7 @@ void SetSupportedScaleFactors( |
for (std::vector<ScaleFactor>::const_iterator it = |
g_supported_scale_factors->begin(); |
it != g_supported_scale_factors->end(); ++it) { |
- scales.push_back(GetImageScale(*it)); |
+ scales.push_back(g_kScaleFactorScales[*it]); |
} |
gfx::ImageSkia::SetSupportedScales(scales); |
} |
@@ -106,7 +107,7 @@ ScaleFactor GetSupportedScaleFactor(float scale) { |
float smallest_diff = std::numeric_limits<float>::max(); |
for (size_t i = 0; i < g_supported_scale_factors->size(); ++i) { |
ScaleFactor scale_factor = (*g_supported_scale_factors)[i]; |
- float diff = std::abs(kScaleFactorScales[scale_factor] - scale); |
+ float diff = std::abs(g_kScaleFactorScales[scale_factor] - scale); |
if (diff < smallest_diff) { |
closest_match = scale_factor; |
smallest_diff = diff; |
@@ -117,7 +118,11 @@ ScaleFactor GetSupportedScaleFactor(float scale) { |
} |
float GetImageScale(ScaleFactor scale_factor) { |
- return kScaleFactorScales[scale_factor]; |
+#if defined(OS_WIN) |
+ if (gfx::IsHighDPIEnabled()) |
+ return gfx::win::GetDeviceScaleFactor(); |
+#endif |
+ return g_kScaleFactorScales[scale_factor]; |
} |
bool IsScaleFactorSupported(ScaleFactor scale_factor) { |
@@ -135,7 +140,7 @@ ScaleFactor FindClosestScaleFactorUnsafe(float scale) { |
ScaleFactor closest_match = SCALE_FACTOR_100P; |
for (int i = SCALE_FACTOR_100P; i < NUM_SCALE_FACTORS; ++i) { |
const ScaleFactor scale_factor = static_cast<ScaleFactor>(i); |
- float diff = std::abs(kScaleFactorScales[scale_factor] - scale); |
+ float diff = std::abs(g_kScaleFactorScales[scale_factor] - scale); |
if (diff < smallest_diff) { |
closest_match = scale_factor; |
smallest_diff = diff; |