| 
							- /*
 -   ==============================================================================
 - 
 -    This file is part of the JUCE library.
 -    Copyright (c) 2020 - Raw Material Software Limited
 - 
 -    JUCE is an open source library subject to commercial or open-source
 -    licensing.
 - 
 -    By using JUCE, you agree to the terms of both the JUCE 6 End-User License
 -    Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020).
 - 
 -    End User License Agreement: www.juce.com/juce-6-licence
 -    Privacy Policy: www.juce.com/juce-privacy-policy
 - 
 -    Or: You may also use this code under the terms of the GPL v3 (see
 -    www.gnu.org/licenses).
 - 
 -    JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
 -    EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
 -    DISCLAIMED.
 - 
 -   ==============================================================================
 - */
 - 
 - namespace juce
 - {
 - 
 - PluginDescription AudioPluginInstance::getPluginDescription() const
 - {
 -     PluginDescription desc;
 -     fillInPluginDescription (desc);
 -     return desc;
 - }
 - 
 - void* AudioPluginInstance::getPlatformSpecificData() { return nullptr; }
 - 
 - void AudioPluginInstance::getExtensions (ExtensionsVisitor& visitor) const { visitor.visitUnknown ({}); }
 - 
 - String AudioPluginInstance::getParameterID (int parameterIndex)
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     // Currently there is no corresponding method available in the
 -     // AudioProcessorParameter class, and the previous behaviour of JUCE's
 -     // plug-in hosting code simply returns a string version of the index; to
 -     // maintain backwards compatibility you should perform the operation below
 -     // this comment. However the caveat is that for plug-ins which change their
 -     // number of parameters dynamically at runtime you cannot rely upon the
 -     // returned parameter ID mapping to the correct parameter. A comprehensive
 -     // solution to this problem requires some additional work in JUCE's hosting
 -     // code.
 -     return String (parameterIndex);
 - }
 - 
 - float AudioPluginInstance::getParameter (int parameterIndex)
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->getValue();
 - 
 -     return 0.0f;
 - }
 - 
 - void AudioPluginInstance::setParameter (int parameterIndex, float newValue)
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         param->setValue (newValue);
 - }
 - 
 - const String AudioPluginInstance::getParameterName (int parameterIndex)
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->getName (1024);
 - 
 -     return {};
 - }
 - 
 - String AudioPluginInstance::getParameterName (int parameterIndex, int maximumStringLength)
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->getName (maximumStringLength);
 - 
 -     return {};
 - }
 - 
 - const String AudioPluginInstance::getParameterText (int parameterIndex)
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->getCurrentValueAsText();
 - 
 -     return {};
 - }
 - 
 - String AudioPluginInstance::getParameterText (int parameterIndex, int maximumStringLength)
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->getCurrentValueAsText().substring (0, maximumStringLength);
 - 
 -     return {};
 - }
 - 
 - float AudioPluginInstance::getParameterDefaultValue (int parameterIndex)
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->getDefaultValue();
 - 
 -     return 0.0f;
 - }
 - 
 - int AudioPluginInstance::getParameterNumSteps (int parameterIndex)
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->getNumSteps();
 - 
 -     return AudioProcessor::getDefaultNumParameterSteps();
 - }
 - 
 - bool AudioPluginInstance::isParameterDiscrete (int parameterIndex) const
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->isDiscrete();
 - 
 -     return false;
 - }
 - 
 - bool AudioPluginInstance::isParameterAutomatable (int parameterIndex) const
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->isAutomatable();
 - 
 -     return true;
 - }
 - 
 - String AudioPluginInstance::getParameterLabel (int parameterIndex) const
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->getLabel();
 - 
 -     return {};
 - }
 - 
 - bool AudioPluginInstance::isParameterOrientationInverted (int parameterIndex) const
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->isOrientationInverted();
 - 
 -     return false;
 - }
 - 
 - bool AudioPluginInstance::isMetaParameter (int parameterIndex) const
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->isMetaParameter();
 - 
 -     return false;
 - }
 - 
 - AudioProcessorParameter::Category AudioPluginInstance::getParameterCategory (int parameterIndex) const
 - {
 -     assertOnceOnDeprecatedMethodUse();
 - 
 -     if (auto* param = getParameters()[parameterIndex])
 -         return param->getCategory();
 - 
 -     return AudioProcessorParameter::genericParameter;
 - }
 - 
 - void AudioPluginInstance::assertOnceOnDeprecatedMethodUse() const noexcept
 - {
 -     if (! deprecationAssertiontriggered)
 -     {
 -         // If you hit this assertion then you are using at least one of the
 -         // methods marked as deprecated in this class. For now you can simply
 -         // continue past this point and subsequent uses of deprecated methods
 -         // will not trigger additional assertions. However, we will shortly be
 -         // removing these methods so you are strongly advised to look at the
 -         // implementation of the corresponding method in this class and use
 -         // that approach instead.
 -         jassertfalse;
 -     }
 - 
 -     deprecationAssertiontriggered = true;
 - }
 - 
 - bool AudioPluginInstance::deprecationAssertiontriggered = false;
 - 
 - AudioPluginInstance::Parameter::Parameter()
 - {
 -     onStrings.add (TRANS("on"));
 -     onStrings.add (TRANS("yes"));
 -     onStrings.add (TRANS("true"));
 - 
 -     offStrings.add (TRANS("off"));
 -     offStrings.add (TRANS("no"));
 -     offStrings.add (TRANS("false"));
 - }
 - 
 - AudioPluginInstance::Parameter::~Parameter() = default;
 - 
 - String AudioPluginInstance::Parameter::getText (float value, int maximumStringLength) const
 - {
 -     if (isBoolean())
 -         return value < 0.5f ? TRANS("Off") : TRANS("On");
 - 
 -     return String (value).substring (0, maximumStringLength);
 - }
 - 
 - float AudioPluginInstance::Parameter::getValueForText (const String& text) const
 - {
 -     auto floatValue = text.retainCharacters ("-0123456789.").getFloatValue();
 - 
 -     if (isBoolean())
 -     {
 -         if (onStrings.contains (text, true))
 -             return 1.0f;
 - 
 -         if (offStrings.contains (text, true))
 -             return 0.0f;
 - 
 -         return floatValue < 0.5f ? 0.0f : 1.0f;
 -     }
 - 
 -     return floatValue;
 - }
 - 
 - void AudioPluginInstance::addHostedParameter (std::unique_ptr<HostedParameter> param)
 - {
 -     addParameter (param.release());
 - }
 - 
 - void AudioPluginInstance::addHostedParameterGroup (std::unique_ptr<AudioProcessorParameterGroup> group)
 - {
 -    #if JUCE_DEBUG
 -     // All parameters *must* be HostedParameters, otherwise getHostedParameter will return
 -     // garbage and your host will crash and burn
 -     for (auto* param : group->getParameters (true))
 -     {
 -         jassert (dynamic_cast<HostedParameter*> (param) != nullptr);
 -     }
 -    #endif
 - 
 -     addParameterGroup (std::move (group));
 - }
 - 
 - void AudioPluginInstance::setHostedParameterTree (AudioProcessorParameterGroup group)
 - {
 -    #if JUCE_DEBUG
 -     // All parameters *must* be HostedParameters, otherwise getHostedParameter will return
 -     // garbage and your host will crash and burn
 -     for (auto* param : group.getParameters (true))
 -     {
 -         jassert (dynamic_cast<HostedParameter*> (param) != nullptr);
 -     }
 -    #endif
 - 
 -     setParameterTree (std::move (group));
 - }
 - 
 - AudioPluginInstance::HostedParameter* AudioPluginInstance::getHostedParameter (int index) const
 - {
 -     // It's important that all AudioPluginInstance implementations
 -     // only ever own HostedParameters!
 -     return static_cast<HostedParameter*> (getParameters()[index]);
 - }
 - 
 - } // namespace juce
 
 
  |