/* * xSF - NCSF configuration * By Naram Qashat (CyberBotX) [cyberbotx@cyberbotx.com] * Last modification on 2014-10-05 * * Partially based on the vio*sf framework */ #pragma once #include #include #include "XSFConfig.h" #include "XSFPlayer_NCSF.h" #include "windowsh_wrapper.h" class XSFConfig_NCSF; #ifdef _DEBUG struct SoundViewData { XSFConfig_NCSF *config; XSFPlayer_NCSF *player; uint8_t channelLastStates[16]; HWND hDlg; bool volModeAlternative; SoundViewData() : config(nullptr), player(nullptr), hDlg(nullptr), volModeAlternative(false) { std::fill_n(&this->channelLastStates[0], sizeof(this->channelLastStates), CS_START); } }; #endif class XSFConfig_NCSF : public XSFConfig { protected: static unsigned initInterpolation; static std::string initMutes; friend class XSFConfig; friend struct SoundViewData; unsigned interpolation; std::bitset<16> mutes; XSFConfig_NCSF(); void LoadSpecificConfig(); void SaveSpecificConfig(); void GenerateSpecificDialogs(); INT_PTR CALLBACK ConfigDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void ResetSpecificConfigDefaults(HWND hwndDlg); void SaveSpecificConfigDialog(HWND hwndDlg); void CopySpecificConfigToMemory(XSFPlayer *xSFPlayer, bool preLoad); #ifdef _DEBUG std::unique_ptr soundViewData; static INT_PTR CALLBACK SoundViewDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); #endif public: void About(HWND parent); #ifdef _DEBUG void CallSoundView(XSFPlayer *xSFPlayer, HINSTANCE hInstance, HWND hwndParent); void RefreshSoundView(); void CloseSoundView(); #endif };