aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_nsv/config.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Input/in_nsv/config.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Plugins/Input/in_nsv/config.cpp')
-rw-r--r--Src/Plugins/Input/in_nsv/config.cpp197
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