/*
 * OPLInstrDlg.h
 * -------------
 * Purpose: Editor for OPL-based synth instruments
 * Notes  : (currently none)
 * Authors: 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 "../soundlib/Snd_defs.h"

OPENMPT_NAMESPACE_BEGIN

class CSoundFile;

class OPLInstrDlg : public CDialog
{
	CButton m_additive, m_sustain[2], m_scaleEnv[2], m_vibrato[2], m_tremolo[2];
	CSliderCtrl m_feedback, m_attackRate[2], m_decayRate[2], m_sustainLevel[2], m_releaseRate[2], m_volume[2], m_levelScaling[2], m_freqMultiplier[2];
	CComboBox m_waveform[2];
	CSize m_windowSize;
	CWnd &m_parent;
	const CSoundFile &m_sndFile;
	OPLPatch *m_patch;

public:
	OPLInstrDlg(CWnd &parent, const CSoundFile &sndFile);
	~OPLInstrDlg();
	void SetPatch(OPLPatch &patch);
	CSize GetMinimumSize() const { return m_windowSize; }

protected:
	void ParamsChanged();

	void DoDataExchange(CDataExchange *pDX) override;
	BOOL OnInitDialog() override;
	BOOL PreTranslateMessage(MSG *pMsg) override;
	void OnOK() override { }
	void OnCancel() override { }
	void OnHScroll(UINT, UINT, CScrollBar *) { ParamsChanged(); }
	LRESULT OnDragonDropping(WPARAM wParam, LPARAM lParam);
	BOOL OnToolTip(UINT id, NMHDR *pNMHDR, LRESULT *pResult);
	DECLARE_MESSAGE_MAP()
};

OPENMPT_NAMESPACE_END