From bcb56492c4cab204b8b27d762586e4bdbcc6c074 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 15 Mar 2023 17:17:15 +0400 Subject: [PATCH] Allow larger scales on high-dpi screens. --- ui/style/style_core_scale.cpp | 12 ++++++++++++ ui/style/style_core_scale.h | 8 +++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ui/style/style_core_scale.cpp b/ui/style/style_core_scale.cpp index 9e0038f..b6be737 100644 --- a/ui/style/style_core_scale.cpp +++ b/ui/style/style_core_scale.cpp @@ -34,4 +34,16 @@ void SetScale(int scale) { ScaleValue = scale; } +int MaxScaleForRatio(int ratio) { + Expects(ratio > 0); + + return std::max(kScaleMax / ratio, kScaleAlwaysAllowMax); +} + +int CheckScale(int scale) { + return (scale == kScaleAuto) + ? kScaleAuto + : std::clamp(scale, kScaleMin, MaxScaleForRatio(DevicePixelRatio())); +} + } // namespace style diff --git a/ui/style/style_core_scale.h b/ui/style/style_core_scale.h index 2fba205..f4b804e 100644 --- a/ui/style/style_core_scale.h +++ b/ui/style/style_core_scale.h @@ -19,6 +19,7 @@ inline constexpr auto kScaleAuto = 0; inline constexpr auto kScaleMin = 50; inline constexpr auto kScaleDefault = 100; inline constexpr auto kScaleMax = 300; +inline constexpr auto kScaleAlwaysAllowMax = 200; [[nodiscard]] int DevicePixelRatio(); void SetDevicePixelRatio(int ratio); @@ -26,11 +27,8 @@ void SetDevicePixelRatio(int ratio); [[nodiscard]] int Scale(); void SetScale(int scale); -[[nodiscard]] inline int CheckScale(int scale) { - return (scale == kScaleAuto) - ? kScaleAuto - : std::clamp(scale, kScaleMin, kScaleMax / DevicePixelRatio()); -} +[[nodiscard]] int MaxScaleForRatio(int ratio); +[[nodiscard]] int CheckScale(int scale); template [[nodiscard]] inline T ConvertScale(T value, int scale) {