aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_wmvdrm/main.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_wmvdrm/main.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Plugins/Input/in_wmvdrm/main.cpp')
-rw-r--r--Src/Plugins/Input/in_wmvdrm/main.cpp136
1 files changed, 136 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_wmvdrm/main.cpp b/Src/Plugins/Input/in_wmvdrm/main.cpp
new file mode 100644
index 00000000..af26d4e0
--- /dev/null
+++ b/Src/Plugins/Input/in_wmvdrm/main.cpp
@@ -0,0 +1,136 @@
+#include "Main.h"
+#include "api.h"
+#include "loadini.h"
+#include "FileTypes.h"
+#include <commctrl.h>
+#include "../nu/Config.h"
+#include "../nu/CCVersion.h"
+#include "resource.h"
+
+wchar_t INI_FILE[MAX_PATH] = L"";
+IDispatch *winampExternal = 0;
+Nullsoft::Utility::Config wmConfig;
+WMDRM mod;
+HINSTANCE WASABI_API_LNG_HINST_WAV = 0;
+HINSTANCE WASABI_API_LNG_HINST_DS = 0;
+
+int Init()
+{
+ if (!IsWindow(plugin.hMainWindow))
+ return IN_INIT_FAILURE;
+
+ if (!LoadWasabi())
+ return IN_INIT_FAILURE;
+
+ plugin.UsesOutputPlug |= 8;
+
+ // need to have this initialised before we try to do anything with localisation features
+ WASABI_API_START_LANG(plugin.hDllInstance,InWmLangGUID);
+
+ static wchar_t szDescription[256];
+ swprintf(szDescription,256,WASABI_API_LNGSTRINGW(IDS_NULLSOFT_WINDOWS_MEDIA_DECODER),WMDRM_VERSION);
+ plugin.description = (char*)szDescription;
+
+ IniFile(plugin.hMainWindow);
+ wmConfig.SetFile(INI_FILE, L"in_wm");
+ ReadConfig();
+ fileTypes.ReadConfig();
+ if (NULL == winampExternal)
+ {
+ winampExternal = (IDispatch *)SendMessage(plugin.hMainWindow, WM_WA_IPC, 0, IPC_GET_DISPATCH_OBJECT); // ask for winamp's
+ if (winampExternal == (IDispatch *)1)
+ winampExternal = 0;
+ }
+
+ mod.Init();
+ return IN_INIT_SUCCESS;
+}
+
+void Quit()
+{
+ mod.Quit();
+ UnloadWasabi();
+ fileTypes.types.clear();
+
+ if (NULL != winampExternal)
+ {
+ winampExternal->Release();
+ winampExternal = NULL;
+ }
+}
+
+void Config(HWND parent)
+{
+ mod.Config(parent);
+ fileTypes.SaveConfig();
+ WriteConfig();
+}
+
+void About(HWND parent)
+{
+ wchar_t message[1024] = {0}, text[1024] = {0};
+ WASABI_API_LNGSTRINGW_BUF(IDS_NULLSOFT_WINDOWS_MEDIA_DECODER_OLD,text,1024);
+ wsprintfW(message, WASABI_API_LNGSTRINGW(IDS_ABOUT_TEXT),
+ plugin.description, TEXT(__DATE__));
+ DoAboutMessageBox(parent,text,message);
+}
+
+void GetFileInfo(const in_char *file, wchar_t *title, int *length_in_ms) { mod.GetFileInfo(file, title, length_in_ms); }
+int InfoDialog(const in_char *file, HWND parent) { return mod.InfoBox(file, parent); }
+int IsOurFile(const in_char *fn) { return mod.IsOurFile(fn); }
+int Play(const in_char *fn) {return mod.Play(fn); }
+void Pause() { mod.Pause(); }
+void Resume() { mod.UnPause(); }
+int IsPaused() { return mod.IsPaused(); }
+void Stop() { mod.Stop(); }
+int GetLength() { return mod.GetLength(); }
+int GetOutputTime() { return mod.GetOutputTime(); }
+void SetOutputTime(int time_in_ms) { return mod.SetOutputTime(time_in_ms); }
+void SetVolume(int volume) { mod.SetVolume(volume); }
+void SetPan(int pan) { mod.SetPan(pan); }
+void EQSet(int on, char data[10], int preamp) { mod.EQSet(on, data, preamp); }
+
+In_Module plugin =
+{
+ IN_VER_RET, // defined in IN2.H
+ "nullsoft(in_wm.dll)",
+ 0, // hMainWindow (filled in by winamp)
+ 0, // hDllInstance (filled in by winamp)
+ 0, // this is a double-null limited list. "EXT\0Description\0EXT\0Description\0" etc.
+ 0, // is_seekable
+ 1, // uses output plug-in system
+ Config,
+ About,
+ Init,
+ Quit,
+ GetFileInfo,
+ InfoDialog,
+ IsOurFile,
+ Play,
+ Pause,
+ Resume,
+ IsPaused,
+ Stop,
+
+ GetLength,
+ GetOutputTime,
+ SetOutputTime,
+
+ SetVolume,
+ SetPan,
+
+ 0,0,0,0,0,0,0,0,0, // visualization calls filled in by winamp
+
+ 0,0, // dsp calls filled in by winamp
+
+ EQSet,
+
+ NULL, // setinfo call filled in by winamp
+
+ 0, // out_mod filled in by winamp
+};
+
+extern "C" __declspec( dllexport ) In_Module * winampGetInModule2()
+{
+ return &plugin;
+} \ No newline at end of file