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

focusedParameter.h (1729B)


      1 #pragma once
      2 
      3 #include "focusedParameterTooltip.h"
      4 
      5 #include "juce_events/juce_events.h"
      6 
      7 #include "jucePluginLib/parameterlistener.h"
      8 
      9 namespace juce
     10 {
     11 	class MouseEvent;
     12 }
     13 
     14 namespace genericUI
     15 {
     16 	class Editor;
     17 }
     18 
     19 namespace pluginLib
     20 {
     21 	class Parameter;
     22 	class Controller;
     23 	class ParameterBinding;
     24 }
     25 
     26 namespace jucePluginEditorLib
     27 {
     28 	class FocusedParameter : juce::Timer
     29 	{
     30 	public:
     31 		enum class Priority
     32 		{
     33 			None,
     34 			Low,
     35 			Medium,
     36 			High
     37 		};
     38 
     39 		FocusedParameter(const pluginLib::Controller& _controller, const pluginLib::ParameterBinding& _parameterBinding, const genericUI::Editor& _editor);
     40 		~FocusedParameter() override;
     41 
     42 		void onMouseEnter(const juce::MouseEvent& _event);
     43 
     44 		void updateByComponent(juce::Component* _comp);
     45 
     46 		virtual void updateParameter(const std::string& _name, const std::string& _value);
     47 
     48 	private:
     49 		void timerCallback() override;
     50 		void updateControlLabel(juce::Component* _component, Priority _prio);
     51 		void updateControlLabel(juce::Component* _component, const pluginLib::Parameter* _param);
     52 		void updateControlLabel(juce::Component* _component, const pluginLib::Parameter* _param, Priority _priority);
     53 
     54 		const pluginLib::Parameter* getParameterFromComponent(juce::Component* _component) const;
     55 
     56 		const pluginLib::Parameter* resolveSoftKnob(const pluginLib::Parameter* _sourceParam) const;
     57 
     58 		const pluginLib::ParameterBinding& m_parameterBinding;
     59 		const pluginLib::Controller& m_controller;
     60 
     61 		juce::Label* m_focusedParameterName = nullptr;
     62 		juce::Label* m_focusedParameterValue = nullptr;
     63 
     64 		std::unique_ptr<FocusedParameterTooltip> m_tooltip;
     65 
     66 		std::map<pluginLib::Parameter*, pluginLib::ParameterListener> m_boundParameters;
     67 		Priority m_currentPriority = Priority::None;
     68 	};
     69 }