From 651713de7757ec3adf716328ac69ee42055df627 Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Fri, 31 Oct 2025 18:00:46 -0400 Subject: [PATCH] Add spotlightBrightness and spotlightRadius to settings. --- include/settings.hpp | 2 ++ src/app/RackWidget.cpp | 8 +++++--- src/settings.cpp | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/include/settings.hpp b/include/settings.hpp index f6a7656b..a2748bb5 100644 --- a/include/settings.hpp +++ b/include/settings.hpp @@ -56,6 +56,8 @@ extern float cableOpacity; /** Straightness of cables in the range [0, 1]. Unitless and arbitrary. */ extern float cableTension; extern float rackBrightness; +extern float spotlightBrightness; +extern float spotlightRadius; extern float haloBrightness; /** Allows rack to hide and lock the cursor position when dragging knobs etc. */ extern bool allowCursorLock; diff --git a/src/app/RackWidget.cpp b/src/app/RackWidget.cpp index 4e7d40d8..fa3f19d7 100644 --- a/src/app/RackWidget.cpp +++ b/src/app/RackWidget.cpp @@ -149,12 +149,14 @@ void RackWidget::draw(const DrawArgs& args) { float t[6]; nvgCurrentTransform(args.vg, t); float zoom = t[3]; - float radius = 300.0 / zoom; - float brightness = 0.2f; // Draw mouse spotlight nvgBeginPath(args.vg); nvgRect(args.vg, 0.0, 0.0, VEC_ARGS(box.size)); - nvgFillPaint(args.vg, nvgRadialGradient(args.vg, VEC_ARGS(internal->mousePos), 0.0, radius, nvgRGBAf(0, 0, 0, 1.f - b - brightness), nvgRGBAf(0, 0, 0, 1.f - b))); + nvgFillPaint(args.vg, nvgRadialGradient(args.vg, + VEC_ARGS(internal->mousePos), 0.0, + settings::spotlightRadius / zoom, + nvgRGBAf(0, 0, 0, 1.f - b - settings::spotlightBrightness), + nvgRGBAf(0, 0, 0, 1.f - b))); nvgFill(args.vg); } diff --git a/src/settings.cpp b/src/settings.cpp index 798d656a..85a20863 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -34,6 +34,8 @@ std::string uiTheme = "dark"; float cableOpacity = 0.5; float cableTension = 1.0; float rackBrightness = 1.0; +float spotlightBrightness = 0.2; +float spotlightRadius = 300.0; float haloBrightness = 0.25; bool allowCursorLock = true; KnobMode knobMode = KNOB_MODE_LINEAR; @@ -159,6 +161,10 @@ json_t* toJson() { json_object_set_new(rootJ, "rackBrightness", json_real(rackBrightness)); + json_object_set_new(rootJ, "spotlightBrightness", json_real(spotlightBrightness)); + + json_object_set_new(rootJ, "spotlightRadius", json_real(spotlightRadius)); + json_object_set_new(rootJ, "haloBrightness", json_real(haloBrightness)); json_object_set_new(rootJ, "allowCursorLock", json_boolean(allowCursorLock)); @@ -352,6 +358,14 @@ void fromJson(json_t* rootJ) { if (rackBrightnessJ) rackBrightness = json_number_value(rackBrightnessJ); + json_t* spotlightBrightnessJ = json_object_get(rootJ, "spotlightBrightness"); + if (spotlightBrightnessJ) + spotlightBrightness = json_number_value(spotlightBrightnessJ); + + json_t* spotlightRadiusJ = json_object_get(rootJ, "spotlightRadius"); + if (spotlightRadiusJ) + spotlightRadius = json_number_value(spotlightRadiusJ); + json_t* haloBrightnessJ = json_object_get(rootJ, "haloBrightness"); if (haloBrightnessJ) haloBrightness = json_number_value(haloBrightnessJ);