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

parameterOverlays.cpp (1876B)


      1 #include "parameterOverlays.h"
      2 
      3 #include "jucePluginLib/parameterbinding.h"
      4 
      5 namespace jucePluginEditorLib
      6 {
      7 	ParameterOverlays::ParameterOverlays(Editor& _editor, pluginLib::ParameterBinding& _binding) : m_editor(_editor), m_binding(_binding)
      8 	{
      9 		m_onBindListenerId = m_binding.onBind.addListener([this](const pluginLib::ParameterBinding::BoundParameter& _param)
     10 		{
     11 			onBind(_param);
     12 		});
     13 
     14 		m_onUnbindListenerId = m_binding.onUnbind.addListener([this](const pluginLib::ParameterBinding::BoundParameter& _param)
     15 		{
     16 			onUnbind(_param);
     17 		});
     18 	}
     19 
     20 	ParameterOverlays::~ParameterOverlays()
     21 	{
     22 		m_binding.onBind.removeListener(m_onBindListenerId);
     23 		m_binding.onUnbind.removeListener(m_onUnbindListenerId);
     24 	}
     25 
     26 	bool ParameterOverlays::registerComponent(juce::Component* _component)
     27 	{
     28 		if(m_overlays.find(_component) != m_overlays.end())
     29 			return false;
     30 
     31 		m_overlays.insert({_component, std::make_unique<ParameterOverlay>(*this, _component)});
     32 
     33 		return true;
     34 	}
     35 
     36 	void ParameterOverlays::refreshAll() const
     37 	{
     38 		for (const auto& overlay : m_overlays)
     39 			overlay.second->refresh();
     40 	}
     41 
     42 	void ParameterOverlays::onBind(const pluginLib::ParameterBinding::BoundParameter& _parameter)
     43 	{
     44 		registerComponent(_parameter.component);
     45 
     46 		auto* o = getOverlay(_parameter);
     47 		if(!o)
     48 			return;
     49 
     50 		o->onBind(_parameter);
     51 	}
     52 
     53 	void ParameterOverlays::onUnbind(const pluginLib::ParameterBinding::BoundParameter& _parameter)
     54 	{
     55 		auto* o = getOverlay(_parameter);
     56 
     57 		if(!o)
     58 			return;
     59 
     60 		o->onUnbind(_parameter);
     61 	}
     62 
     63 	ParameterOverlay* ParameterOverlays::getOverlay(const juce::Component* _comp)
     64 	{
     65 		const auto it = m_overlays.find(_comp);
     66 		if(it == m_overlays.end())
     67 			return nullptr;
     68 		return it->second.get();
     69 	}
     70 
     71 	ParameterOverlay* ParameterOverlays::getOverlay(const pluginLib::ParameterBinding::BoundParameter& _parameter)
     72 	{
     73 		return getOverlay(_parameter.component);
     74 	}
     75 }