summaryrefslogtreecommitdiff
path: root/distrho/src/DistrhoPluginVST.cpp
diff options
context:
space:
mode:
authorfalkTX <falktx@gmail.com>2018-08-04 03:22:57 +0200
committerfalkTX <falktx@gmail.com>2018-08-04 03:22:57 +0200
commitc2b9c40333a7b5e066dcb8d60fa023373b639324 (patch)
treebe7163d13f8396435faf2ede2e98e1018e67255f /distrho/src/DistrhoPluginVST.cpp
parent340b8e0c5956e74022b7aa7669a8f371df2e5c7b (diff)
Implement enums for LV2 and VST; Add triple brackets on some lv2 fields
Diffstat (limited to 'distrho/src/DistrhoPluginVST.cpp')
-rw-r--r--distrho/src/DistrhoPluginVST.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/distrho/src/DistrhoPluginVST.cpp b/distrho/src/DistrhoPluginVST.cpp
index 00f46b2f..7c6ad521 100644
--- a/distrho/src/DistrhoPluginVST.cpp
+++ b/distrho/src/DistrhoPluginVST.cpp
@@ -468,15 +468,26 @@ public:
value = value > midRange ? ranges.max : ranges.min;
}
+ else if (hints & kParameterIsInteger)
+ {
+ value = std::round(value);
+ }
- if (hints & kParameterIsInteger)
+ const ParameterEnumerationValues& enumValues(fPlugin.getParameterEnumValues(index));
+
+ for (uint8_t i = 0; i < enumValues.count; ++i)
{
- DISTRHO_NAMESPACE::snprintf_iparam((char*)ptr, (int32_t)std::round(value), 24);
+ if (d_isNotEqual(value, enumValues.values[i].value))
+ continue;
+
+ DISTRHO_NAMESPACE::strncpy((char*)ptr, enumValues.values[i].label.buffer(), 24);
+ return 1;
}
+
+ if (hints & kParameterIsInteger)
+ DISTRHO_NAMESPACE::snprintf_iparam((char*)ptr, (int32_t)value, 24);
else
- {
DISTRHO_NAMESPACE::snprintf_param((char*)ptr, value, 24);
- }
return 1;
}