Audacity 3.2.0
Public Member Functions | Private Attributes | List of all members
anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter Class Referencefinal
Inheritance diagram for anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter:
[legend]
Collaboration diagram for anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter:
[legend]

Public Member Functions

 VST3DiscreteParameter (wxWindow *parent, wxWindowID id, Steinberg::Vst::ParamID paramId, int maxValue, const wxString &title, const wxString &units, Steinberg::Vst::IEditController &editController, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxSL_HORIZONTAL, const wxValidator &validator=wxDefaultValidator, const wxString &name=wxSliderNameStr)
 
void SetNormalizedValue (Steinberg::Vst::IEditController &editController, Steinberg::Vst::ParamValue value) override
 
void UpdateAccessible (Steinberg::Vst::IEditController &editController, Steinberg::Vst::ParamValue value) override
 
Steinberg::Vst::ParamValue GetNormalizedValue (Steinberg::Vst::IEditController &editController) const override
 
- Public Member Functions inherited from VST3ParameterControl
 VST3ParameterControl (Steinberg::Vst::ParamID id)
 
virtual ~VST3ParameterControl ()
 
virtual void SetNormalizedValue (Steinberg::Vst::IEditController &, Steinberg::Vst::ParamValue value)=0
 
virtual Steinberg::Vst::ParamValue GetNormalizedValue (Steinberg::Vst::IEditController &editController) const =0
 
virtual void UpdateAccessible (Steinberg::Vst::IEditController &editController, Steinberg::Vst::ParamValue value)
 
Steinberg::Vst::ParamID GetParameterId () const noexcept
 

Private Attributes

const wxString mTitle
 
const wxString mUnits
 
const int mStepCount {}
 
bool mUsePluginConversions { true }
 

Detailed Description

Definition at line 156 of file VST3ParametersWindow.cpp.

Constructor & Destructor Documentation

◆ VST3DiscreteParameter()

anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter::VST3DiscreteParameter ( wxWindow *  parent,
wxWindowID  id,
Steinberg::Vst::ParamID  paramId,
int  maxValue,
const wxString &  title,
const wxString &  units,
Steinberg::Vst::IEditController &  editController,
const wxPoint &  pos = wxDefaultPosition,
const wxSize &  size = wxDefaultSize,
long  style = wxSL_HORIZONTAL,
const wxValidator &  validator = wxDefaultValidator,
const wxString &  name = wxSliderNameStr 
)
inline

Definition at line 164 of file VST3ParametersWindow.cpp.

176 : wxSlider(parent, id, 0, 0, maxValue, pos, size, style, validator, name)
177 , VST3ParameterControl(paramId)
178 , mTitle(title)
179 , mUnits(units)
180 , mStepCount(maxValue)
181 {
182#if wxUSE_ACCESSIBILITY
183 SetAccessible(safenew WindowAccessible(this));
184#endif
185 // See Issue #4763.
186 // For discrete parmeters, it appears that some plugins do not provide
187 // correct implementations of the functions for converting between plain
188 // and normalized values. When the correct implementations are not provided
189 // the conversion functions just return the input value.
190 // So, to workaround this, test for this, and when valid implementations
191 // are not provided, use the formulas given by Steinberg in their documentation.
192 mUsePluginConversions = mStepCount != editController.plainParamToNormalized(paramId, mStepCount);
193 }
const TranslatableString name
Definition: Distortion.cpp:76
#define safenew
Definition: MemoryX.h:10
static const auto title
VST3ParameterControl(Steinberg::Vst::ParamID id)
An alternative to using wxWindowAccessible, which in wxWidgets 3.1.1 contained GetParent() which was ...

References safenew.

Member Function Documentation

◆ GetNormalizedValue()

Steinberg::Vst::ParamValue anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter::GetNormalizedValue ( Steinberg::Vst::IEditController &  editController) const
inlineoverridevirtual

Implements VST3ParameterControl.

Definition at line 211 of file VST3ParametersWindow.cpp.

212 {
213 return mUsePluginConversions ?
214 editController.plainParamToNormalized(GetParameterId(), GetValue()) :
215 GetValue() / static_cast<double>(mStepCount);
216 }
Steinberg::Vst::ParamID GetParameterId() const noexcept

◆ SetNormalizedValue()

void anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter::SetNormalizedValue ( Steinberg::Vst::IEditController &  editController,
Steinberg::Vst::ParamValue  value 
)
inlineoverridevirtual

Implements VST3ParameterControl.

Definition at line 195 of file VST3ParametersWindow.cpp.

196 {
197 int plainValue = mUsePluginConversions ?
198 static_cast<int>(editController.normalizedParamToPlain(GetParameterId(), value)) :
199 static_cast<int>(std::min(static_cast<double>(mStepCount), value * (mStepCount + 1)));
200 SetValue(plainValue);
201 UpdateAccessible(editController, value);
202 }
int min(int a, int b)
void UpdateAccessible(Steinberg::Vst::IEditController &editController, Steinberg::Vst::ParamValue value) override

References min().

Here is the call graph for this function:

◆ UpdateAccessible()

void anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter::UpdateAccessible ( Steinberg::Vst::IEditController &  editController,
Steinberg::Vst::ParamValue  value 
)
inlineoverridevirtual

Reimplemented from VST3ParameterControl.

Definition at line 204 of file VST3ParametersWindow.cpp.

205 {
206 Steinberg::Vst::String128 str{ };
207 editController.getParamStringByValue(GetParameterId(), value, str);
208 SetName(wxString::Format("%s %s %s", mTitle, VST3Utils::ToWxString(str), mUnits));
209 }
#define str(a)
static wxString ToWxString(const Steinberg::Vst::TChar *str)
Definition: VST3Utils.cpp:93

References str, and VST3Utils::ToWxString().

Here is the call graph for this function:

Member Data Documentation

◆ mStepCount

const int anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter::mStepCount {}
private

Definition at line 160 of file VST3ParametersWindow.cpp.

◆ mTitle

const wxString anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter::mTitle
private

Definition at line 158 of file VST3ParametersWindow.cpp.

◆ mUnits

const wxString anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter::mUnits
private

Definition at line 159 of file VST3ParametersWindow.cpp.

◆ mUsePluginConversions

bool anonymous_namespace{VST3ParametersWindow.cpp}::VST3DiscreteParameter::mUsePluginConversions { true }
private

Definition at line 161 of file VST3ParametersWindow.cpp.


The documentation for this class was generated from the following file: