diff options
Diffstat (limited to 'Src/Plugins/Input/in_nsv/config.cpp')
-rw-r--r-- | Src/Plugins/Input/in_nsv/config.cpp | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_nsv/config.cpp b/Src/Plugins/Input/in_nsv/config.cpp new file mode 100644 index 00000000..6c4ada01 --- /dev/null +++ b/Src/Plugins/Input/in_nsv/config.cpp @@ -0,0 +1,197 @@ +#include <windows.h> +#include "api.h" +#include "resource.h" +#include "../Winamp/wa_ipc.h" +#include "../Winamp/in2.h" + +extern In_Module mod; // the output module (filled in near the bottom of this file) + +static char app_name[] = "Nullsoft NSV Decoder2"; + +//char config_http_proxynonport80=1; + +int config_padtag=1024; +int config_bufms=10000; +int config_prebufms=2000; +int config_underunbuf=3000; +int config_bufms_f=1000; +int config_prebufms_f=1000; +int config_underunbuf_f=1000; +int config_vidoffs=0; +int config_precseek=3; +int config_subtitles=1; + +void config_write(); + +char INI_FILE[512] = {0}; + +static int _r_i(char *name, int def) +{ + if (!_strnicmp(name,"config_",7)) name += 7; + return GetPrivateProfileIntA(app_name,name,def,INI_FILE); +} +#define RI(x) (( x ) = _r_i(#x,( x ))) +static void _w_i(char *name, int d) +{ + char str[120] = {0}; + wsprintfA(str,"%d",d); + if (!_strnicmp(name,"config_",7)) name += 7; + WritePrivateProfileStringA(app_name,name,str,INI_FILE); +} +#define WI(x) _w_i(#x,( x )) + +static void _r_s(char *name,char *data, int mlen) +{ + char buf[2048] = {0}; + strncpy(buf, data, 2048); + if (!_strnicmp(name,"config_",7)) name += 7; + GetPrivateProfileStringA(app_name,name,buf,data,mlen,INI_FILE); +} +#define RS(x) (_r_s(#x,x,sizeof(x))) + +static void _w_s(char *name, char *data) +{ + if (!_strnicmp(name,"config_",7)) name += 7; + WritePrivateProfileStringA(app_name,name,data,INI_FILE); +} +#define WS(x) (_w_s(#x,x)) + + + +static void config_init() +{ +char *p; + if (mod.hMainWindow && + (p = (char *)SendMessageA(mod.hMainWindow, WM_WA_IPC, 0, IPC_GETINIFILE)) + && p!= (char *)1) + { + strncpy(INI_FILE, p, MAX_PATH); + } + else + { + GetModuleFileNameA(NULL,INI_FILE,sizeof(INI_FILE)); + p=INI_FILE+strlen(INI_FILE); + while (p >= INI_FILE && *p != '.') p--; + strcpy(++p,"ini"); + } +} + +static INT_PTR CALLBACK configProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam) +{ + switch (uMsg) + { + case WM_INITDIALOG: + // show config + SetDlgItemInt(hwndDlg,IDC_BUF1,config_bufms,FALSE); + SetDlgItemInt(hwndDlg,IDC_BUF2,config_prebufms,FALSE); + SetDlgItemInt(hwndDlg,IDC_BUF3,config_underunbuf,FALSE); + SetDlgItemInt(hwndDlg,IDC_BUF4,config_bufms_f,FALSE); + SetDlgItemInt(hwndDlg,IDC_BUF5,config_prebufms_f,FALSE); + SetDlgItemInt(hwndDlg,IDC_BUF6,config_underunbuf_f,FALSE); + SetDlgItemInt(hwndDlg,IDC_OFFS,config_vidoffs,TRUE); + SetDlgItemInt(hwndDlg,IDC_TAGPAD,config_padtag,FALSE); + if (config_precseek&1)CheckDlgButton(hwndDlg,IDC_CHECK1,BST_CHECKED); + if (config_precseek&2)CheckDlgButton(hwndDlg,IDC_CHECK2,BST_CHECKED); + if (config_subtitles)CheckDlgButton(hwndDlg,IDC_CHECK3,BST_CHECKED); +// if (!config_http_proxynonport80) CheckDlgButton(hwndDlg,IDC_CHECK5,BST_CHECKED); + return 0; + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDC_CHECK1: + case IDC_CHECK2: + config_precseek=(IsDlgButtonChecked(hwndDlg,IDC_CHECK1)?1:0)| + (IsDlgButtonChecked(hwndDlg,IDC_CHECK2)?2:0); + + break; + case IDC_CHECK3: + config_subtitles=(IsDlgButtonChecked(hwndDlg,IDC_CHECK3)?1:0); + + break; + case IDC_OFFS: + if (HIWORD(wParam) == EN_CHANGE) + { + BOOL t; + config_vidoffs=GetDlgItemInt(hwndDlg,IDC_OFFS,&t,TRUE); + } + break; + case IDCANCEL: EndDialog(hwndDlg,0); break; + case IDOK: + // save config +// config_http_proxynonport80=!IsDlgButtonChecked(hwndDlg,IDC_CHECK5); + { + BOOL t; + config_bufms=GetDlgItemInt(hwndDlg,IDC_BUF1,&t,FALSE); + if (config_bufms < 100) config_bufms=100; + if (config_bufms > 100000) config_bufms=100000; + + config_prebufms=GetDlgItemInt(hwndDlg,IDC_BUF2,&t,FALSE); + if (config_prebufms < 100) config_prebufms=100; + if (config_prebufms > config_bufms) config_prebufms=config_bufms; + + config_underunbuf=GetDlgItemInt(hwndDlg,IDC_BUF3,&t,FALSE); + if (config_underunbuf < 100) config_underunbuf=100; + if (config_underunbuf > config_bufms) config_underunbuf=config_bufms; + + config_bufms_f=GetDlgItemInt(hwndDlg,IDC_BUF4,&t,FALSE); + if (config_bufms_f < 100) config_bufms_f=100; + if (config_bufms_f > 100000) config_bufms_f=100000; + + config_prebufms_f=GetDlgItemInt(hwndDlg,IDC_BUF5,&t,FALSE); + if (config_prebufms_f < 100) config_prebufms_f=100; + if (config_prebufms_f > config_bufms_f) config_prebufms_f=config_bufms_f; + + config_underunbuf_f=GetDlgItemInt(hwndDlg,IDC_BUF6,&t,FALSE); + if (config_underunbuf_f < 100) config_underunbuf_f=100; + if (config_underunbuf_f > config_bufms_f) config_underunbuf_f=config_bufms_f; + + config_vidoffs=GetDlgItemInt(hwndDlg,IDC_OFFS,&t,TRUE); + + config_padtag=GetDlgItemInt(hwndDlg,IDC_TAGPAD,&t,FALSE); + } + config_write(); + EndDialog(hwndDlg,1); + break; + } + break; + } + return 0; +} + +void config(HWND hwndParent) +{ + WASABI_API_DIALOGBOXW(IDD_DIALOG1,hwndParent,configProc); +} + +void config_read() +{ + config_init(); + RI(config_bufms); + RI(config_prebufms); + RI(config_underunbuf); + RI(config_bufms_f); + RI(config_prebufms_f); + RI(config_underunbuf_f); + RI(config_vidoffs); + RI(config_padtag); +// RI(allow_uvox); +// RI(config_http_proxynonport80); + RI(config_precseek); + RI(config_subtitles); +} + +void config_write() +{ + WI(config_bufms); + WI(config_prebufms); + WI(config_underunbuf); + WI(config_bufms_f); + WI(config_prebufms_f); + WI(config_underunbuf_f); + WI(config_vidoffs); + WI(config_padtag); + WI(config_precseek); + WI(config_subtitles); +// WI(allow_uvox); +// WI(config_http_proxynonport80); +}
\ No newline at end of file |