parameterOverlays.h (1080B)
1 #pragma once 2 3 #include <map> 4 #include <memory> 5 6 #include "parameterOverlay.h" 7 8 #include "jucePluginLib/parameterbinding.h" 9 10 namespace pluginLib 11 { 12 class ParameterBinding; 13 } 14 15 namespace juce 16 { 17 class Component; 18 } 19 20 namespace jucePluginEditorLib 21 { 22 class Editor; 23 24 class ParameterOverlays 25 { 26 public: 27 explicit ParameterOverlays(Editor& _editor, pluginLib::ParameterBinding& _binding); 28 ~ParameterOverlays(); 29 30 bool registerComponent(juce::Component* _component); 31 32 Editor& getEditor() const { return m_editor; } 33 34 void refreshAll() const; 35 36 private: 37 void onBind(const pluginLib::ParameterBinding::BoundParameter& _parameter); 38 void onUnbind(const pluginLib::ParameterBinding::BoundParameter& _parameter); 39 40 ParameterOverlay* getOverlay(const juce::Component* _comp); 41 ParameterOverlay* getOverlay(const pluginLib::ParameterBinding::BoundParameter& _parameter); 42 43 Editor& m_editor; 44 pluginLib::ParameterBinding& m_binding; 45 46 std::map<const juce::Component*, std::unique_ptr<ParameterOverlay>> m_overlays; 47 size_t m_onBindListenerId; 48 size_t m_onUnbindListenerId; 49 }; 50 }