Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
BIN
Src/resources/SDK/nde-0.1.1.tar.gz
Normal file
BIN
Src/resources/SDK/nde-0.1.1.tar.gz
Normal file
Binary file not shown.
38
Src/resources/SDK/sdkreadme.txt
Normal file
38
Src/resources/SDK/sdkreadme.txt
Normal file
|
@ -0,0 +1,38 @@
|
|||
Winamp 5 SDK
|
||||
------------
|
||||
|
||||
This ZIP file contains various SDKs for creating new plugins for Winamp 5.
|
||||
|
||||
Here's a description of the various folders:
|
||||
|
||||
/dsp_test - Sample code for a DSP test plugin
|
||||
|
||||
/gen_ml - Headers and IPC calls for accessing/controlling/querying the Media
|
||||
Library
|
||||
|
||||
/gen_ml/ml_ex - Sample code for a Media Library plugin
|
||||
|
||||
/gen_ml/util - additional code for manipulating the library db externally
|
||||
|
||||
/gen_tray - Sample code for a General Purpose plugin
|
||||
|
||||
/in_raw - Sample code for an Input plugin
|
||||
|
||||
/lang_b - Sample code for a Language Pack plugin
|
||||
|
||||
/maki - Compiler for building Maki binaries
|
||||
|
||||
/out_raw - Sample code for an Output plugin
|
||||
|
||||
/vis/vis_avs/apesdk - Sample code for an AVS APE plugin
|
||||
|
||||
/vis/vis_avs/ns-eel - Nullsoft Expression Evaluator Library (NS-EEL)
|
||||
This is what powers AVS's expression evaluators, feel free
|
||||
to include/modify the code in your own AVS APE plugins
|
||||
|
||||
/vis/vis_test - Sample code for a Visualisation plugin
|
||||
|
||||
/vis/wa5vis.txt - Describes how to embed your visualisation plugin in the
|
||||
Winamp 5 drawer
|
||||
|
||||
/winamp - Headers and IPC calls for controlling Winamp
|
99
Src/resources/SDK/wa5vis.txt
Normal file
99
Src/resources/SDK/wa5vis.txt
Normal file
|
@ -0,0 +1,99 @@
|
|||
Winamp 5 VIS Drawer API
|
||||
-----------------------
|
||||
|
||||
|
||||
Here are the steps to get your visualization plugin in the Winamp 5 drawer :
|
||||
|
||||
1) Create an embedded window to serve as a parent for your vis Wnd using the Winamp 5 Embedded Window SDK :
|
||||
|
||||
HWND parent = NULL;
|
||||
HWND (*e)(embedWindowState *v);
|
||||
*(void**)&e = (void *)SendMessage(this_mod->hwndParent,WM_WA_IPC,(LPARAM)0,IPC_GET_EMBEDIF);
|
||||
if (e) parent = e(&myWindowState);
|
||||
|
||||
2) Create your vis window (say, g_hwnd) for your vis plugin, using the embedded window as a parent.
|
||||
|
||||
3) BEFORE showing your parent window, notify Winamp that you are a VIS window :
|
||||
|
||||
SendMessage(this_mod->hwndParent, WM_WA_IPC, (int)g_hwnd, IPC_SETVISWND);
|
||||
ShowWindow(parent, SW_SHOWNA);
|
||||
|
||||
4) When your plugin is asked to terminate, notify winamp that the VIS has gone away :
|
||||
|
||||
SendMessage(g_mod->hwndParent, WM_WA_IPC, NULL, IPC_SETVISWND);
|
||||
|
||||
5) From now on, your vis is going to be automatically inserted in the drawer, and your window (the one you sent to winamp
|
||||
using SETVISWND) is going to receive commands when the user clicks in the vis buttons (ie, next/previous/random, etc). You
|
||||
should implement these commands by trapping WM_COMMAND:
|
||||
|
||||
case WM_COMMAND: {
|
||||
int id = LOWORD(wParam);
|
||||
switch (id) {
|
||||
|
||||
// user clicked on 'next' preset button
|
||||
case ID_VIS_NEXT: next_preset(); break;
|
||||
|
||||
// user clicked on 'previous' preset button
|
||||
case ID_VIS_PREV: previous_preset(); break;
|
||||
|
||||
// user clicked on 'random' togglebutton
|
||||
case ID_VIS_RANDOM: {
|
||||
// determine if we're switching random on or off or if Winamp is asking us about the state of our random flag
|
||||
int v = HIWORD(wParam) ? 1 : 0;
|
||||
|
||||
// are we being asked about the state of our random flag ?
|
||||
if (wParam >> 16 == 0xFFFF) {
|
||||
// tell winamp about our state
|
||||
SendMessage(g_mod->hwndParent,WM_WA_IPC,random_presets_flag,IPC_CB_VISRANDOM);
|
||||
break;
|
||||
}
|
||||
|
||||
// changes random_preset_flag
|
||||
set_random(v);
|
||||
|
||||
// if we are turning random on, we should switch to a new random preset right away
|
||||
if (v) load_random_preset();
|
||||
|
||||
break;
|
||||
}
|
||||
case ID_VIS_FS: go_fullscreen(); break;
|
||||
case ID_VIS_CFG: open_configuration(); break;
|
||||
case ID_VIS_MENU: open_popup_menu(); break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
6) Before turning fullscreen on, you should check wether video is already fullscreen or not :
|
||||
|
||||
if (SendMessage(g_mod->hwndParent,WM_WA_IPC,0,IPC_IS_PLAYING_VIDEO)>1)
|
||||
{
|
||||
cant_go_fullscreen_dlg();
|
||||
}
|
||||
|
||||
7) You're almost done, the last thing to do is to notify Winamp when you go fullscreen :
|
||||
|
||||
go_fullscreen()
|
||||
{
|
||||
if (SendMessage(g_mod->hwndParent,WM_WA_IPC,0,IPC_IS_PLAYING_VIDEO)>1)
|
||||
{
|
||||
cant_go_fullscreen_dlg();
|
||||
}
|
||||
else
|
||||
{
|
||||
SendMessage(g_mod->hwndParent,WM_WA_IPC,1,IPC_SET_VIS_FS_FLAG);
|
||||
|
||||
... now do the work of actually going fullscreen ...
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
go_windowed()
|
||||
{
|
||||
SendMessage(g_mod->hwndParent,WM_WA_IPC,0,IPC_SET_VIS_FS_FLAG);
|
||||
|
||||
... now do the work of going back to windowed mode ...
|
||||
|
||||
}
|
||||
|
||||
|
||||
That should be all. Feel free to send your questions to francis@winamp.com
|
Loading…
Add table
Add a link
Reference in a new issue