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/display/win/screen_win.h" | 5 #include "ui/display/win/screen_win.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <shellscalingapi.h> | 8 #include <shellscalingapi.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
288 return ScaleToCeiledSize(size_in_pixels, 1.0f / GetScaleFactorForHWND(hwnd)); | 288 return ScaleToCeiledSize(size_in_pixels, 1.0f / GetScaleFactorForHWND(hwnd)); |
289 } | 289 } |
290 | 290 |
291 // static | 291 // static |
292 gfx::Size ScreenWin::DIPToScreenSize(HWND hwnd, const gfx::Size& dip_size) { | 292 gfx::Size ScreenWin::DIPToScreenSize(HWND hwnd, const gfx::Size& dip_size) { |
293 float scale_factor = GetScaleFactorForHWND(hwnd); | 293 float scale_factor = GetScaleFactorForHWND(hwnd); |
294 // Always ceil sizes. Otherwise we may be leaving off part of the bounds. | 294 // Always ceil sizes. Otherwise we may be leaving off part of the bounds. |
295 return ScaleToCeiledSize(dip_size, scale_factor); | 295 return ScaleToCeiledSize(dip_size, scale_factor); |
296 } | 296 } |
297 | 297 |
298 // static | |
299 int ScreenWin::GetSystemMetricsForHwnd(HWND hwnd, int metric) { | |
300 // GetSystemMetrics returns screen values based off of the primary monitor's | |
301 // DPI. This will further scale based off of the DPI for |hwnd|. | |
302 if (!g_screen_win_instance) | |
oshima
2016/06/30 19:06:12
is this for unit test case?
robliao
2016/06/30 19:20:24
Yup. This is for the unit tests.
| |
303 return ::GetSystemMetrics(metric); | |
304 | |
305 Display primary_display(g_screen_win_instance->GetPrimaryDisplay()); | |
306 int system_metrics_result = g_screen_win_instance->GetSystemMetrics(metric); | |
307 | |
308 float scale_factor = hwnd | |
309 ? GetScaleFactorForHWND(hwnd) / primary_display.device_scale_factor() | |
oshima
2016/06/30 19:06:12
calling this "scale factor" is confusing. Can you
robliao
2016/06/30 19:20:24
I went with metrics_relative_scale_factor. How's t
| |
310 : 1.0f; | |
311 return static_cast<int>(std::round(system_metrics_result * scale_factor)); | |
312 } | |
313 | |
298 HWND ScreenWin::GetHWNDFromNativeView(gfx::NativeView window) const { | 314 HWND ScreenWin::GetHWNDFromNativeView(gfx::NativeView window) const { |
299 NOTREACHED(); | 315 NOTREACHED(); |
300 return nullptr; | 316 return nullptr; |
301 } | 317 } |
302 | 318 |
303 gfx::NativeWindow ScreenWin::GetNativeWindowFromHWND(HWND hwnd) const { | 319 gfx::NativeWindow ScreenWin::GetNativeWindowFromHWND(HWND hwnd) const { |
304 NOTREACHED(); | 320 NOTREACHED(); |
305 return nullptr; | 321 return nullptr; |
306 } | 322 } |
307 | 323 |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
412 | 428 |
413 MONITORINFOEX ScreenWin::MonitorInfoFromWindow(HWND hwnd, | 429 MONITORINFOEX ScreenWin::MonitorInfoFromWindow(HWND hwnd, |
414 DWORD default_options) const { | 430 DWORD default_options) const { |
415 return MonitorInfoFromHMONITOR(::MonitorFromWindow(hwnd, default_options)); | 431 return MonitorInfoFromHMONITOR(::MonitorFromWindow(hwnd, default_options)); |
416 } | 432 } |
417 | 433 |
418 HWND ScreenWin::GetRootWindow(HWND hwnd) const { | 434 HWND ScreenWin::GetRootWindow(HWND hwnd) const { |
419 return ::GetAncestor(hwnd, GA_ROOT); | 435 return ::GetAncestor(hwnd, GA_ROOT); |
420 } | 436 } |
421 | 437 |
438 int ScreenWin::GetSystemMetrics(int metric) const { | |
439 return ::GetSystemMetrics(metric); | |
440 } | |
441 | |
422 void ScreenWin::OnWndProc(HWND hwnd, | 442 void ScreenWin::OnWndProc(HWND hwnd, |
423 UINT message, | 443 UINT message, |
424 WPARAM wparam, | 444 WPARAM wparam, |
425 LPARAM lparam) { | 445 LPARAM lparam) { |
426 if (message != WM_DISPLAYCHANGE) | 446 if (message != WM_DISPLAYCHANGE) |
427 return; | 447 return; |
428 | 448 |
429 std::vector<display::Display> old_displays = GetAllDisplays(); | 449 std::vector<display::Display> old_displays = GetAllDisplays(); |
430 UpdateFromDisplayInfos(GetDisplayInfosFromSystem()); | 450 UpdateFromDisplayInfos(GetDisplayInfosFromSystem()); |
431 change_notifier_.NotifyDisplaysChanged(old_displays, GetAllDisplays()); | 451 change_notifier_.NotifyDisplaysChanged(old_displays, GetAllDisplays()); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
522 ScreenWinDisplay ScreenWin::GetScreenWinDisplayVia(Getter getter, | 542 ScreenWinDisplay ScreenWin::GetScreenWinDisplayVia(Getter getter, |
523 GetterType value) { | 543 GetterType value) { |
524 if (!g_screen_win_instance) | 544 if (!g_screen_win_instance) |
525 return ScreenWinDisplay(); | 545 return ScreenWinDisplay(); |
526 | 546 |
527 return (g_screen_win_instance->*getter)(value); | 547 return (g_screen_win_instance->*getter)(value); |
528 } | 548 } |
529 | 549 |
530 } // namespace win | 550 } // namespace win |
531 } // namespace display | 551 } // namespace display |
OLD | NEW |