commit 8142a031467d09fb529c781f750577160c0b834f
parent 543c8de24248856afc0ec3a2320513d4398cf6d1
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Fri, 31 May 2024 17:43:56 +0200
make parameter listener a separate class to reduce amount of code needed when using them
Diffstat:
12 files changed, 60 insertions(+), 19 deletions(-)
diff --git a/source/jucePluginEditorLib/focusedParameter.cpp b/source/jucePluginEditorLib/focusedParameter.cpp
@@ -27,7 +27,7 @@ namespace jucePluginEditorLib
{
for (const auto& param : params.second)
{
- m_boundParameters.insert({param, pluginLib::EventListener(param->onValueChanged, [this](const pluginLib::Parameter* _param)
+ m_boundParameters.insert({param, pluginLib::ParameterListener(param, [this](const pluginLib::Parameter* _param)
{
if (_param->getChangeOrigin() == pluginLib::Parameter::ChangedBy::PresetChange ||
_param->getChangeOrigin() == pluginLib::Parameter::ChangedBy::Derived)
diff --git a/source/jucePluginEditorLib/focusedParameter.h b/source/jucePluginEditorLib/focusedParameter.h
@@ -4,7 +4,7 @@
#include "juce_events/juce_events.h"
-#include "../jucePluginLib/event.h"
+#include "../jucePluginLib/parameterlistener.h"
namespace juce
{
@@ -45,6 +45,6 @@ namespace jucePluginEditorLib
juce::Label* m_focusedParameterName = nullptr;
juce::Label* m_focusedParameterValue = nullptr;
std::unique_ptr<FocusedParameterTooltip> m_tooltip;
- std::map<pluginLib::Parameter*, pluginLib::EventListener<pluginLib::Parameter*>> m_boundParameters;
+ std::map<pluginLib::Parameter*, pluginLib::ParameterListener> m_boundParameters;
};
}
diff --git a/source/jucePluginLib/CMakeLists.txt b/source/jucePluginLib/CMakeLists.txt
@@ -15,6 +15,7 @@ set(SOURCES
parameterdescription.cpp parameterdescription.h
parameterdescriptions.cpp parameterdescriptions.h
parameterlink.cpp parameterlink.h
+ parameterlistener.cpp parameterlistener.h
parameterlocking.cpp parameterlocking.h
parameterregion.cpp parameterregion.h
parametervaluelist.cpp parametervaluelist.h
diff --git a/source/jucePluginLib/parameter.h b/source/jucePluginLib/parameter.h
@@ -110,6 +110,4 @@ namespace pluginLib
uint32_t m_uniqueDelayCallbackId = 0;
bool m_isLocked = false;
};
-
- using ParameterValueChangeListener = EventListener<Parameter*>;
}
diff --git a/source/jucePluginLib/parameterbinding.cpp b/source/jucePluginLib/parameterbinding.cpp
@@ -289,10 +289,10 @@ namespace pluginLib
if(button != nullptr)
button->getToggleStateValue().referTo(juce::Value());
- if(_b.onChangeListenerId != ParameterValueChangeListener::InvalidListenerId)
+ if(_b.onChangeListenerId != ParameterListener::InvalidListenerId)
{
_b.parameter->onValueChanged.removeListener(_b.onChangeListenerId);
- _b.onChangeListenerId = ParameterValueChangeListener::InvalidListenerId;
+ _b.onChangeListenerId = ParameterListener::InvalidListenerId;
}
}
diff --git a/source/jucePluginLib/parameterbinding.h b/source/jucePluginLib/parameterbinding.h
@@ -3,7 +3,7 @@
#include "juce_gui_basics/juce_gui_basics.h"
#include "event.h"
-#include "parameter.h"
+#include "parameterlistener.h"
namespace juce
{
@@ -44,7 +44,7 @@ namespace pluginLib
juce::Component* component = nullptr;
uint32_t type = 0xffffffff;
uint8_t part = CurrentPart;
- size_t onChangeListenerId = ParameterValueChangeListener::InvalidListenerId;
+ size_t onChangeListenerId = ParameterListener::InvalidListenerId;
};
Event<BoundParameter> onBind;
diff --git a/source/jucePluginLib/parameterlistener.cpp b/source/jucePluginLib/parameterlistener.cpp
@@ -0,0 +1,17 @@
+#include "parameterlistener.h"
+
+#include "parameter.h"
+
+pluginLib::ParameterListener::ParameterListener(Parameter* _p, const Callback& _callback): EventListener(_p->onValueChanged, _callback)
+{
+}
+
+void pluginLib::ParameterListener::set(Parameter* _parameter, const Callback& _callback)
+{
+ Base::set(_parameter->onValueChanged, _callback);
+}
+
+void pluginLib::ParameterListener::set(Parameter* _parameter)
+{
+ Base::set(_parameter->onValueChanged);
+}
diff --git a/source/jucePluginLib/parameterlistener.h b/source/jucePluginLib/parameterlistener.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "event.h"
+
+namespace pluginLib
+{
+ class Parameter;
+
+ class ParameterListener : public EventListener<Parameter*>
+ {
+ public:
+ using Base = EventListener<Parameter*>;
+ using Base::set;
+ using Base::operator=;
+
+ using Callback = Base::MyCallback;
+
+ ParameterListener() = default;
+ ParameterListener(Parameter* _p, const Callback& _callback);
+
+ void set(Parameter* _parameter, const Callback& _callback);
+ void set(Parameter* _parameter);
+ };
+}
diff --git a/source/jucePluginLib/softknob.cpp b/source/jucePluginLib/softknob.cpp
@@ -27,12 +27,12 @@ namespace pluginLib
m_targetSelect = _controller.getParameter(idxTargetSelect, _part);
assert(m_targetSelect);
- m_targetSelectListener.set(m_targetSelect->onValueChanged, [this](auto*)
+ m_targetSelectListener.set(m_targetSelect, [this](auto*)
{
onTargetChanged();
});
- m_sourceParamListener.set(m_sourceParam->onValueChanged,[this](auto*)
+ m_sourceParamListener.set(m_sourceParam, [this](auto*)
{
onSourceValueChanged();
});
@@ -95,7 +95,7 @@ namespace pluginLib
if(!m_targetParam)
return;
- m_targetParamListener.set(m_targetParam->onValueChanged, [this](pluginLib::Parameter*)
+ m_targetParamListener.set(m_targetParam, [this](pluginLib::Parameter*)
{
onTargetValueChanged();
});
diff --git a/source/jucePluginLib/softknob.h b/source/jucePluginLib/softknob.h
@@ -2,7 +2,7 @@
#include <cstdint>
-#include "parameter.h"
+#include "parameterlistener.h"
namespace pluginLib
{
@@ -41,8 +41,8 @@ namespace pluginLib
Parameter* m_targetSelect = nullptr;
Parameter* m_targetParam = nullptr;
- ParameterValueChangeListener m_sourceParamListener;
- ParameterValueChangeListener m_targetSelectListener;
- ParameterValueChangeListener m_targetParamListener;
+ ParameterListener m_sourceParamListener;
+ ParameterListener m_targetSelectListener;
+ ParameterListener m_targetParamListener;
};
}
diff --git a/source/virusJucePlugin/ArpUserPattern.cpp b/source/virusJucePlugin/ArpUserPattern.cpp
@@ -107,7 +107,7 @@ namespace genericVirusUI
auto* p = m_controller.getParameter(idx, m_controller.getCurrentPart());
assert(p);
- return std::make_pair(p, pluginLib::ParameterValueChangeListener(p->onValueChanged, [this](pluginLib::Parameter*)
+ return std::make_pair(p, pluginLib::ParameterListener(p, [this](pluginLib::Parameter*)
{
onParameterChanged();
}));
diff --git a/source/virusJucePlugin/ArpUserPattern.h b/source/virusJucePlugin/ArpUserPattern.h
@@ -2,10 +2,11 @@
#include "juce_gui_basics/juce_gui_basics.h"
-#include "../jucePluginLib/parameter.h"
+#include "../jucePluginLib/parameterlistener.h"
namespace pluginLib
{
+ class Parameter;
class Controller;
}
@@ -16,7 +17,7 @@ namespace genericVirusUI
class ArpUserPattern : public juce::Component
{
public:
- using BoundParam = std::pair<pluginLib::Parameter*, pluginLib::ParameterValueChangeListener>;
+ using BoundParam = std::pair<pluginLib::Parameter*, pluginLib::ParameterListener>;
ArpUserPattern(const VirusEditor& _editor);