Skip to content

Commit ee980a5

Browse files
author
Александров Олег
committed
fix dpi calculation for linux & mac
DPI = pixels / inch, not mm / pixels dots = pixels for computer screens
1 parent 3b0c14c commit ee980a5

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

src/system/displays/displays_darwin.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ std::vector<iware::system::display_t> iware::system::displays() {
4040
return enumerate_displays<iware::system::display_t>([](auto display_id) {
4141
const std::uint32_t width = CGDisplayPixelsWide(display_id);
4242
// 25.4 millimeters per inch
43-
const std::uint32_t dpi = 25.4 * CGDisplayScreenSize(display_id).width / width;
43+
const std::uint32_t dpi = width / (CGDisplayScreenSize(display_id).width / 25.4);
4444

4545
auto display_mode = CGDisplayCopyDisplayMode(display_id);
4646
iware::detail::quickscope_wrapper display_mode_deleter{[&]() { CGDisplayModeRelease(display_mode); }};

src/system/displays/displays_x11.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ std::vector<iware::system::display_t> iware::system::displays() {
5050
width,
5151
static_cast<std::uint32_t>(DisplayHeight(display, screen_number)),
5252
// 25.4 millimeters per inch
53-
static_cast<std::uint32_t>(25.4 * DisplayWidthMM(display, screen_number) / width),
53+
static_cast<std::uint32_t>(width / (DisplayWidthMM(display, screen_number) / 25.4)),
5454
static_cast<std::uint32_t>(DefaultDepth(display, screen_number)),
5555
static_cast<double>(XRRConfigCurrentRate(screen_config)),
5656
};

0 commit comments

Comments
 (0)