From d72a34587853acb74fc4cf41c51dbd6596c2c64c Mon Sep 17 00:00:00 2001 From: Yasuhiro Fujii Date: Fri, 3 Mar 2017 21:25:26 +0900 Subject: [PATCH] implement Window::hidpi_factor() for X11. --- src/api/x11/window.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/api/x11/window.rs b/src/api/x11/window.rs index 45ffd4d5..7bf0a9fc 100644 --- a/src/api/x11/window.rs +++ b/src/api/x11/window.rs @@ -956,9 +956,15 @@ impl Window { } } - #[inline] pub fn hidpi_factor(&self) -> f32 { - 1.0 + unsafe { + let x_px = (self.x.display.xlib.XDisplayWidth)(self.x.display.display, self.x.screen_id); + let y_px = (self.x.display.xlib.XDisplayHeight)(self.x.display.display, self.x.screen_id); + let x_mm = (self.x.display.xlib.XDisplayWidthMM)(self.x.display.display, self.x.screen_id); + let y_mm = (self.x.display.xlib.XDisplayHeightMM)(self.x.display.display, self.x.screen_id); + let ppmm = ((x_px as f32 * y_px as f32) / (x_mm as f32 * y_mm as f32)).sqrt(); + ((ppmm * (12.0 * 25.4 / 96.0)).round() / 12.0).max(1.0) // quantize with 1/12 step size. + } } pub fn set_cursor_position(&self, x: i32, y: i32) -> Result<(), ()> {