/// Set **internal** parameter value from float. The new value must /// be in the range from 0.0 to 1.0. /// /// @param newValue new value (between 0.0 and 1.0) /// void PluginParameterContinuous::setFloat(float newValue) { // confine new value to internal parameter range if (newValue < 0.0f) { newValue = 0.0f; } else if (newValue > 1.0f) { newValue = 1.0f; } // value has changed if (newValue != value) { // update internal parameter value value = newValue; // update real parameter value realValue = toRealFloat(value); // mark parameter as changed setChangeFlag(); } }
/// Create a parameter for storing a string. **Note: several /// functions must not be used -- see below!** /// /// @param newValue intial value /// ParString::ParString(const String &newValue) { // initialise value setText(newValue); // mark parameter as changed setChangeFlag(); }
/// Set parameter value from string. /// /// @param newValue new parameter value /// void ParString::setText(const String &newValue) { // mark parameter as changed if necessary if (textValue.compare(newValue) != 0) { setChangeFlag(); } // update value textValue = newValue; }
/// Set **internal** parameter value from float. The new value must /// be in the range from 0.0 to 1.0. /// /// @param newValue new value (between 0.0 and 1.0) /// void ParSwitch::setFloat(float newValue) { // calculate internal value float newRealValue = toRealFloat(newValue); // value has changed if (newRealValue != realValue_) { // update real parameter value realValue_ = newRealValue; // update internal parameter value value_ = toInternalFloat(realValue_); // mark parameter as changed setChangeFlag(); } }
/// Create a stepped parameter that can be filled with arbitrary /// preset values. **Internal** values simply range from 0.0 to 1.0. /// ParSwitch::ParSwitch() { // initialise values (invalid because parameter contains no // values) value_ = -1.0f; realValue_ = -1.0f; // initialise default values (invalid because parameter contains // no values) defaultValue_ = -1.0f; defaultRealValue_ = -1.0f; // internal spacing between values (invalid because parameter // contains no values) stepSize = -1.0f; // mark parameter as changed setChangeFlag(); }
/// Add a preset value and a corresponding string representation. /// **This function must be called at least twice for the parameter to /// work as expected.** /// /// @param newRealValue new real value /// /// @param newLabel string representation /// void ParSwitch::addPreset(const float newRealValue, const String &newLabel) { // store real value in array arrRealValues.add(newRealValue); // store label in array arrLabels.add(newLabel); // this is the first preset value we have added if (arrRealValues.size() == 1) { // update default value and value setDefaultRealFloat(newRealValue, true); // mark parameter as changed setChangeFlag(); } // prevent division by zero else { // update step size stepSize = 1.0f / (arrLabels.size() - 1.0f); } }