| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -89,6 +89,12 @@ static const uint32_t kParameterIsLogarithmic = 0x08; | |||
| */ | |||
| static const uint32_t kParameterIsOutput = 0x10; | |||
| /** | |||
| Parameter value is a trigger. | |||
| @note Cannot be used for output parameters | |||
| */ | |||
| static const uint32_t kParameterIsTrigger = 0x20 | kParameterIsBoolean; | |||
| /** @} */ | |||
| /* ------------------------------------------------------------------------------------------------------------ | |||
| @@ -274,6 +280,90 @@ struct ParameterRanges { | |||
| } | |||
| }; | |||
| /** | |||
| Parameter enumeration value.@n | |||
| A string representation of a plugin parameter value.@n | |||
| Used together can be used to give meaning to parameter values, working as an enumeration. | |||
| */ | |||
| struct ParameterEnumerationValue { | |||
| /** | |||
| Parameter value. | |||
| */ | |||
| float value; | |||
| /** | |||
| String representation of this value. | |||
| */ | |||
| String label; | |||
| /** | |||
| Default constructor, using 0.0 as value and empty label. | |||
| */ | |||
| ParameterEnumerationValue() noexcept | |||
| : value(0.0f), | |||
| label() {} | |||
| /** | |||
| Constructor using custom values. | |||
| */ | |||
| ParameterEnumerationValue(float v, const char* l) noexcept | |||
| : value(v), | |||
| label(l) {} | |||
| }; | |||
| /** | |||
| Collection of parameter enumeration values.@n | |||
| Handy class to handle the lifetime and count of all enumeration values. | |||
| */ | |||
| struct ParameterEnumerationValues { | |||
| /** | |||
| Number of elements allocated in @values. | |||
| */ | |||
| uint8_t count; | |||
| /** | |||
| Wherever the host is to be restricted to only use enumeration values. | |||
| @note This mode is only a hint! Not all hosts and plugin formats support this mode. | |||
| */ | |||
| bool restrictedMode; | |||
| /** | |||
| Array of @ParameterEnumerationValue items.@n | |||
| This pointer must be null or have been allocated on the heap with `new`. | |||
| */ | |||
| const ParameterEnumerationValue* values; | |||
| /** | |||
| Default constructor, for zero enumeration values. | |||
| */ | |||
| ParameterEnumerationValues() noexcept | |||
| : count(0), | |||
| restrictedMode(false), | |||
| values() {} | |||
| /** | |||
| Constructor using custom values.@n | |||
| The pointer to @values must have been allocated on the heap with `new`. | |||
| */ | |||
| ParameterEnumerationValues(uint32_t c, bool r, const ParameterEnumerationValue* v) noexcept | |||
| : count(c), | |||
| restrictedMode(r), | |||
| values(v) {} | |||
| ~ParameterEnumerationValues() noexcept | |||
| { | |||
| count = 0; | |||
| restrictedMode = false; | |||
| if (values != nullptr) | |||
| { | |||
| delete[] values; | |||
| values = nullptr; | |||
| } | |||
| } | |||
| }; | |||
| /** | |||
| Parameter. | |||
| */ | |||
| @@ -312,6 +402,12 @@ struct Parameter { | |||
| */ | |||
| ParameterRanges ranges; | |||
| /** | |||
| Enumeration values.@n | |||
| Can be used to give meaning to parameter values, working as an enumeration. | |||
| */ | |||
| ParameterEnumerationValues enumValues; | |||
| /** | |||
| Designation for this parameter. | |||
| */ | |||
| @@ -334,6 +430,7 @@ struct Parameter { | |||
| symbol(), | |||
| unit(), | |||
| ranges(), | |||
| enumValues(), | |||
| designation(kParameterDesignationNull), | |||
| midiCC(0) {} | |||
| @@ -346,6 +443,7 @@ struct Parameter { | |||
| symbol(s), | |||
| unit(u), | |||
| ranges(def, min, max), | |||
| enumValues(), | |||
| designation(kParameterDesignationNull), | |||
| midiCC(0) {} | |||