From ee980a5beb7cb08ccb884279a07ea36f3c4bfcf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=9E=D0=BB=D0=B5=D0=B3?= Date: Wed, 3 Apr 2024 01:58:37 +0500 Subject: [PATCH] fix dpi calculation for linux & mac DPI = pixels / inch, not mm / pixels dots = pixels for computer screens --- src/system/displays/displays_darwin.cpp | 2 +- src/system/displays/displays_x11.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/system/displays/displays_darwin.cpp b/src/system/displays/displays_darwin.cpp index 3ffc5de..42f6495 100644 --- a/src/system/displays/displays_darwin.cpp +++ b/src/system/displays/displays_darwin.cpp @@ -40,7 +40,7 @@ std::vector iware::system::displays() { return enumerate_displays([](auto display_id) { const std::uint32_t width = CGDisplayPixelsWide(display_id); // 25.4 millimeters per inch - const std::uint32_t dpi = 25.4 * CGDisplayScreenSize(display_id).width / width; + const std::uint32_t dpi = width / (CGDisplayScreenSize(display_id).width / 25.4); auto display_mode = CGDisplayCopyDisplayMode(display_id); iware::detail::quickscope_wrapper display_mode_deleter{[&]() { CGDisplayModeRelease(display_mode); }}; diff --git a/src/system/displays/displays_x11.cpp b/src/system/displays/displays_x11.cpp index e1f727b..517c73d 100644 --- a/src/system/displays/displays_x11.cpp +++ b/src/system/displays/displays_x11.cpp @@ -50,7 +50,7 @@ std::vector iware::system::displays() { width, static_cast(DisplayHeight(display, screen_number)), // 25.4 millimeters per inch - static_cast(25.4 * DisplayWidthMM(display, screen_number) / width), + static_cast(width / (DisplayWidthMM(display, screen_number) / 25.4)), static_cast(DefaultDepth(display, screen_number)), static_cast(XRRConfigCurrentRate(screen_config)), };