Finalize persistent settings stuff
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
1946efad7e
commit
64ba23c5e2
2 changed files with 58 additions and 18 deletions
|
@ -378,13 +378,28 @@ Initializer::Initializer(const CardinalBasePlugin* const plugin, const CardinalB
|
||||||
{
|
{
|
||||||
using namespace rack;
|
using namespace rack;
|
||||||
|
|
||||||
|
// Cardinal default settings, potentially overriding VCV Rack ones
|
||||||
settings::allowCursorLock = false;
|
settings::allowCursorLock = false;
|
||||||
|
settings::tooltips = true;
|
||||||
|
settings::cableOpacity = 0.5f;
|
||||||
|
settings::cableTension = 0.75f;
|
||||||
|
settings::rackBrightness = 1.0f;
|
||||||
|
settings::haloBrightness = 0.25f;
|
||||||
|
settings::knobMode = settings::KNOB_MODE_LINEAR;
|
||||||
|
settings::knobScroll = false;
|
||||||
|
settings::knobScrollSensitivity = 0.001f;
|
||||||
|
settings::lockModules = false;
|
||||||
|
settings::browserSort = settings::BROWSER_SORT_UPDATED;
|
||||||
|
settings::browserZoom = -1.f;
|
||||||
|
settings::invertZoom = false;
|
||||||
|
settings::squeezeModules = true;
|
||||||
|
|
||||||
|
// runtime behaviour
|
||||||
settings::devMode = true;
|
settings::devMode = true;
|
||||||
settings::isPlugin = true;
|
settings::isPlugin = true;
|
||||||
settings::windowPos = math::Vec(0, 0);
|
#ifdef HEADLESS_BEHAVIOUR
|
||||||
#ifdef HEADLESS_BEHAVIOUR
|
|
||||||
settings::headless = true;
|
settings::headless = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// copied from https://community.vcvrack.com/t/16-colour-cable-palette/15951
|
// copied from https://community.vcvrack.com/t/16-colour-cable-palette/15951
|
||||||
settings::cableColors = {
|
settings::cableColors = {
|
||||||
|
|
|
@ -128,6 +128,26 @@ static char* getPatchStorageSlug() {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CARDINAL_VARIANT_MINI || !defined(HEADLESS)
|
||||||
|
float RackKnobModeToFloat(const rack::settings::KnobMode knobMode) noexcept
|
||||||
|
{
|
||||||
|
switch (knobMode)
|
||||||
|
{
|
||||||
|
case rack::settings::KNOB_MODE_LINEAR:
|
||||||
|
return 0.f;
|
||||||
|
case rack::settings::KNOB_MODE_ROTARY_ABSOLUTE:
|
||||||
|
return 1.f;
|
||||||
|
case rack::settings::KNOB_MODE_ROTARY_RELATIVE:
|
||||||
|
return 2.f;
|
||||||
|
// unused in Rack
|
||||||
|
case rack::settings::KNOB_MODE_SCALED_LINEAR:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0.f;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
struct ScopedContext {
|
struct ScopedContext {
|
||||||
|
@ -203,15 +223,18 @@ public:
|
||||||
fWindowParameters[kWindowParameterCableTension] = std::min(100.f, std::max(0.f, rack::settings::cableTension * 100));
|
fWindowParameters[kWindowParameterCableTension] = std::min(100.f, std::max(0.f, rack::settings::cableTension * 100));
|
||||||
fWindowParameters[kWindowParameterRackBrightness] = std::min(100.f, std::max(0.f, rack::settings::rackBrightness * 100));
|
fWindowParameters[kWindowParameterRackBrightness] = std::min(100.f, std::max(0.f, rack::settings::rackBrightness * 100));
|
||||||
fWindowParameters[kWindowParameterHaloBrightness] = std::min(100.f, std::max(0.f, rack::settings::haloBrightness * 100));
|
fWindowParameters[kWindowParameterHaloBrightness] = std::min(100.f, std::max(0.f, rack::settings::haloBrightness * 100));
|
||||||
fWindowParameters[kWindowParameterKnobMode] = 0.0f;
|
fWindowParameters[kWindowParameterKnobMode] = RackKnobModeToFloat(rack::settings::knobMode);
|
||||||
fWindowParameters[kWindowParameterWheelKnobControl] = rack::settings::knobScroll ? 1.f : 0.f;
|
fWindowParameters[kWindowParameterWheelKnobControl] = rack::settings::knobScroll ? 1.f : 0.f;
|
||||||
fWindowParameters[kWindowParameterWheelSensitivity] = std::min(10.f, std::max(0.1f, rack::settings::knobScrollSensitivity * 1000));
|
fWindowParameters[kWindowParameterWheelSensitivity] = std::min(10.f, std::max(0.1f, rack::settings::knobScrollSensitivity * 1000));
|
||||||
fWindowParameters[kWindowParameterLockModulePositions] = rack::settings::lockModules ? 1.f : 0.f;
|
fWindowParameters[kWindowParameterLockModulePositions] = rack::settings::lockModules ? 1.f : 0.f;
|
||||||
fWindowParameters[kWindowParameterUpdateRateLimit] = 0.0f;
|
fWindowParameters[kWindowParameterBrowserSort] = std::min(rack::settings::BROWSER_SORT_RANDOM,
|
||||||
fWindowParameters[kWindowParameterBrowserSort] = 3.0f;
|
std::max(rack::settings::BROWSER_SORT_UPDATED,
|
||||||
fWindowParameters[kWindowParameterBrowserZoom] = 50.0f;
|
rack::settings::browserSort));
|
||||||
|
fWindowParameters[kWindowParameterBrowserZoom] = std::min(200.f, std::max(25.f, std::pow(2.f, rack::settings::browserZoom) * 100.0f));
|
||||||
fWindowParameters[kWindowParameterInvertZoom] = rack::settings::invertZoom ? 1.f : 0.f;
|
fWindowParameters[kWindowParameterInvertZoom] = rack::settings::invertZoom ? 1.f : 0.f;
|
||||||
fWindowParameters[kWindowParameterSqueezeModulePositions] = rack::settings::squeezeModules ? 1.f : 0.f;
|
fWindowParameters[kWindowParameterSqueezeModulePositions] = rack::settings::squeezeModules ? 1.f : 0.f;
|
||||||
|
// not saved
|
||||||
|
fWindowParameters[kWindowParameterUpdateRateLimit] = 0.0f;
|
||||||
#endif
|
#endif
|
||||||
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
||||||
std::memset(fMiniReportValues, 0, sizeof(fMiniReportValues));
|
std::memset(fMiniReportValues, 0, sizeof(fMiniReportValues));
|
||||||
|
@ -520,7 +543,7 @@ protected:
|
||||||
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
||||||
parameter.hints |= kParameterIsHidden;
|
parameter.hints |= kParameterIsHidden;
|
||||||
#endif
|
#endif
|
||||||
parameter.ranges.def = 0.0f;
|
parameter.ranges.def = RackKnobModeToFloat(rack::settings::knobMode);
|
||||||
parameter.ranges.min = 0.0f;
|
parameter.ranges.min = 0.0f;
|
||||||
parameter.ranges.max = 2.0f;
|
parameter.ranges.max = 2.0f;
|
||||||
parameter.enumValues.count = 3;
|
parameter.enumValues.count = 3;
|
||||||
|
@ -593,24 +616,26 @@ protected:
|
||||||
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
|
||||||
parameter.hints |= kParameterIsHidden;
|
parameter.hints |= kParameterIsHidden;
|
||||||
#endif
|
#endif
|
||||||
parameter.ranges.def = 3.0f;
|
parameter.ranges.def = std::min(rack::settings::BROWSER_SORT_RANDOM,
|
||||||
parameter.ranges.min = 0.0f;
|
std::max(rack::settings::BROWSER_SORT_UPDATED,
|
||||||
parameter.ranges.max = 5.0f;
|
rack::settings::browserSort));
|
||||||
|
parameter.ranges.min = rack::settings::BROWSER_SORT_UPDATED;
|
||||||
|
parameter.ranges.max = rack::settings::BROWSER_SORT_RANDOM;
|
||||||
parameter.enumValues.count = 6;
|
parameter.enumValues.count = 6;
|
||||||
parameter.enumValues.restrictedMode = true;
|
parameter.enumValues.restrictedMode = true;
|
||||||
parameter.enumValues.values = new ParameterEnumerationValue[6];
|
parameter.enumValues.values = new ParameterEnumerationValue[6];
|
||||||
parameter.enumValues.values[0].label = "Updated";
|
parameter.enumValues.values[0].label = "Updated";
|
||||||
parameter.enumValues.values[0].value = 0.0f;
|
parameter.enumValues.values[0].value = rack::settings::BROWSER_SORT_UPDATED;
|
||||||
parameter.enumValues.values[1].label = "Last used";
|
parameter.enumValues.values[1].label = "Last used";
|
||||||
parameter.enumValues.values[1].value = 1.0f;
|
parameter.enumValues.values[1].value = rack::settings::BROWSER_SORT_LAST_USED;
|
||||||
parameter.enumValues.values[2].label = "Most used";
|
parameter.enumValues.values[2].label = "Most used";
|
||||||
parameter.enumValues.values[2].value = 2.0f;
|
parameter.enumValues.values[2].value = rack::settings::BROWSER_SORT_MOST_USED;
|
||||||
parameter.enumValues.values[3].label = "Brand";
|
parameter.enumValues.values[3].label = "Brand";
|
||||||
parameter.enumValues.values[3].value = 3.0f;
|
parameter.enumValues.values[3].value = rack::settings::BROWSER_SORT_BRAND;
|
||||||
parameter.enumValues.values[4].label = "Name";
|
parameter.enumValues.values[4].label = "Name";
|
||||||
parameter.enumValues.values[4].value = 4.0f;
|
parameter.enumValues.values[4].value = rack::settings::BROWSER_SORT_NAME;
|
||||||
parameter.enumValues.values[5].label = "Random";
|
parameter.enumValues.values[5].label = "Random";
|
||||||
parameter.enumValues.values[5].value = 5.0f;
|
parameter.enumValues.values[5].value = rack::settings::BROWSER_SORT_RANDOM;
|
||||||
break;
|
break;
|
||||||
case kWindowParameterBrowserZoom:
|
case kWindowParameterBrowserZoom:
|
||||||
parameter.name = "Browser zoom";
|
parameter.name = "Browser zoom";
|
||||||
|
@ -620,7 +645,7 @@ protected:
|
||||||
parameter.hints |= kParameterIsHidden;
|
parameter.hints |= kParameterIsHidden;
|
||||||
#endif
|
#endif
|
||||||
parameter.unit = "%";
|
parameter.unit = "%";
|
||||||
parameter.ranges.def = 50.0f;
|
parameter.ranges.def = std::min(200.f, std::max(25.f, std::pow(2.f, rack::settings::browserZoom) * 100.0f));
|
||||||
parameter.ranges.min = 25.0f;
|
parameter.ranges.min = 25.0f;
|
||||||
parameter.ranges.max = 200.0f;
|
parameter.ranges.max = 200.0f;
|
||||||
parameter.enumValues.count = 7;
|
parameter.enumValues.count = 7;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue