diff options
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/mptrack/Mpdlgs.h')
-rw-r--r-- | Src/external_dependencies/openmpt-trunk/mptrack/Mpdlgs.h | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/mptrack/Mpdlgs.h b/Src/external_dependencies/openmpt-trunk/mptrack/Mpdlgs.h new file mode 100644 index 00000000..93647489 --- /dev/null +++ b/Src/external_dependencies/openmpt-trunk/mptrack/Mpdlgs.h @@ -0,0 +1,256 @@ +/* + * MPDlgs.h + * -------- + * Purpose: Implementation of various player setup dialogs. + * 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" + +OPENMPT_NAMESPACE_BEGIN + +class CSoundFile; +class CMainFrame; + +#define NUM_CHANNELCOMBOBOXES 4 + +class COptionsSoundcard: public CPropertyPage +{ +protected: + CComboBoxEx m_CbnDevice; + CComboBox m_CbnLatencyMS, m_CbnUpdateIntervalMS, m_CbnMixingFreq, m_CbnChannels, m_CbnSampleFormat, m_CbnDither, m_CbnRecordingChannels, m_CbnRecordingSource; + CEdit m_EditStatistics; + CButton m_BtnDriverPanel; + + CComboBox m_CbnStoppedMode; + + CComboBox m_CbnChannelMapping[NUM_CHANNELCOMBOBOXES]; + + SoundDevice::Identifier m_InitialDeviceIdentifier; + + void SetInitialDevice(); + + void SetDevice(SoundDevice::Identifier dev, bool forceReload=false); + SoundDevice::Info m_CurrentDeviceInfo; + SoundDevice::Caps m_CurrentDeviceCaps; + SoundDevice::DynamicCaps m_CurrentDeviceDynamicCaps; + SoundDevice::Settings m_Settings; + +public: + COptionsSoundcard(SoundDevice::Identifier deviceIdentifier); + + void UpdateStatistics(); + +private: + void UpdateEverything(); + void UpdateDevice(); + void UpdateGeneral(); + void UpdateLatency(); + void UpdateUpdateInterval(); + void UpdateSampleRates(); + void UpdateChannels(); + void UpdateSampleFormat(); + void UpdateDither(); + void UpdateChannelMapping(); + void UpdateRecording(); + void UpdateControls(); + +protected: + BOOL OnInitDialog() override; + void OnOK() override; + BOOL OnSetActive() override; + void DoDataExchange(CDataExchange* pDX) override; + void UpdateStereoSep(); + + afx_msg void OnDeviceChanged(); + afx_msg void OnSettingsChanged() { SetModified(TRUE); } + afx_msg void OnExclusiveModeChanged(); + afx_msg void OnChannelsChanged(); + afx_msg void OnSampleFormatChanged(); + afx_msg void OnRecordingChanged(); + afx_msg void OnSoundCardShowAll(); + afx_msg void OnSoundCardRescan(); + afx_msg void OnSoundCardDriverPanel(); + + void OnChannelChanged(int channel); + afx_msg void OnChannel1Changed() { OnChannelChanged(0); }; + afx_msg void OnChannel2Changed() { OnChannelChanged(1); }; + afx_msg void OnChannel3Changed() { OnChannelChanged(2); }; + afx_msg void OnChannel4Changed() { OnChannelChanged(3); }; + + DECLARE_MESSAGE_MAP() +}; + + +class COptionsMixer: public CPropertyPage +{ +protected: + + CComboBox m_CbnResampling, m_CbnAmigaType; + + CEdit m_CEditRampUp; + CEdit m_CEditRampDown; + CEdit m_CInfoRampUp; + CEdit m_CInfoRampDown; + + CSliderCtrl m_SliderStereoSep; + + // check box soft pan + + CSliderCtrl m_SliderPreAmp; + + bool m_initialized : 1; + +public: + COptionsMixer() + : CPropertyPage(IDD_OPTIONS_MIXER) + , m_initialized(false) + {} + +protected: + void UpdateRamping(); + void UpdateStereoSep(); + + BOOL OnInitDialog() override; + void OnOK() override; + BOOL OnSetActive() override; + void DoDataExchange(CDataExchange* pDX) override; + + afx_msg void OnSettingsChanged() { SetModified(TRUE); } + afx_msg void OnAmigaChanged(); + afx_msg void OnRampingChanged(); + afx_msg void OnDefaultRampSettings(); + + afx_msg void OnHScroll(UINT n, UINT pos, CScrollBar *p); + + DECLARE_MESSAGE_MAP() + +}; + + +#ifndef NO_EQ + +class CEQSlider: public CSliderCtrl +{ +public: + CWnd *m_pParent; + UINT m_nSliderNo; + short int m_x, m_y; +public: + CEQSlider() {} + void Init(UINT nID, UINT n, CWnd *parent); + BOOL PreTranslateMessage(MSG *pMsg); +}; + +#endif // !NO_EQ + + +class COptionsPlayer: public CPropertyPage +{ +protected: + CComboBox m_CbnReverbPreset; + CSliderCtrl m_SbXBassDepth, m_SbXBassRange; + CSliderCtrl m_SbSurroundDepth, m_SbSurroundDelay; + CSliderCtrl m_SbReverbDepth; + CSliderCtrl m_SbBitCrushBits; + +#ifndef NO_EQ + CEQSlider m_Sliders[MAX_EQ_BANDS]; + EQPreset &m_EQPreset; + UINT m_nSliderMenu; +#endif // !NO_EQ + +public: + COptionsPlayer() : CPropertyPage(IDD_OPTIONS_PLAYER) +#ifndef NO_EQ + , m_EQPreset(TrackerSettings::Instance().m_EqSettings) +#endif + { } + +protected: + BOOL OnInitDialog() override; + void OnOK() override; + BOOL OnSetActive() override; + void DoDataExchange(CDataExchange* pDX) override; + afx_msg void OnHScroll(UINT, UINT, CScrollBar *); + afx_msg void OnSettingsChanged() { SetModified(TRUE); } + +#ifndef NO_EQ + afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); + afx_msg void OnEqUser1() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[0]); }; + afx_msg void OnEqUser2() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[1]); }; + afx_msg void OnEqUser3() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[2]); }; + afx_msg void OnEqUser4() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[3]); }; + afx_msg void OnSavePreset(); + afx_msg void OnSliderMenu(UINT); + afx_msg void OnSliderFreq(UINT); + + void UpdateDialog(); + void UpdateEQ(bool bReset); + void LoadEQPreset(const EQPreset &preset); +#endif // !NO_EQ + + DECLARE_MESSAGE_MAP() +}; + + +class CMidiSetupDlg: public CPropertyPage +{ +public: + DWORD m_dwMidiSetup; + UINT m_nMidiDevice; + +protected: + CSpinButtonCtrl m_SpinSpd, m_SpinPat, m_SpinAmp; + CComboBox m_InputDevice, m_ATBehaviour, m_Quantize; + +public: + CMidiSetupDlg(DWORD d, UINT n) + : CPropertyPage(IDD_OPTIONS_MIDI) + , m_dwMidiSetup(d) + , m_nMidiDevice(n) + { } + +protected: + BOOL OnInitDialog() override; + void OnOK() override; + BOOL OnSetActive() override; + void DoDataExchange(CDataExchange* pDX) override; + void RefreshDeviceList(UINT currentDevice); + afx_msg void OnRenameDevice(); + afx_msg void OnSettingsChanged() { SetModified(TRUE); } + DECLARE_MESSAGE_MAP() +}; + + + +class COptionsWine: public CPropertyPage +{ + +protected: + CComboBox m_CbnPulseAudio; + CComboBox m_CbnPortAudio; + CComboBox m_CbnRtAudio; + +public: + COptionsWine(); + +protected: + BOOL OnInitDialog() override; + void OnOK() override; + BOOL OnSetActive() override; + void DoDataExchange(CDataExchange* pDX) override; + + afx_msg void OnSettingsChanged(); + + DECLARE_MESSAGE_MAP() +}; + + + +OPENMPT_NAMESPACE_END |