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

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: . 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..e178f20e5f03060c5add55a2a7554355b57452e4 100644
--- a/ui/gfx/screen_win.cc
+++ b/ui/gfx/screen_win.cc
@@ -15,6 +15,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 +27,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 +40,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.SetPhysicalSizeMm(gfx::Size(width_mm, height_mm));
+
DEVMODE mode;
memset(&mode, 0, sizeof(DEVMODE));
mode.dmSize = sizeof(DEVMODE);

Powered by Google App Engine
This is Rietveld 408576698