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

controllerlink.h (1215B)


      1 #pragma once
      2 
      3 #include <string>
      4 
      5 #include "juce_gui_basics/juce_gui_basics.h"
      6 
      7 namespace genericUI
      8 {
      9 	class Editor;
     10 
     11 	class ControllerLink : juce::Slider::Listener, juce::ComponentListener
     12 	{
     13 	public:
     14 		ControllerLink(ControllerLink&&) = delete;
     15 		ControllerLink(const ControllerLink&) = delete;
     16 
     17 		ControllerLink(std::string _source = std::string(), std::string _dest = std::string(), std::string _conditionParam = std::string());
     18 		~ControllerLink() override;
     19 
     20 		void create(const Editor& _editor);
     21 
     22 		void create(juce::Slider* _source, juce::Slider* _dest, juce::Button* _condition);
     23 
     24 		void operator = (const ControllerLink&) = delete;
     25 		void operator = (ControllerLink&&) = delete;
     26 
     27 	private:
     28 		void sliderValueChanged(juce::Slider* _slider) override;
     29 		void sliderDragStarted(juce::Slider*) override;
     30 		void sliderDragEnded(juce::Slider*) override;
     31 
     32 		void componentBeingDeleted(juce::Component& component) override;
     33 
     34 		const std::string m_sourceName;
     35 		const std::string m_destName;
     36 		const std::string m_conditionParam;
     37 
     38 		juce::Slider* m_source = nullptr;
     39 		juce::Slider* m_dest = nullptr;
     40 		juce::Button* m_condition = nullptr;
     41 		double m_lastSourceValue = 0;
     42 		bool m_sourceIsBeingDragged = false;
     43 	};
     44 }