diff options
author | Vojtech Kral <vojtech@kral.hk> | 2019-05-17 20:12:52 +0300 |
---|---|---|
committer | Vojtech Kral <vojtech@kral.hk> | 2019-05-17 20:16:03 +0300 |
commit | b234a1b7a7cce7f536608b34f67d31ca2bc54f6e (patch) | |
tree | cf908f0bf878f24536272c2ee918bc67e28225d3 | |
parent | 5161dc43d63067f4054ce726d94d75b2cca7c359 (diff) |
Use mac_max_scaling_factor() in create_scaled_bitmap()version_2.0.0-rc2
-rw-r--r-- | src/slic3r/GUI/wxExtensions.cpp | 12 | ||||
-rw-r--r-- | src/slic3r/Utils/MacDarkMode.mm | 7 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index fa8942c54..103a9ecf0 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -1,6 +1,7 @@ #include "wxExtensions.hpp" #include <stdexcept> +#include <cmath> #include "libslic3r/Utils.hpp" #include "libslic3r/Model.hpp" @@ -19,6 +20,7 @@ #include "libslic3r/GCode/PreviewData.hpp" #include "I18N.hpp" #include "GUI_Utils.hpp" +#include "../Utils/MacDarkMode.hpp" using Slic3r::GUI::from_u8; @@ -389,7 +391,15 @@ wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, static Slic3r::GUI::BitmapCache cache; #ifdef __APPLE__ - const float scale_factor = win != nullptr ? win->GetContentScaleFactor() : 1.0f; + // Note: win->GetContentScaleFactor() is not used anymore here because it tends to + // return bogus results quite often (such as 1.0 on Retina or even 0.0). + // We're using the max scaling factor across all screens because it's very likely to be good enough. + + static float max_scaling_factor = NAN; + if (std::isnan(max_scaling_factor)) { + max_scaling_factor = Slic3r::GUI::mac_max_scaling_factor(); + } + const float scale_factor = win != nullptr ? max_scaling_factor : 1.0f; #else (void)(win); const float scale_factor = 1.0f; diff --git a/src/slic3r/Utils/MacDarkMode.mm b/src/slic3r/Utils/MacDarkMode.mm index 514b6e7d3..adbd72aab 100644 --- a/src/slic3r/Utils/MacDarkMode.mm +++ b/src/slic3r/Utils/MacDarkMode.mm @@ -1,6 +1,9 @@ #import "MacDarkMode.hpp" +#import <algorithm> + #import <Foundation/Foundation.h> +#import <AppKit/NSScreen.h> @implementation MacDarkMode @@ -19,12 +22,12 @@ double mac_max_scaling_factor() { double scaling = 1.; if ([NSScreen screens] == nil) { - scalign = [[NSScreen mainScreen] backingScaleFactor]; + scaling = [[NSScreen mainScreen] backingScaleFactor]; } else { for (int i = 0; i < [[NSScreen screens] count]; ++ i) scaling = std::max<double>(scaling, [[[NSScreen screens] objectAtIndex:0] backingScaleFactor]); } - return scalign; + return scaling; } } |