diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Input/in_wmvdrm/main.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-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.cpp | 136 |
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 |