From: <sag...@us...> - 2011-09-02 15:00:29
|
Revision: 1007 http://modplug.svn.sourceforge.net/modplug/?rev=1007&view=rev Author: saga-games Date: 2011-09-02 15:00:22 +0000 (Fri, 02 Sep 2011) Log Message: ----------- [Ref] EQ refactoring Modified Paths: -------------- trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/Mpdlgs.cpp trunk/OpenMPT/mptrack/Mpdlgs.h trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/TrackerSettings.h trunk/OpenMPT/mptrack/misc_util.h trunk/OpenMPT/mptrack/resource.h Modified: trunk/OpenMPT/mptrack/Mainfrm.h =================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h 2011-09-02 14:55:32 UTC (rev 1006) +++ trunk/OpenMPT/mptrack/Mainfrm.h 2011-09-02 15:00:22 UTC (rev 1007) @@ -366,12 +366,12 @@ ///////////////////////////////////////////////////////////////////////// // EQ Presets -typedef struct _EQPRESET +struct EQPRESET { CHAR szName[12]; UINT Gains[MAX_EQ_BANDS]; UINT Freqs[MAX_EQ_BANDS]; -} EQPRESET, *PEQPRESET; +}; ///////////////////////////////////////////////////////////////////////// Modified: trunk/OpenMPT/mptrack/Mpdlgs.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.cpp 2011-09-02 14:55:32 UTC (rev 1006) +++ trunk/OpenMPT/mptrack/Mpdlgs.cpp 2011-09-02 15:00:22 UTC (rev 1007) @@ -397,7 +397,7 @@ // Polyphony { int nmmx = m_CbnPolyphony.GetCurSel(); - if ((nmmx >= 0) && (nmmx < sizeof(nCPUMix)/sizeof(nCPUMix[0]))) CSoundFile::m_nMaxMixChannels = nCPUMix[nmmx]; + if ((nmmx >= 0) && (nmmx < CountOf(nCPUMix))) CSoundFile::m_nMaxMixChannels = nCPUMix[nmmx]; } // Sound Device { @@ -691,30 +691,20 @@ // EQ Globals // -enum { - EQPRESET_FLAT=0, - EQPRESET_JAZZ, - EQPRESET_POP, - EQPRESET_ROCK, - EQPRESET_CONCERT, - EQPRESET_CLEAR, -}; - - #define EQ_MAX_FREQS 5 -const UINT gEqBandFreqs[EQ_MAX_FREQS*MAX_EQ_BANDS] = +const UINT gEqBandFreqs[MAX_EQ_BANDS][EQ_MAX_FREQS] = { - 100, 125, 150, 200, 250, - 300, 350, 400, 450, 500, - 600, 700, 800, 900, 1000, - 1250, 1500, 1750, 2000, 2500, - 3000, 3500, 4000, 4500, 5000, - 6000, 7000, 8000, 9000, 10000 + { 100, 125, 150, 200, 250 }, + { 300, 350, 400, 450, 500 }, + { 600, 700, 800, 900, 1000 }, + { 1250, 1500, 1750, 2000, 2500 }, + { 3000, 3500, 4000, 4500, 5000 }, + { 6000, 7000, 8000, 9000, 10000 }, }; -const EQPRESET gEQPresets[6] = +const EQPRESET CEQSetupDlg::gEQPresets[] = { { "Flat", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // Flat { "Jazz", {16,16,24,20,20,14}, { 125, 300, 600, 1250, 4000, 8000 } }, // Jazz @@ -725,19 +715,15 @@ }; -EQPRESET CEQSetupDlg::gUserPresets[4] = +EQPRESET CEQSetupDlg::gUserPresets[] = { - { "User1", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // User1 - { "User2", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // User2 - { "User3", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // User3 + { "User1", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // User1 + { "User2", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // User2 + { "User3", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // User3 { "User4", {16,16,16,16,16,16}, { 150, 500, 1000, 2500, 5000, 10000 } } // User4 }; -#define ID_EQSLIDER_BASE 41000 -#define ID_EQMENU_BASE 41100 - - //////////////////////////////////////////////////////////////////////////////// // // CEQSavePresetDlg @@ -748,10 +734,10 @@ //==================================== { protected: - PEQPRESET m_pEq; + EQPRESET *m_pEq; public: - CEQSavePresetDlg(PEQPRESET pEq, CWnd *parent=NULL):CDialog(IDD_SAVEPRESET, parent) { m_pEq = pEq; } + CEQSavePresetDlg(EQPRESET *pEq, CWnd *parent=NULL):CDialog(IDD_SAVEPRESET, parent) { m_pEq = pEq; } BOOL OnInitDialog(); VOID OnOK(); }; @@ -798,28 +784,7 @@ // CEQSetupDlg // -VOID CEQSetupDlg::LoadEQ(HKEY key, LPCSTR pszName, PEQPRESET pEqSettings) -//----------------------------------------------------------------------- -{ - DWORD dwType = REG_BINARY; - DWORD dwSize = sizeof(EQPRESET); - RegQueryValueEx(key, pszName, NULL, &dwType, (LPBYTE)pEqSettings, &dwSize); - for (UINT i=0; i<MAX_EQ_BANDS; i++) - { - if (pEqSettings->Gains[i] > 32) pEqSettings->Gains[i] = 16; - if ((pEqSettings->Freqs[i] < 100) || (pEqSettings->Freqs[i] > 10000)) pEqSettings->Freqs[i] = gEQPresets[0].Freqs[i]; - } - pEqSettings->szName[sizeof(pEqSettings->szName)-1] = 0; -} - -VOID CEQSetupDlg::SaveEQ(HKEY key, LPCSTR pszName, PEQPRESET pEqSettings) -//----------------------------------------------------------------------- -{ - RegSetValueEx(key, pszName, NULL, REG_BINARY, (LPBYTE)pEqSettings, sizeof(EQPRESET)); -} - - VOID CEQSlider::Init(UINT nID, UINT n, CWnd *parent) //-------------------------------------------------- { @@ -944,96 +909,15 @@ } -void CEQSetupDlg::OnEqFlat() -//-------------------------- +void CEQSetupDlg::LoadEQPreset(const EQPRESET &preset) +//---------------------------------------------------- { - *m_pEqPreset = gEQPresets[EQPRESET_FLAT]; + *m_pEqPreset = preset; UpdateEQ(TRUE); UpdateDialog(); } -void CEQSetupDlg::OnEqJazz() -//-------------------------- -{ - *m_pEqPreset = gEQPresets[EQPRESET_JAZZ]; - UpdateEQ(TRUE); - UpdateDialog(); -} - - -void CEQSetupDlg::OnEqPop() -//------------------------- -{ - *m_pEqPreset = gEQPresets[EQPRESET_POP]; - UpdateEQ(TRUE); - UpdateDialog(); -} - - -void CEQSetupDlg::OnEqRock() -//-------------------------- -{ - *m_pEqPreset = gEQPresets[EQPRESET_ROCK]; - UpdateEQ(TRUE); - UpdateDialog(); -} - - -void CEQSetupDlg::OnEqConcert() -//----------------------------- -{ - *m_pEqPreset = gEQPresets[EQPRESET_CONCERT]; - UpdateEQ(TRUE); - UpdateDialog(); -} - - -void CEQSetupDlg::OnEqClear() -//--------------------------- -{ - *m_pEqPreset = gEQPresets[EQPRESET_CLEAR]; - UpdateEQ(TRUE); - UpdateDialog(); -} - - -void CEQSetupDlg::OnEqUser1() -//--------------------------- -{ - *m_pEqPreset = gUserPresets[0]; - UpdateEQ(TRUE); - UpdateDialog(); -} - - -void CEQSetupDlg::OnEqUser2() -//--------------------------- -{ - *m_pEqPreset = gUserPresets[1]; - UpdateEQ(TRUE); - UpdateDialog(); -} - - -void CEQSetupDlg::OnEqUser3() -//--------------------------- -{ - *m_pEqPreset = gUserPresets[2]; - UpdateEQ(TRUE); - UpdateDialog(); -} - - -void CEQSetupDlg::OnEqUser4() -//--------------------------- -{ - *m_pEqPreset = gUserPresets[3]; - UpdateEQ(TRUE); - UpdateDialog(); -} - - void CEQSetupDlg::OnSavePreset() //------------------------------ { @@ -1055,8 +939,8 @@ HMENU hMenu = ::CreatePopupMenu(); m_nSliderMenu = n; if (!hMenu) return; - const UINT *pFreqs = &gEqBandFreqs[m_nSliderMenu*EQ_MAX_FREQS]; - for (UINT i=0; i<EQ_MAX_FREQS; i++) + const UINT *pFreqs = gEqBandFreqs[m_nSliderMenu]; + for (UINT i = 0; i < EQ_MAX_FREQS; i++) { DWORD d = MF_STRING; if (m_pEqPreset->Freqs[m_nSliderMenu] == pFreqs[i]) d |= MF_CHECKED; @@ -1077,7 +961,7 @@ UINT n = nID - ID_EQMENU_BASE; if ((m_nSliderMenu < MAX_EQ_BANDS) && (n < EQ_MAX_FREQS)) { - UINT f = gEqBandFreqs[m_nSliderMenu*EQ_MAX_FREQS+n]; + UINT f = gEqBandFreqs[m_nSliderMenu][n]; if (f != m_pEqPreset->Freqs[m_nSliderMenu]) { m_pEqPreset->Freqs[m_nSliderMenu] = f; Modified: trunk/OpenMPT/mptrack/Mpdlgs.h =================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.h 2011-09-02 14:55:32 UTC (rev 1006) +++ trunk/OpenMPT/mptrack/Mpdlgs.h 2011-09-02 15:00:22 UTC (rev 1007) @@ -95,38 +95,52 @@ { protected: CEQSlider m_Sliders[MAX_EQ_BANDS]; - PEQPRESET m_pEqPreset; + EQPRESET *m_pEqPreset; UINT m_nSliderMenu; public: - CEQSetupDlg(PEQPRESET pEq):CPropertyPage(IDD_SETUP_EQ) { m_pEqPreset = pEq; } + CEQSetupDlg(EQPRESET *pEq):CPropertyPage(IDD_SETUP_EQ) { m_pEqPreset = pEq; } void UpdateDialog(); void UpdateEQ(BOOL bReset); public: - static EQPRESET gUserPresets[4]; - static VOID LoadEQ(HKEY key, LPCSTR pszName, PEQPRESET pEqSettings); - static VOID SaveEQ(HKEY key, LPCSTR pszName, PEQPRESET pEqSettings); + static const EQPRESET gEQPresets[]; + static EQPRESET gUserPresets[]; protected: virtual BOOL OnInitDialog(); virtual BOOL OnSetActive(); afx_msg void OnSettingsChanged() { SetModified(TRUE); } afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); - afx_msg void OnEqFlat(); - afx_msg void OnEqJazz(); - afx_msg void OnEqPop(); - afx_msg void OnEqRock(); - afx_msg void OnEqConcert(); - afx_msg void OnEqClear(); - afx_msg void OnEqUser1(); - afx_msg void OnEqUser2(); - afx_msg void OnEqUser3(); - afx_msg void OnEqUser4(); + + enum + { + EQPRESET_FLAT = 0, + EQPRESET_JAZZ, + EQPRESET_POP, + EQPRESET_ROCK, + EQPRESET_CONCERT, + EQPRESET_CLEAR, + }; + + afx_msg void OnEqFlat() { LoadEQPreset(gEQPresets[EQPRESET_FLAT]); }; + afx_msg void OnEqJazz() { LoadEQPreset(gEQPresets[EQPRESET_JAZZ]); }; + afx_msg void OnEqPop() { LoadEQPreset(gEQPresets[EQPRESET_POP]); }; + afx_msg void OnEqRock() { LoadEQPreset(gEQPresets[EQPRESET_ROCK]); }; + afx_msg void OnEqConcert() { LoadEQPreset(gEQPresets[EQPRESET_CONCERT]); }; + afx_msg void OnEqClear() { LoadEQPreset(gEQPresets[EQPRESET_CLEAR]); }; + + afx_msg void OnEqUser1() { LoadEQPreset(gUserPresets[0]); }; + afx_msg void OnEqUser2() { LoadEQPreset(gUserPresets[1]); }; + afx_msg void OnEqUser3() { LoadEQPreset(gUserPresets[2]); }; + afx_msg void OnEqUser4() { LoadEQPreset(gUserPresets[3]); }; + afx_msg void OnSavePreset(); afx_msg void OnSliderMenu(UINT); afx_msg void OnSliderFreq(UINT); DECLARE_MESSAGE_MAP() + + void LoadEQPreset(const EQPRESET &preset); }; Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp 2011-09-02 14:55:32 UTC (rev 1006) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp 2011-09-02 15:00:22 UTC (rev 1007) @@ -21,6 +21,7 @@ #include "AutoSaver.h" #include "../soundlib/StringFixer.h" #include "TrackerSettings.h" +#include "misc_util.h" const TCHAR *TrackerSettings::m_szDirectoryToSettingsName[NUM_DIRS] = { _T("Songs_Directory"), _T("Samples_Directory"), _T("Instruments_Directory"), _T("Plugins_Directory"), _T("Plugin_Presets_Directory"), _T("Export_Directory"), _T(""), _T("") }; @@ -71,17 +72,7 @@ m_nBufferLength = 50; // Default EQ settings - strcpy(m_EqSettings.szName, ""); - for(size_t i = 0; i < CountOf(m_EqSettings.Gains); i++) - { - m_EqSettings.Gains[i] = 16; - } - m_EqSettings.Freqs[0] = 125; - m_EqSettings.Freqs[1] = 300; - m_EqSettings.Freqs[2] = 600; - m_EqSettings.Freqs[3] = 1250; - m_EqSettings.Freqs[4] = 4000; - m_EqSettings.Freqs[5] = 8000; + MemCopy(m_EqSettings, CEQSetupDlg::gEQPresets[0]); // MIDI Setup m_dwMidiSetup = MIDISETUP_RECORDVELOCITY|MIDISETUP_RECORDNOTEOFF; @@ -100,7 +91,6 @@ m_nSampleUndoMaxBuffer = 0; // Real sample buffer undo size will be set later. - // TODO duplicate code (see Moptions.cpp) GetDefaultColourScheme(rgbCustomColors); // Directory Arrays (Default + Last) @@ -457,6 +447,21 @@ #define SETTINGS_REGEXT_WINDOW "\\Window" #define SETTINGS_REGEXT_SETTINGS "\\Settings" +void TrackerSettings::LoadRegistryEQ(HKEY key, LPCSTR pszName, EQPRESET *pEqSettings) +//----------------------------------------------------------------------------------- +{ + DWORD dwType = REG_BINARY; + DWORD dwSize = sizeof(EQPRESET); + RegQueryValueEx(key, pszName, NULL, &dwType, (LPBYTE)pEqSettings, &dwSize); + for (UINT i=0; i<MAX_EQ_BANDS; i++) + { + if (pEqSettings->Gains[i] > 32) pEqSettings->Gains[i] = 16; + if ((pEqSettings->Freqs[i] < 100) || (pEqSettings->Freqs[i] > 10000)) pEqSettings->Freqs[i] = CEQSetupDlg::gEQPresets[0].Freqs[i]; + } + pEqSettings->szName[sizeof(pEqSettings->szName)-1] = 0; +} + + bool TrackerSettings::LoadRegistrySettings() //------------------------------------------ { @@ -556,11 +561,11 @@ RegQueryValueEx(key, "MidiImportSpeed", NULL, &dwREG_DWORD, (LPBYTE)&midiImportSpeed, &dwDWORDSize); RegQueryValueEx(key, "MidiImportPatLen", NULL, &dwREG_DWORD, (LPBYTE)&midiImportPatternLen, &dwDWORDSize); // EQ - CEQSetupDlg::LoadEQ(key, "EQ_Settings", &m_EqSettings); - CEQSetupDlg::LoadEQ(key, "EQ_User1", &CEQSetupDlg::gUserPresets[0]); - CEQSetupDlg::LoadEQ(key, "EQ_User2", &CEQSetupDlg::gUserPresets[1]); - CEQSetupDlg::LoadEQ(key, "EQ_User3", &CEQSetupDlg::gUserPresets[2]); - CEQSetupDlg::LoadEQ(key, "EQ_User4", &CEQSetupDlg::gUserPresets[3]); + LoadRegistryEQ(key, "EQ_Settings", &m_EqSettings); + LoadRegistryEQ(key, "EQ_User1", &CEQSetupDlg::gUserPresets[0]); + LoadRegistryEQ(key, "EQ_User2", &CEQSetupDlg::gUserPresets[1]); + LoadRegistryEQ(key, "EQ_User3", &CEQSetupDlg::gUserPresets[2]); + LoadRegistryEQ(key, "EQ_User4", &CEQSetupDlg::gUserPresets[3]); //rewbs.resamplerConf dwDWORDSize = sizeof(gbWFIRType); Modified: trunk/OpenMPT/mptrack/TrackerSettings.h =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.h 2011-09-02 14:55:32 UTC (rev 1006) +++ trunk/OpenMPT/mptrack/TrackerSettings.h 2011-09-02 15:00:22 UTC (rev 1007) @@ -109,6 +109,8 @@ protected: void LoadINISettings(const CString &iniFile); + + void LoadRegistryEQ(HKEY key, LPCSTR pszName, EQPRESET *pEqSettings); bool LoadRegistrySettings(); void SetDirectory(const LPCTSTR szFilenameFrom, Directory dir, TCHAR (&pDirs)[NUM_DIRS][_MAX_PATH], bool bStripFilename); Modified: trunk/OpenMPT/mptrack/misc_util.h =================================================================== --- trunk/OpenMPT/mptrack/misc_util.h 2011-09-02 14:55:32 UTC (rev 1006) +++ trunk/OpenMPT/mptrack/misc_util.h 2011-09-02 15:00:22 UTC (rev 1007) @@ -65,7 +65,18 @@ memcpy(&destination, &source, sizeof(T)); } +template <class T> +inline void MemCopy(T &destination, const T &source) +//-------------------------------------------------- +{ +#if _HAS_TR1 + static_assert(std::tr1::is_pointer<T>::value == false, "Won't copy pointers."); + static_assert(std::tr1::is_pod<T>::value == true, "Won't copy non-pods."); +#endif + memcpy(&destination, &source, sizeof(T)); +} + // Limits 'val' to given range. If 'val' is less than 'lowerLimit', 'val' is set to value 'lowerLimit'. // Similarly if 'val' is greater than 'upperLimit', 'val' is set to value 'upperLimit'. // If 'lowerLimit' > 'upperLimit', 'val' won't be modified. Modified: trunk/OpenMPT/mptrack/resource.h =================================================================== --- trunk/OpenMPT/mptrack/resource.h 2011-09-02 14:55:32 UTC (rev 1006) +++ trunk/OpenMPT/mptrack/resource.h 2011-09-02 15:00:22 UTC (rev 1007) @@ -1081,6 +1081,10 @@ #define ID_PRESET_LIST 32919 #define ID_INFO 32920 #define ID_VIEWPLUGNAMES 32921 +#define ID_EQSLIDER_BASE 32922 +// From here: Command range [ID_EQSLIDER_BASE, ID_EQSLIDER_BASE + MAX_EQ_BANDS] +#define ID_EQMENU_BASE 32950 +// From here: Command range [ID_EQMENU_BASE, ID_EQMENU_BASE + EQ_MAX_FREQS] #define ID_EDIT_SPLITRECSELECT 33900 #define ID_REARRANGE_SAMPLES 33901 #define ID_CHANNEL_MANAGER 33905 @@ -1095,7 +1099,9 @@ #define ID_MODTREE_SAVEITEM 33917 #define ID_PLUGIN_SETUP 33918 #define ID_PRESET_SET 33920 +// From here: Command range [ID_PRESET_SET, ID_PRESET_SET + MAX_PLUGPRESETS] #define ID_PLUGSELECT 35000 +// From here: Command range [ID_PLUGSELECT, ID_PLUGSELECT + MAX_MIXPLUGINS] #define ID_VSTMACRO_INFO 36002 #define ID_VSTINPUT_INFO 36003 #define ID_APPROX_BPM 36007 @@ -1122,9 +1128,11 @@ #define ID_VSTPRESETBACKWARDJUMP 36031 #define ID_VSTPRESETFORWARDJUMP 36032 #define ID_SELECTINST 36100 +// From here: Command range [ID_SELECTINST, ID_SELECTINST + MAX_INSTRUMENTS] #define ID_PLUG_RECORDAUTOMATION 37003 #define ID_LEARN_MACRO_FROM_PLUGGUI 37004 #define ID_CHANGE_INSTRUMENT 37020 +// From here: Command range [ID_CHANGE_INSTRUMENT, ID_CHANGE_INSTRUMENT + MAX_INSTRUMENTS] #define ID_CLEAR_SELECTION 38000 #define ID_PLUG_PASSKEYS 38001 #define ID_VIEW_SONGPROPERTIES 38002 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |