Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(712)

Unified Diff: ui/gfx/screen_win.cc

Issue 1563183008: Added capability on Windows to get the physical dimensions of your attached monitors. Also added th… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments 2 Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/gfx/screen_win.cc
diff --git a/ui/gfx/screen_win.cc b/ui/gfx/screen_win.cc
index 3199f7acaacdd2b15c3dca37d09014dc418c2d00..b4bc7a02293f5cfa5c61e36b089dd3c84f44ffb8 100644
--- a/ui/gfx/screen_win.cc
+++ b/ui/gfx/screen_win.cc
@@ -5,7 +5,6 @@
#include "ui/gfx/screen_win.h"
#include <windows.h>
-#include <stdint.h>
#include "base/bind.h"
#include "base/bind_helpers.h"
@@ -15,6 +14,7 @@
#include "base/win/win_util.h"
#include "ui/gfx/display.h"
#include "ui/gfx/win/dpi.h"
+#include "ui/gfx/win/physical_size.h"
namespace {
@@ -26,9 +26,12 @@ MONITORINFOEX GetMonitorInfoForMonitor(HMONITOR monitor) {
return monitor_info;
}
+int64_t GenerateDisplayId(const std::string& str) {
+ return static_cast<int64_t>(base::Hash(str));
+}
+
gfx::Display GetDisplay(const MONITORINFOEX& monitor_info) {
- int64_t id =
- static_cast<int64_t>(base::Hash(base::WideToUTF8(monitor_info.szDevice)));
+ int64_t id = GenerateDisplayId(base::WideToUTF8(monitor_info.szDevice));
gfx::Rect bounds = gfx::Rect(monitor_info.rcMonitor);
gfx::Display display(id);
display.set_bounds(gfx::win::ScreenToDIPRect(bounds));
@@ -36,6 +39,19 @@ gfx::Display GetDisplay(const MONITORINFOEX& monitor_info) {
gfx::win::ScreenToDIPRect(gfx::Rect(monitor_info.rcWork)));
display.SetScaleAndBounds(gfx::GetDPIScale(), bounds);
+ int width_mm = 0;
+ int height_mm = 0;
+ std::vector<gfx::PhysicalDisplaySize> display_sizes =
+ gfx::GetPhysicalSizeForDisplays();
+ for (const auto& display_size : display_sizes) {
+ int64_t interface_id = GenerateDisplayId(display_size.display_name);
+ if (interface_id == id) {
+ width_mm = display_size.width_mm;
+ height_mm = display_size.height_mm;
+ }
+ }
+ display.SetPhysicalSize(width_mm, height_mm);
+
DEVMODE mode;
memset(&mode, 0, sizeof(DEVMODE));
mode.dmSize = sizeof(DEVMODE);

Powered by Google App Engine
This is Rietveld 408576698