Audacity 3.2.0
Classes | Public Member Functions | Private Attributes | List of all members
internal::ParameterValueQueue Class Referencefinal

#include <ParameterValueQueue.h>

Inheritance diagram for internal::ParameterValueQueue:
[legend]
Collaboration diagram for internal::ParameterValueQueue:
[legend]

Classes

struct  Point
 

Public Member Functions

 ParameterValueQueue ()
 
virtual ~ParameterValueQueue ()
 
void initialize (Steinberg::Vst::ParamID id)
 
bool isInitialized () const noexcept
 
void dispose () noexcept
 
Steinberg::Vst::ParamID PLUGIN_API getParameterId () override
 
Steinberg::int32 PLUGIN_API getPointCount () override
 
Steinberg::tresult PLUGIN_API getPoint (Steinberg::int32 index, Steinberg::int32 &sampleOffset, Steinberg::Vst::ParamValue &value) override
 
Steinberg::tresult PLUGIN_API addPoint (Steinberg::int32 sampleOffset, Steinberg::Vst::ParamValue value, Steinberg::int32 &index) override
 

Private Attributes

bool mInitialized { false }
 
Steinberg::Vst::ParamID mId
 
std::vector< PointmPoints
 

Detailed Description

IParamValueQueue implementation. Holds automation points sorted in time. Can be initialized with any parameter id, and disposed later to avoid reallocations

Definition at line 23 of file ParameterValueQueue.h.

Constructor & Destructor Documentation

◆ ParameterValueQueue()

internal::ParameterValueQueue::ParameterValueQueue ( )

Definition at line 22 of file ParameterValueQueue.cpp.

23{
24 FUNKNOWN_CTOR
25}

◆ ~ParameterValueQueue()

internal::ParameterValueQueue::~ParameterValueQueue ( )
virtual

Definition at line 27 of file ParameterValueQueue.cpp.

28{
29 wxASSERT(!mInitialized);
30 FUNKNOWN_DTOR;
31}

References mInitialized.

Member Function Documentation

◆ addPoint()

Steinberg::tresult internal::ParameterValueQueue::addPoint ( Steinberg::int32  sampleOffset,
Steinberg::Vst::ParamValue  value,
Steinberg::int32 &  index 
)
override

Definition at line 77 of file ParameterValueQueue.cpp.

79{
80 //store points sorted by time value
81
82 wxASSERT(mInitialized);
83
84 auto newPoint = Point { sampleOffset, value };
85 const auto it =
86 std::lower_bound(mPoints.begin(), mPoints.end(), newPoint);
87
88 if(it == mPoints.end())
89 {
90 index = mPoints.size();
91 mPoints.push_back(std::move(newPoint));
92 }
93 else
94 {
95 if (it->sampleOffset == sampleOffset)
96 it->paramValue = value;
97 else
98 mPoints.insert(it, std::move(newPoint));
99 index = std::distance(mPoints.begin(), it);
100 }
101
102 return Steinberg::kResultOk;
103}
BasicUI::Point Point
Definition: BasicMenu.h:23

References mInitialized, and mPoints.

◆ dispose()

void internal::ParameterValueQueue::dispose ( )
noexcept

Definition at line 46 of file ParameterValueQueue.cpp.

47{
48 mInitialized = false;
49 mPoints.clear();
50}

References mInitialized, and mPoints.

Referenced by internal::ParameterQueuePool::QueueCleanup::operator()().

Here is the caller graph for this function:

◆ getParameterId()

Steinberg::Vst::ParamID internal::ParameterValueQueue::getParameterId ( )
override

Definition at line 52 of file ParameterValueQueue.cpp.

53{
54 wxASSERT(mInitialized);
55 return mId;
56}
Steinberg::Vst::ParamID mId

References mId, and mInitialized.

◆ getPoint()

Steinberg::tresult internal::ParameterValueQueue::getPoint ( Steinberg::int32  index,
Steinberg::int32 &  sampleOffset,
Steinberg::Vst::ParamValue &  value 
)
override

Definition at line 64 of file ParameterValueQueue.cpp.

66{
67 wxASSERT(mInitialized);
68 if(index >= 0 && index < mPoints.size())
69 {
70 sampleOffset = mPoints[index].sampleOffset;
71 value = mPoints[index].paramValue;
72 return Steinberg::kResultOk;
73 }
74 return Steinberg::kInvalidArgument;
75}

References mInitialized, and mPoints.

◆ getPointCount()

Steinberg::int32 internal::ParameterValueQueue::getPointCount ( )
override

Definition at line 58 of file ParameterValueQueue.cpp.

59{
60 wxASSERT(mInitialized);
61 return static_cast<int>(mPoints.size());
62}

References mInitialized, and mPoints.

◆ initialize()

void internal::ParameterValueQueue::initialize ( Steinberg::Vst::ParamID  id)

Definition at line 33 of file ParameterValueQueue.cpp.

34{
35 wxASSERT(!mInitialized);//misuse
36
37 mInitialized = true;
38 mId = id;
39}
int id

References id, mId, and mInitialized.

◆ isInitialized()

bool internal::ParameterValueQueue::isInitialized ( ) const
noexcept

Definition at line 41 of file ParameterValueQueue.cpp.

42{
43 return mInitialized;
44}

References mInitialized.

Member Data Documentation

◆ mId

Steinberg::Vst::ParamID internal::ParameterValueQueue::mId
private

Definition at line 34 of file ParameterValueQueue.h.

Referenced by getParameterId(), and initialize().

◆ mInitialized

bool internal::ParameterValueQueue::mInitialized { false }
private

◆ mPoints

std::vector<Point> internal::ParameterValueQueue::mPoints
private

Definition at line 35 of file ParameterValueQueue.h.

Referenced by addPoint(), dispose(), getPoint(), and getPointCount().


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