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 }