aboutsummaryrefslogtreecommitdiff
path: root/Src/external_dependencies/openmpt-trunk/mptrack/plugins/LFOPluginEditor.h
blob: bb6fb2b54bdbcf514fff0e6ce38015fbed7093b0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
 * LFOPluginEditor.h
 * -----------------
 * Purpose: Editor interface for the LFO plugin.
 * Notes  : (currently none)
 * Authors: Johannes Schultz (OpenMPT Devs)
 * The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
 */


#pragma once

#include "openmpt/all/BuildSettings.hpp"

#include "../AbstractVstEditor.h"
#include "../../soundlib/plugins/LFOPlugin.h"

OPENMPT_NAMESPACE_BEGIN

struct UpdateHint;

class LFOPluginEditor : public CAbstractVstEditor
{
protected:
	CComboBox m_plugParam, m_outPlug, m_midiCC;
	CSliderCtrl m_amplitudeSlider, m_offsetSlider, m_frequencySlider;
	CEdit m_midiChnEdit;
	CSpinButtonCtrl m_midiChnSpin;
	LFOPlugin &m_lfoPlugin;
	bool m_locked : 1;
	static constexpr int SLIDER_GRANULARITY = 1000;

public:

	LFOPluginEditor(LFOPlugin &plugin);

	bool OpenEditor(CWnd *parent) override;
	bool IsResizable() const override { return false; }
	bool SetSize(int, int) override { return false; }

	void UpdateParamDisplays() override;
	void UpdateParam(int32 param) override;
	void UpdateView(UpdateHint hint) override;

protected:
	void DoDataExchange(CDataExchange* pDX) override;
	void OnHScroll(UINT nCode, UINT nPos, CScrollBar *pSB);

	void InitSlider(CSliderCtrl &slider, LFOPlugin::Parameters param);
	void SetSliderText(LFOPlugin::Parameters param);
	void SetSliderValue(CSliderCtrl &slider, float value);
	float GetSliderValue(CSliderCtrl &slider);

	void OnPolarityChanged();
	void OnTempoSyncChanged();
	void OnBypassChanged();
	void OnLoopModeChanged();
	void OnWaveformChanged(UINT nID);
	void OnPlugParameterChanged();
	void OnMidiCCChanged();
	void OnParameterChanged();
	void OnOutputPlugChanged();
	void OnPluginEditor();
	LRESULT OnUpdateParam(WPARAM wParam, LPARAM lParam);

	DECLARE_MESSAGE_MAP()
};

OPENMPT_NAMESPACE_END