123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #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;
- }
|