Index: ui/gfx/dpi_win.cc |
diff --git a/ui/gfx/win/dpi.cc b/ui/gfx/dpi_win.cc |
similarity index 50% |
rename from ui/gfx/win/dpi.cc |
rename to ui/gfx/dpi_win.cc |
index 2777f7cb01235bb838de9c8e7b42343a1f5f2499..a7f6732ae2d3c284cd83e55c7ca65f6fa1d2c368 100644 |
--- a/ui/gfx/win/dpi.cc |
+++ b/ui/gfx/dpi_win.cc |
@@ -1,13 +1,15 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "ui/gfx/win/dpi.h" |
+#include "ui/gfx/dpi.h" |
#include <windows.h> |
+ |
+#include "base/logging.h" |
+#include "base/win/registry.h" |
#include "base/win/scoped_hdc.h" |
#include "base/win/windows_version.h" |
-#include "base/win/registry.h" |
#include "ui/gfx/display.h" |
#include "ui/gfx/point_conversions.h" |
#include "ui/gfx/rect_conversions.h" |
@@ -15,32 +17,19 @@ |
namespace { |
-int kDefaultDPIX = 96; |
-int kDefaultDPIY = 96; |
- |
-bool force_highdpi_for_testing = false; |
- |
-BOOL IsProcessDPIAwareWrapper() { |
- typedef BOOL(WINAPI *IsProcessDPIAwarePtr)(VOID); |
- IsProcessDPIAwarePtr is_process_dpi_aware_func = |
- reinterpret_cast<IsProcessDPIAwarePtr>( |
- GetProcAddress(GetModuleHandleA("user32.dll"), "IsProcessDPIAware")); |
- if (is_process_dpi_aware_func) |
- return is_process_dpi_aware_func(); |
- return FALSE; |
-} |
- |
-float g_device_scale_factor = 0.0f; |
- |
-float GetUnforcedDeviceScaleFactor() { |
- // If the global device scale factor is initialized use it. This is to ensure |
- // we use the same scale factor across all callsites. We don't use the |
- // GetDeviceScaleFactor function here because it fires a DCHECK if the |
- // g_device_scale_factor global is 0. |
- if (g_device_scale_factor) |
- return g_device_scale_factor; |
- return static_cast<float>(gfx::GetDPI().width()) / |
- static_cast<float>(kDefaultDPIX); |
+DWORD ReadRegistryValue(HKEY root, |
+ const wchar_t* base_key, |
+ const wchar_t* value_name, |
+ DWORD default_value) { |
+ base::win::RegKey reg_key(HKEY_CURRENT_USER, |
+ base_key, |
+ KEY_QUERY_VALUE); |
+ DWORD value; |
+ if (reg_key.Valid() && |
+ reg_key.ReadValueDW(value_name, &value) == ERROR_SUCCESS) { |
+ return value; |
+ } |
+ return default_value; |
} |
// Duplicated from Win8.1 SDK ShellScalingApi.h |
@@ -89,30 +78,10 @@ BOOL SetProcessDPIAwareWrapper() { |
set_process_dpi_aware_func(); |
} |
-DWORD ReadRegistryValue(HKEY root, |
- const wchar_t* base_key, |
- const wchar_t* value_name, |
- DWORD default_value) { |
- base::win::RegKey reg_key(HKEY_CURRENT_USER, |
- base_key, |
- KEY_QUERY_VALUE); |
- DWORD value; |
- if (reg_key.Valid() && |
- reg_key.ReadValueDW(value_name, &value) == ERROR_SUCCESS) { |
- return value; |
- } |
- return default_value; |
-} |
- |
} // namespace |
namespace gfx { |
-void InitDeviceScaleFactor(float scale) { |
- DCHECK_NE(0.0f, scale); |
- g_device_scale_factor = scale; |
-} |
- |
Size GetDPI() { |
static int dpi_x = 0; |
static int dpi_y = 0; |
@@ -130,38 +99,20 @@ Size GetDPI() { |
return Size(dpi_x, dpi_y); |
} |
-float GetDPIScale() { |
- if (IsHighDPIEnabled()) { |
- if (gfx::Display::HasForceDeviceScaleFactor()) |
- return gfx::Display::GetForcedDeviceScaleFactor(); |
- float dpi_scale = GetUnforcedDeviceScaleFactor(); |
- if (dpi_scale <= 1.25) { |
- // Force 125% and below to 100% scale. We do this to maintain previous |
- // (non-DPI-aware) behavior where only the font size was boosted. |
- dpi_scale = 1.0; |
- } |
- return dpi_scale; |
- } |
- return 1.0; |
-} |
- |
-void ForceHighDPISupportForTesting(float scale) { |
- g_device_scale_factor = scale; |
-} |
- |
bool IsHighDPIEnabled() { |
+ static const wchar_t kRegistryProfilePath[] = |
+ L"Software\\Google\\Chrome\\Profile"; |
+ static const wchar_t kHighDPISupportW[] = L"high-dpi-support"; |
+ |
// Flag stored in HKEY_CURRENT_USER\SOFTWARE\\Google\\Chrome\\Profile, |
// under the DWORD value high-dpi-support. |
// Default is disabled. |
static DWORD value = ReadRegistryValue( |
- HKEY_CURRENT_USER, gfx::win::kRegistryProfilePath, |
- gfx::win::kHighDPISupportW, TRUE); |
+ HKEY_CURRENT_USER, kRegistryProfilePath, kHighDPISupportW, TRUE); |
return value != 0; |
} |
-bool IsInHighDPIMode() { |
- return GetDPIScale() > 1.0; |
-} |
+namespace win { |
void EnableHighDPISupport() { |
if (IsHighDPIEnabled() && |
@@ -170,61 +121,10 @@ void EnableHighDPISupport() { |
} |
} |
-namespace win { |
- |
-GFX_EXPORT const wchar_t kRegistryProfilePath[] = |
- L"Software\\Google\\Chrome\\Profile"; |
-GFX_EXPORT const wchar_t kHighDPISupportW[] = L"high-dpi-support"; |
- |
-float GetDeviceScaleFactor() { |
- DCHECK_NE(0.0f, g_device_scale_factor); |
- return g_device_scale_factor; |
-} |
- |
-Point ScreenToDIPPoint(const Point& pixel_point) { |
- return ToFlooredPoint(ScalePoint(pixel_point, |
- 1.0f / GetDeviceScaleFactor())); |
-} |
- |
-Point DIPToScreenPoint(const Point& dip_point) { |
- return ToFlooredPoint(ScalePoint(dip_point, GetDeviceScaleFactor())); |
-} |
- |
-Rect ScreenToDIPRect(const Rect& pixel_bounds) { |
- // It's important we scale the origin and size separately. If we instead |
- // calculated the size from the floored origin and ceiled right the size could |
- // vary depending upon where the two points land. That would cause problems |
- // for the places this code is used (in particular mapping from native window |
- // bounds to DIPs). |
- return Rect(ScreenToDIPPoint(pixel_bounds.origin()), |
- ScreenToDIPSize(pixel_bounds.size())); |
-} |
- |
-Rect DIPToScreenRect(const Rect& dip_bounds) { |
- // See comment in ScreenToDIPRect for why we calculate size like this. |
- return Rect(DIPToScreenPoint(dip_bounds.origin()), |
- DIPToScreenSize(dip_bounds.size())); |
-} |
- |
-Size ScreenToDIPSize(const Size& size_in_pixels) { |
- // Always ceil sizes. Otherwise we may be leaving off part of the bounds. |
- return ToCeiledSize( |
- ScaleSize(size_in_pixels, 1.0f / GetDeviceScaleFactor())); |
-} |
- |
-Size DIPToScreenSize(const Size& dip_size) { |
- // Always ceil sizes. Otherwise we may be leaving off part of the bounds. |
- return ToCeiledSize(ScaleSize(dip_size, GetDeviceScaleFactor())); |
-} |
- |
int GetSystemMetricsInDIP(int metric) { |
return static_cast<int>(GetSystemMetrics(metric) / |
GetDeviceScaleFactor() + 0.5); |
} |
-bool IsDeviceScaleFactorSet() { |
- return g_device_scale_factor != 0.0f; |
-} |
- |
} // namespace win |
} // namespace gfx |