From 5fb451041ab94308ae34d0bbd1fd8382119960ae Mon Sep 17 00:00:00 2001 From: Bastien Dejean Date: Wed, 29 Jun 2016 10:40:10 +0200 Subject: [PATCH] Add SDL_GetDisplayDPI --- sdl2-sys/src/video.rs | 1 + src/sdl2/video.rs | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/sdl2-sys/src/video.rs b/sdl2-sys/src/video.rs index 2da23f7f..4c782adc 100644 --- a/sdl2-sys/src/video.rs +++ b/sdl2-sys/src/video.rs @@ -160,6 +160,7 @@ extern "C" { pub fn SDL_GetWindowDisplayIndex(window: *mut SDL_Window) -> c_int; pub fn SDL_SetWindowDisplayMode(window: *mut SDL_Window, mode: *const SDL_DisplayMode) -> c_int; pub fn SDL_GetWindowDisplayMode(window: *mut SDL_Window, mode: *mut SDL_DisplayMode) -> c_int; + pub fn SDL_GetDisplayDPI(displayIndex: c_int, ddpi: *mut c_float, hdpi: *mut c_float, vdpi: *mut c_float) -> c_int; pub fn SDL_GetWindowPixelFormat(window: *mut SDL_Window) -> uint32_t; pub fn SDL_CreateWindow(title: *const c_char, x: c_int, y: c_int, w: c_int, h: c_int, flags: uint32_t) -> *mut SDL_Window; pub fn SDL_CreateWindowFrom(data: *const c_void) -> *mut SDL_Window; diff --git a/src/sdl2/video.rs b/src/sdl2/video.rs index 5fd8ed76..aec4e340 100644 --- a/src/sdl2/video.rs +++ b/src/sdl2/video.rs @@ -571,6 +571,20 @@ impl VideoSubsystem { } } + /// Return a triplet `(ddpi, hdpi, vdpi)` containing the diagonal, horizontal and vertical + /// dots/pixels-per-inch of a display + pub fn display_dpi(&self, display_index: i32) -> Result<(f32, f32, f32), String> { + let mut ddpi = 0.0; + let mut hdpi = 0.0; + let mut vdpi = 0.0; + let result = unsafe { ll::SDL_GetDisplayDPI(display_index as c_int, &mut ddpi, &mut hdpi, &mut vdpi) }; + if result < 0 { + Err(get_error()) + } else { + Ok((ddpi, hdpi, vdpi)) + } + } + pub fn is_screen_saver_enabled(&self) -> bool { unsafe { ll::SDL_IsScreenSaverEnabled() == 1 } }