gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

n2xParameterDrivenLed.cpp (1493B)


      1 #include "n2xParameterDrivenLed.h"
      2 
      3 #include "n2xController.h"
      4 #include "n2xEditor.h"
      5 
      6 #include "juce_gui_basics/juce_gui_basics.h"
      7 
      8 namespace n2xJucePlugin
      9 {
     10 	ParameterDrivenLed::ParameterDrivenLed(Editor& _editor, const std::string& _component, std::string _parameter, uint8_t _part/* = CurrentPart*/)
     11 		: m_editor(_editor)
     12 		, m_parameterName(std::move(_parameter))
     13 		, m_led(_editor.findComponentT<juce::Button>(_component))
     14 		, m_part(_part)
     15 	{
     16 		auto& c = _editor.getN2xController();
     17 
     18 		m_onCurrentPartChanged.set(c.onCurrentPartChanged, [this](const uint8_t&)
     19 		{
     20 			bind();
     21 		});
     22 
     23 		m_led->onClick = [this]
     24 		{
     25 			if(!m_param)
     26 				return;
     27 			onClick(m_param, m_led->getToggleState());
     28 		};
     29 	}
     30 
     31 	void ParameterDrivenLed::updateState(juce::Button& _target, const pluginLib::Parameter* _source) const
     32 	{
     33 		_target.setToggleState(updateToggleState(_source), juce::dontSendNotification);
     34 	}
     35 
     36 	void ParameterDrivenLed::bind()
     37 	{
     38 		const auto& c = m_editor.getN2xController();
     39 
     40 		m_param = c.getParameter(m_parameterName, m_part == CurrentPart ? c.getCurrentPart() : m_part);
     41 
     42 		m_onParamChanged.set(m_param, [this](const pluginLib::Parameter* _parameter)
     43 		{
     44 			updateStateFromParameter(_parameter);
     45 		});
     46 
     47 		updateStateFromParameter(m_param);
     48 	}
     49 
     50 	void ParameterDrivenLed::disableClick() const
     51 	{
     52 		m_led->setInterceptsMouseClicks(false, false);
     53 	}
     54 
     55 	void ParameterDrivenLed::updateStateFromParameter(const pluginLib::Parameter* _parameter) const
     56 	{
     57 		updateState(*m_led, _parameter);
     58 	}
     59 }