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