From 68e5cff27631c74d6dd6905598babb2fa4a795b3 Mon Sep 17 00:00:00 2001
From: Ivan Savenko <saven.ivan@gmail.com>
Date: Mon, 7 Oct 2024 19:34:28 +0000
Subject: [PATCH] Implement user-defined cursor scaling

---
 client/renderSDL/CursorHardware.cpp | 4 +++-
 config/schemas/settings.json        | 5 +++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/client/renderSDL/CursorHardware.cpp b/client/renderSDL/CursorHardware.cpp
index c043a899e..b6e927023 100644
--- a/client/renderSDL/CursorHardware.cpp
+++ b/client/renderSDL/CursorHardware.cpp
@@ -48,7 +48,9 @@ void CursorHardware::setVisible(bool on)
 
 void CursorHardware::setImage(std::shared_ptr<IImage> image, const Point & pivotOffset)
 {
-	int cursorScalingPercent = settings["video"]["resolution"]["scaling"].Integer();
+	int videoScalingSettings = settings["video"]["resolution"]["scaling"].Integer();
+	float cursorScalingSettings = settings["video"]["cursorScalingFactor"].Float();
+	int cursorScalingPercent = videoScalingSettings * cursorScalingSettings;
 	Point cursorDimensions = image->dimensions() * GH.screenHandler().getScalingFactor();
 	Point cursorDimensionsScaled = image->dimensions() * cursorScalingPercent / 100;
 	Point pivotOffsetScaled = pivotOffset * cursorScalingPercent / 100 / GH.screenHandler().getScalingFactor();
diff --git a/config/schemas/settings.json b/config/schemas/settings.json
index 0d670baeb..93ae2038f 100644
--- a/config/schemas/settings.json
+++ b/config/schemas/settings.json
@@ -184,6 +184,7 @@
 				"targetfps",
 				"vsync",
 				"fontsType",
+				"cursorScalingFactor",
 				"fontScalingFactor",
 				"upscalingFilter",
 				"fontUpscalingFilter",
@@ -253,6 +254,10 @@
 					"enum" : [ "auto", "original", "scalable" ],
 					"default" : "auto"
 				},
+				"cursorScalingFactor" : {
+					"type" : "number",
+					"default" : 1
+				},
 				"fontScalingFactor" : {
 					"type" : "number",
 					"default" : 1