diff --git a/rtgui/rtscalable.cc b/rtgui/rtscalable.cc index b5de0605f..421df6c10 100644 --- a/rtgui/rtscalable.cc +++ b/rtgui/rtscalable.cc @@ -42,12 +42,12 @@ void RTScalable::setDPInScale (const double newDPI, const int newScale) // HOMBRE: On windows, if scale = 2, the dpi is non significant, i.e. should be considered = 192 ; don't know for linux/macos dpi = newDPI; if (scale == 1) { - if (dpi >= 192.) { + if (dpi >= baseHiDPI) { scale = 2; } } else if (scale == 2) { - if (dpi < 192.) { + if (dpi < baseHiDPI) { dpi *= 2.; } } diff --git a/rtgui/rtscalable.h b/rtgui/rtscalable.h index a932038f2..c3ff19e60 100644 --- a/rtgui/rtscalable.h +++ b/rtgui/rtscalable.h @@ -38,6 +38,15 @@ protected: public: + +#ifdef __APPLE__ + static constexpr double baseDPI = 72; + static constexpr double baseHiDPI = 144; +#else + static constexpr double baseDPI = 96; + static constexpr double baseHiDPI = 192; +#endif + static void init(Gtk::Window *window); static void cleanup(); static double getDPI (); diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 6a7b178b0..a79209a36 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -188,14 +188,14 @@ RTWindow::RTWindow () if (isPix) { // HOMBRE: guessing here... // if resolution is lower than 192ppi, we're supposing that it's already expressed in a scale==1 scenario - if (resolution >= 192) { + if (resolution >= int(RTScalable::baseHiDPI)) { // converting the resolution to a scale==1 scenario resolution /= 2; } // 1pt = 1/72in @ 96 ppi // HOMBRE: If the font unit is px, is it alredy scaled up to match the resolution ? // px >inch >pt >"scaled pt" - pt = (int)(fontSize / 96. * 72 * (96. / resolution) + 0.49); + pt = (int)(double(fontSize) / RTScalable::baseDPI * 72. * (RTScalable::baseHiDPI / resolution) + 0.49); } else { pt = fontSize / Pango::SCALE; }