summaryrefslogtreecommitdiff
path: root/plugins/dumb/dumb-kode54/winamp/gui.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/dumb/dumb-kode54/winamp/gui.c')
-rw-r--r--plugins/dumb/dumb-kode54/winamp/gui.c662
1 files changed, 331 insertions, 331 deletions
diff --git a/plugins/dumb/dumb-kode54/winamp/gui.c b/plugins/dumb/dumb-kode54/winamp/gui.c
index 45ac978b..af38a1fc 100644
--- a/plugins/dumb/dumb-kode54/winamp/gui.c
+++ b/plugins/dumb/dumb-kode54/winamp/gui.c
@@ -1,331 +1,331 @@
-
-#include <stdio.h>
-#include <windows.h>
-//#include <mmreg.h>
-//#include <msacm.h>
-#include <math.h>
-#include <commctrl.h>
-
-#include "in_duh.h"
-#include "resource.h"
-
-#include "gui.h"
-
-
-/* Registry settings */
-#define REGISTRY_KEY "Software\\Winamp\\DUH Plug-in"
-static HKEY registry = INVALID_HANDLE_VALUE;
-
-/* Some default values for config */
-int config_bits_per_sample = 16;
-int config_frequency = 44100;
-int config_stereo = CHANNEL_STEREO;
-int config_resampling = RESAMPLING_CUBIC;
-int config_buffer_size = 8192;
-int config_thread_priority = PRIORITY_HIGH;
-
-
-/*************************
- * Registry manipulation */
-
-static int read_registry(char const *name, unsigned long type, void *ptr, unsigned long size)
-{
- unsigned long reg_type;
-
- if (registry == INVALID_HANDLE_VALUE ||
- RegQueryValueEx(registry, name, 0, &reg_type, ptr, &size) != ERROR_SUCCESS
- || reg_type != type)
-
- return -1;
-
- return 0;
-}
-
-
-static int write_registry(char const *name, unsigned long type, void *ptr, unsigned long size)
-{
- if (registry == INVALID_HANDLE_VALUE
- || RegSetValueEx(registry, name, 0, type, ptr, size) != ERROR_SUCCESS)
-
- return -1;
-
- return 0;
-}
-
-
-# define LOAD_REG_INT(name, var, defaultv) (read_registry(name, REG_DWORD, \
- &(var), sizeof(var)) == -1 ? ((var) = (defaultv)) : (var))
-
-# define LOAD_REG_STRING(name, var, defaultv) (read_registry(name, REG_SZ, \
- (var), sizeof(var)) == -1 ? strcpy(var, (defaultv)) : (var))
-
-# define SAVE_REG_INT(name, var) (write_registry(name, REG_DWORD, &(var), sizeof(var)))
-# define SAVE_REG_STRING(name, var) (write_registry(name, REG_SZ, (var), sizeof(var)))
-
-
-/*********************
- * Range check */
-
-#define CHECK_RANGE(x, a, b) x = ((x < (a)) ? (a) : ((x > (b)) ? (b) : x))
-
-
-/*********************
- * Config Dialog Box */
-
-
-static INT_PTR CALLBACK config_dialog(HWND dialog, UINT message,
- WPARAM wparam, LPARAM lparam)
-{
- int which;
- int temp;
- static int old_slider1 = 0;
- char str[64];
-
- (void)lparam;
-
- switch (message) {
- case WM_INITDIALOG:
-
- /* Ok, now we need to set up the dialog's controls
- * to match the current config
- */
-
- /* Channels */
- CheckDlgButton(dialog, IDC_STEREO, config_stereo == CHANNEL_STEREO ? BST_CHECKED : BST_UNCHECKED);
-
- /* Bits per sample */
- switch (config_bits_per_sample) {
- case 8: which = IDC_8BPS; break;
- case 16: which = IDC_16BPS; break;
- default:
- which = 0;
- }
- if (which)
- CheckRadioButton(dialog, IDC_8BPS, IDC_16BPS, which);
-
- /* Resampling method */
- switch (config_resampling) {
- case RESAMPLING_ALIASING: which = IDC_ALIASING; break;
- case RESAMPLING_LINEAR: which = IDC_LINEAR; break;
- case RESAMPLING_LINEAR2: which = IDC_LINEAR_LOW_PASS; break;
- case RESAMPLING_QUADRATIC: which = IDC_QUADRATIC; break;
- case RESAMPLING_CUBIC: which = IDC_CUBIC; break;
- default:
- which = 0;
- }
- if (which)
- CheckRadioButton(dialog, IDC_ALIASING, IDC_CUBIC, which);
-
- /* Frequency */
- switch (config_frequency) {
- case 11025: which = IDC_11KHZ; break;
- case 22050: which = IDC_22KHZ; break;
- case 44100: which = IDC_44KHZ; break;
- case 48000: which = IDC_48KHZ; break;
- default:
- which = 0;
- }
- if (which)
- CheckRadioButton(dialog, IDC_11KHZ, IDC_48KHZ, which);
-
- /* Buffer size - 1 KB -> 32 KB slider */
- old_slider1 = (int)(log(config_buffer_size) / log(2)) - 10;
- SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_SETRANGE, FALSE, MAKELONG(0, 5));
- SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_SETPOS, TRUE, old_slider1);
- sprintf(str, "%i KS", config_buffer_size / 1024);
- SetDlgItemText(dialog, IDC_BUFFERSIZE2, str);
-
- /* Thread Priority */
- SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_SETRANGE, FALSE, MAKELONG(0, 2));
- SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_SETPOS, TRUE, config_thread_priority);
-
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD(wparam)) {
-
- case IDC_DEFAULT:
- /* Load default settings */
-
- /* Channels */
- CheckDlgButton(dialog, IDC_STEREO, BST_CHECKED);
-
- /* Bits per sample */
- CheckRadioButton(dialog, IDC_8BPS, IDC_16BPS, IDC_16BPS);
-
- /* Resampling method */
- CheckRadioButton(dialog, IDC_ALIASING, IDC_CUBIC, IDC_LINEAR_LOW_PASS);
-
- /* Frequency */
- CheckRadioButton(dialog, IDC_11KHZ, IDC_48KHZ, IDC_44KHZ);
-
- /* Buffer size - 1 KB -> 32 KB slider */
- SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_SETPOS, TRUE, 3);
- sprintf(str, "%i KS", 8192 / 1024);
- SetDlgItemText(dialog, IDC_BUFFERSIZE2, str);
-
- /* Thread Priority */
- SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_SETPOS, TRUE, PRIORITY_HIGH);
-
- return TRUE;
-
- case IDC_NICEST:
- /* Load nicest settings */
-
- /* Channels */
- CheckDlgButton(dialog, IDC_STEREO, BST_CHECKED);
-
- /* Bits per sample */
- CheckRadioButton(dialog, IDC_8BPS, IDC_16BPS, IDC_16BPS);
-
- /* Resampling method */
- CheckRadioButton(dialog, IDC_ALIASING, IDC_CUBIC, IDC_CUBIC);
-
- /* Frequency */
- CheckRadioButton(dialog, IDC_11KHZ, IDC_48KHZ, IDC_48KHZ);
-
- /* Buffer size - 1 KB -> 32 KB slider */
- SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_SETPOS, TRUE, 3);
- sprintf(str, "%i KS", 8192 / 1024);
- SetDlgItemText(dialog, IDC_BUFFERSIZE2, str);
-
- /* Thread Priority */
- SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_SETPOS, TRUE, PRIORITY_HIGH);
-
- return TRUE;
-
- case IDC_FASTEST:
- /* Load fastest settings */
-
- /* Channels */
- CheckDlgButton(dialog, IDC_STEREO, BST_UNCHECKED);
-
- /* Bits per sample */
- CheckRadioButton(dialog, IDC_8BPS, IDC_16BPS, IDC_8BPS);
-
- /* Resampling method */
- CheckRadioButton(dialog, IDC_ALIASING, IDC_CUBIC, IDC_ALIASING);
-
- /* Frequency */
- CheckRadioButton(dialog, IDC_11KHZ, IDC_48KHZ, IDC_11KHZ);
-
- /* Buffer size - 1 KB -> 32 KB slider */
- SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_SETPOS, TRUE, 3);
- sprintf(str, "%i KS", 8192 / 1024);
- SetDlgItemText(dialog, IDC_BUFFERSIZE2, str);
-
- /* Thread Priority */
- SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_SETPOS, TRUE, PRIORITY_HIGH);
-
- return TRUE;
-
- case IDC_OK:
- /* Read back configuration */
- config_stereo = (IsDlgButtonChecked(dialog, IDC_STEREO) == BST_CHECKED) ? CHANNEL_STEREO : CHANNEL_MONO;
- config_bits_per_sample = (IsDlgButtonChecked(dialog, IDC_8BPS) == BST_CHECKED) ? 8 : 16;
- config_resampling = (IsDlgButtonChecked(dialog, IDC_ALIASING) == BST_CHECKED) ? RESAMPLING_ALIASING
- : (IsDlgButtonChecked(dialog, IDC_LINEAR) == BST_CHECKED) ? RESAMPLING_LINEAR
- : (IsDlgButtonChecked(dialog, IDC_LINEAR_LOW_PASS) == BST_CHECKED) ? RESAMPLING_LINEAR2
- : (IsDlgButtonChecked(dialog, IDC_QUADRATIC) == BST_CHECKED) ? RESAMPLING_QUADRATIC
- : RESAMPLING_CUBIC;
- config_frequency = (IsDlgButtonChecked(dialog, IDC_11KHZ) == BST_CHECKED) ? 11025
- : (IsDlgButtonChecked(dialog, IDC_22KHZ) == BST_CHECKED) ? 22050
- : (IsDlgButtonChecked(dialog, IDC_44KHZ) == BST_CHECKED) ? 44100
- : 48000;
- config_buffer_size = 1 << (SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_GETPOS, 0, 0) + 10);
-
- config_thread_priority = SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_GETPOS, 0, 0);
-
- case IDCANCEL:
- case IDC_CANCEL:
- case IDCLOSE:
- EndDialog(dialog, wparam);
- return TRUE;
- }
- break;
- default:
- temp = 1 << (SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_GETPOS, 0, 0) + 10);
- if (temp != old_slider1) {
- old_slider1 = temp;
- sprintf(str, "%i KS", temp / 1024);
- SetDlgItemText(dialog, IDC_BUFFERSIZE2, str);
- return TRUE;
- }
- break;
- }
- return FALSE;
-}
-
-
-
-/* DUH Config dialog */
-void config(HWND hwndParent) {
-
- if (DialogBox(mod.hDllInstance, MAKEINTRESOURCE(IDD_CONFIG),
- hwndParent, config_dialog) == IDC_OK) {
-
- SAVE_REG_INT("Stereo", config_stereo);
- SAVE_REG_INT("Frequency", config_frequency);
- SAVE_REG_INT("Resampling", config_resampling);
- SAVE_REG_INT("BitsPerSample", config_bits_per_sample);
- SAVE_REG_INT("BufferSize", config_buffer_size);
- SAVE_REG_INT("ThreadPriority", config_thread_priority);
- }
-}
-
-
-void config_init(void) {
-
- /* Load config from registry */
-
- if (RegCreateKeyEx(HKEY_CURRENT_USER, REGISTRY_KEY, 0, "",
- REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WRITE, 0,
- &registry, 0) != ERROR_SUCCESS)
-
- registry = INVALID_HANDLE_VALUE;
-
- LOAD_REG_INT("Stereo", config_stereo, CHANNEL_STEREO);
- LOAD_REG_INT("Frequency", config_frequency, 44100);
- LOAD_REG_INT("Resampling", config_resampling, RESAMPLING_CUBIC);
- LOAD_REG_INT("BitsPerSample", config_bits_per_sample, 16);
- LOAD_REG_INT("BufferSize", config_buffer_size, 8192);
- LOAD_REG_INT("ThreadPriority", config_thread_priority, PRIORITY_HIGH);
-
- CHECK_RANGE(config_stereo, CHANNEL_MONO, CHANNEL_STEREO);
- if ( config_frequency != 11025
- && config_frequency != 22050
- && config_frequency != 44100
- && config_frequency != 48000)
- config_frequency = 44100;
- CHECK_RANGE(config_resampling, RESAMPLING_ALIASING, RESAMPLING_CUBIC);
- if ( config_bits_per_sample != 8
- && config_bits_per_sample != 16)
- config_bits_per_sample = 16;
- CHECK_RANGE(config_buffer_size, 1024, 32768);
- CHECK_RANGE(config_thread_priority, PRIORITY_NORMAL, PRIORITY_HIGHEST);
-
-
- return;
-}
-
-
-
-void config_quit(void) {
-
- /* Close registry key */
- if (registry != INVALID_HANDLE_VALUE) {
- RegCloseKey(registry);
- registry = INVALID_HANDLE_VALUE;
- }
-
- return;
-}
-
-
-
-/* About box, yay! */
-void about(HWND hwndParent) {
- MessageBox(hwndParent, "DUH! Winamp Plugin\n Version " VERSION " (x86)\n",
- "About:", MB_OK | MB_ICONINFORMATION);
-}
-
+
+#include <stdio.h>
+#include <windows.h>
+//#include <mmreg.h>
+//#include <msacm.h>
+#include <math.h>
+#include <commctrl.h>
+
+#include "in_duh.h"
+#include "resource.h"
+
+#include "gui.h"
+
+
+/* Registry settings */
+#define REGISTRY_KEY "Software\\Winamp\\DUH Plug-in"
+static HKEY registry = INVALID_HANDLE_VALUE;
+
+/* Some default values for config */
+int config_bits_per_sample = 16;
+int config_frequency = 44100;
+int config_stereo = CHANNEL_STEREO;
+int config_resampling = RESAMPLING_CUBIC;
+int config_buffer_size = 8192;
+int config_thread_priority = PRIORITY_HIGH;
+
+
+/*************************
+ * Registry manipulation */
+
+static int read_registry(char const *name, unsigned long type, void *ptr, unsigned long size)
+{
+ unsigned long reg_type;
+
+ if (registry == INVALID_HANDLE_VALUE ||
+ RegQueryValueEx(registry, name, 0, &reg_type, ptr, &size) != ERROR_SUCCESS
+ || reg_type != type)
+
+ return -1;
+
+ return 0;
+}
+
+
+static int write_registry(char const *name, unsigned long type, void *ptr, unsigned long size)
+{
+ if (registry == INVALID_HANDLE_VALUE
+ || RegSetValueEx(registry, name, 0, type, ptr, size) != ERROR_SUCCESS)
+
+ return -1;
+
+ return 0;
+}
+
+
+# define LOAD_REG_INT(name, var, defaultv) (read_registry(name, REG_DWORD, \
+ &(var), sizeof(var)) == -1 ? ((var) = (defaultv)) : (var))
+
+# define LOAD_REG_STRING(name, var, defaultv) (read_registry(name, REG_SZ, \
+ (var), sizeof(var)) == -1 ? strcpy(var, (defaultv)) : (var))
+
+# define SAVE_REG_INT(name, var) (write_registry(name, REG_DWORD, &(var), sizeof(var)))
+# define SAVE_REG_STRING(name, var) (write_registry(name, REG_SZ, (var), sizeof(var)))
+
+
+/*********************
+ * Range check */
+
+#define CHECK_RANGE(x, a, b) x = ((x < (a)) ? (a) : ((x > (b)) ? (b) : x))
+
+
+/*********************
+ * Config Dialog Box */
+
+
+static INT_PTR CALLBACK config_dialog(HWND dialog, UINT message,
+ WPARAM wparam, LPARAM lparam)
+{
+ int which;
+ int temp;
+ static int old_slider1 = 0;
+ char str[64];
+
+ (void)lparam;
+
+ switch (message) {
+ case WM_INITDIALOG:
+
+ /* Ok, now we need to set up the dialog's controls
+ * to match the current config
+ */
+
+ /* Channels */
+ CheckDlgButton(dialog, IDC_STEREO, config_stereo == CHANNEL_STEREO ? BST_CHECKED : BST_UNCHECKED);
+
+ /* Bits per sample */
+ switch (config_bits_per_sample) {
+ case 8: which = IDC_8BPS; break;
+ case 16: which = IDC_16BPS; break;
+ default:
+ which = 0;
+ }
+ if (which)
+ CheckRadioButton(dialog, IDC_8BPS, IDC_16BPS, which);
+
+ /* Resampling method */
+ switch (config_resampling) {
+ case RESAMPLING_ALIASING: which = IDC_ALIASING; break;
+ case RESAMPLING_LINEAR: which = IDC_LINEAR; break;
+ case RESAMPLING_LINEAR2: which = IDC_LINEAR_LOW_PASS; break;
+ case RESAMPLING_QUADRATIC: which = IDC_QUADRATIC; break;
+ case RESAMPLING_CUBIC: which = IDC_CUBIC; break;
+ default:
+ which = 0;
+ }
+ if (which)
+ CheckRadioButton(dialog, IDC_ALIASING, IDC_CUBIC, which);
+
+ /* Frequency */
+ switch (config_frequency) {
+ case 11025: which = IDC_11KHZ; break;
+ case 22050: which = IDC_22KHZ; break;
+ case 44100: which = IDC_44KHZ; break;
+ case 48000: which = IDC_48KHZ; break;
+ default:
+ which = 0;
+ }
+ if (which)
+ CheckRadioButton(dialog, IDC_11KHZ, IDC_48KHZ, which);
+
+ /* Buffer size - 1 KB -> 32 KB slider */
+ old_slider1 = (int)(log(config_buffer_size) / log(2)) - 10;
+ SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_SETRANGE, FALSE, MAKELONG(0, 5));
+ SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_SETPOS, TRUE, old_slider1);
+ sprintf(str, "%i KS", config_buffer_size / 1024);
+ SetDlgItemText(dialog, IDC_BUFFERSIZE2, str);
+
+ /* Thread Priority */
+ SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_SETRANGE, FALSE, MAKELONG(0, 2));
+ SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_SETPOS, TRUE, config_thread_priority);
+
+ return TRUE;
+
+ case WM_COMMAND:
+ switch (LOWORD(wparam)) {
+
+ case IDC_DEFAULT:
+ /* Load default settings */
+
+ /* Channels */
+ CheckDlgButton(dialog, IDC_STEREO, BST_CHECKED);
+
+ /* Bits per sample */
+ CheckRadioButton(dialog, IDC_8BPS, IDC_16BPS, IDC_16BPS);
+
+ /* Resampling method */
+ CheckRadioButton(dialog, IDC_ALIASING, IDC_CUBIC, IDC_LINEAR_LOW_PASS);
+
+ /* Frequency */
+ CheckRadioButton(dialog, IDC_11KHZ, IDC_48KHZ, IDC_44KHZ);
+
+ /* Buffer size - 1 KB -> 32 KB slider */
+ SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_SETPOS, TRUE, 3);
+ sprintf(str, "%i KS", 8192 / 1024);
+ SetDlgItemText(dialog, IDC_BUFFERSIZE2, str);
+
+ /* Thread Priority */
+ SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_SETPOS, TRUE, PRIORITY_HIGH);
+
+ return TRUE;
+
+ case IDC_NICEST:
+ /* Load nicest settings */
+
+ /* Channels */
+ CheckDlgButton(dialog, IDC_STEREO, BST_CHECKED);
+
+ /* Bits per sample */
+ CheckRadioButton(dialog, IDC_8BPS, IDC_16BPS, IDC_16BPS);
+
+ /* Resampling method */
+ CheckRadioButton(dialog, IDC_ALIASING, IDC_CUBIC, IDC_CUBIC);
+
+ /* Frequency */
+ CheckRadioButton(dialog, IDC_11KHZ, IDC_48KHZ, IDC_48KHZ);
+
+ /* Buffer size - 1 KB -> 32 KB slider */
+ SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_SETPOS, TRUE, 3);
+ sprintf(str, "%i KS", 8192 / 1024);
+ SetDlgItemText(dialog, IDC_BUFFERSIZE2, str);
+
+ /* Thread Priority */
+ SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_SETPOS, TRUE, PRIORITY_HIGH);
+
+ return TRUE;
+
+ case IDC_FASTEST:
+ /* Load fastest settings */
+
+ /* Channels */
+ CheckDlgButton(dialog, IDC_STEREO, BST_UNCHECKED);
+
+ /* Bits per sample */
+ CheckRadioButton(dialog, IDC_8BPS, IDC_16BPS, IDC_8BPS);
+
+ /* Resampling method */
+ CheckRadioButton(dialog, IDC_ALIASING, IDC_CUBIC, IDC_ALIASING);
+
+ /* Frequency */
+ CheckRadioButton(dialog, IDC_11KHZ, IDC_48KHZ, IDC_11KHZ);
+
+ /* Buffer size - 1 KB -> 32 KB slider */
+ SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_SETPOS, TRUE, 3);
+ sprintf(str, "%i KS", 8192 / 1024);
+ SetDlgItemText(dialog, IDC_BUFFERSIZE2, str);
+
+ /* Thread Priority */
+ SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_SETPOS, TRUE, PRIORITY_HIGH);
+
+ return TRUE;
+
+ case IDC_OK:
+ /* Read back configuration */
+ config_stereo = (IsDlgButtonChecked(dialog, IDC_STEREO) == BST_CHECKED) ? CHANNEL_STEREO : CHANNEL_MONO;
+ config_bits_per_sample = (IsDlgButtonChecked(dialog, IDC_8BPS) == BST_CHECKED) ? 8 : 16;
+ config_resampling = (IsDlgButtonChecked(dialog, IDC_ALIASING) == BST_CHECKED) ? RESAMPLING_ALIASING
+ : (IsDlgButtonChecked(dialog, IDC_LINEAR) == BST_CHECKED) ? RESAMPLING_LINEAR
+ : (IsDlgButtonChecked(dialog, IDC_LINEAR_LOW_PASS) == BST_CHECKED) ? RESAMPLING_LINEAR2
+ : (IsDlgButtonChecked(dialog, IDC_QUADRATIC) == BST_CHECKED) ? RESAMPLING_QUADRATIC
+ : RESAMPLING_CUBIC;
+ config_frequency = (IsDlgButtonChecked(dialog, IDC_11KHZ) == BST_CHECKED) ? 11025
+ : (IsDlgButtonChecked(dialog, IDC_22KHZ) == BST_CHECKED) ? 22050
+ : (IsDlgButtonChecked(dialog, IDC_44KHZ) == BST_CHECKED) ? 44100
+ : 48000;
+ config_buffer_size = 1 << (SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_GETPOS, 0, 0) + 10);
+
+ config_thread_priority = SendDlgItemMessage(dialog, IDC_THREAD_PRI, TBM_GETPOS, 0, 0);
+
+ case IDCANCEL:
+ case IDC_CANCEL:
+ case IDCLOSE:
+ EndDialog(dialog, wparam);
+ return TRUE;
+ }
+ break;
+ default:
+ temp = 1 << (SendDlgItemMessage(dialog, IDC_BUFFERSIZE, TBM_GETPOS, 0, 0) + 10);
+ if (temp != old_slider1) {
+ old_slider1 = temp;
+ sprintf(str, "%i KS", temp / 1024);
+ SetDlgItemText(dialog, IDC_BUFFERSIZE2, str);
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+
+
+/* DUH Config dialog */
+void config(HWND hwndParent) {
+
+ if (DialogBox(mod.hDllInstance, MAKEINTRESOURCE(IDD_CONFIG),
+ hwndParent, config_dialog) == IDC_OK) {
+
+ SAVE_REG_INT("Stereo", config_stereo);
+ SAVE_REG_INT("Frequency", config_frequency);
+ SAVE_REG_INT("Resampling", config_resampling);
+ SAVE_REG_INT("BitsPerSample", config_bits_per_sample);
+ SAVE_REG_INT("BufferSize", config_buffer_size);
+ SAVE_REG_INT("ThreadPriority", config_thread_priority);
+ }
+}
+
+
+void config_init(void) {
+
+ /* Load config from registry */
+
+ if (RegCreateKeyEx(HKEY_CURRENT_USER, REGISTRY_KEY, 0, "",
+ REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WRITE, 0,
+ &registry, 0) != ERROR_SUCCESS)
+
+ registry = INVALID_HANDLE_VALUE;
+
+ LOAD_REG_INT("Stereo", config_stereo, CHANNEL_STEREO);
+ LOAD_REG_INT("Frequency", config_frequency, 44100);
+ LOAD_REG_INT("Resampling", config_resampling, RESAMPLING_CUBIC);
+ LOAD_REG_INT("BitsPerSample", config_bits_per_sample, 16);
+ LOAD_REG_INT("BufferSize", config_buffer_size, 8192);
+ LOAD_REG_INT("ThreadPriority", config_thread_priority, PRIORITY_HIGH);
+
+ CHECK_RANGE(config_stereo, CHANNEL_MONO, CHANNEL_STEREO);
+ if ( config_frequency != 11025
+ && config_frequency != 22050
+ && config_frequency != 44100
+ && config_frequency != 48000)
+ config_frequency = 44100;
+ CHECK_RANGE(config_resampling, RESAMPLING_ALIASING, RESAMPLING_CUBIC);
+ if ( config_bits_per_sample != 8
+ && config_bits_per_sample != 16)
+ config_bits_per_sample = 16;
+ CHECK_RANGE(config_buffer_size, 1024, 32768);
+ CHECK_RANGE(config_thread_priority, PRIORITY_NORMAL, PRIORITY_HIGHEST);
+
+
+ return;
+}
+
+
+
+void config_quit(void) {
+
+ /* Close registry key */
+ if (registry != INVALID_HANDLE_VALUE) {
+ RegCloseKey(registry);
+ registry = INVALID_HANDLE_VALUE;
+ }
+
+ return;
+}
+
+
+
+/* About box, yay! */
+void about(HWND hwndParent) {
+ MessageBox(hwndParent, "DUH! Winamp Plugin\n Version " VERSION " (x86)\n",
+ "About:", MB_OK | MB_ICONINFORMATION);
+}
+