diff options
Diffstat (limited to 'Src/Plugins/General/gen_ff/wa2frontend.h')
-rw-r--r-- | Src/Plugins/General/gen_ff/wa2frontend.h | 359 |
1 files changed, 359 insertions, 0 deletions
diff --git a/Src/Plugins/General/gen_ff/wa2frontend.h b/Src/Plugins/General/gen_ff/wa2frontend.h new file mode 100644 index 00000000..38eb819b --- /dev/null +++ b/Src/Plugins/General/gen_ff/wa2frontend.h @@ -0,0 +1,359 @@ +#ifndef __WINAMP2FRONTEND_H +#define __WINAMP2FRONTEND_H + +#define WA2_GETINFO_SAMPLERATE 0 +#define WA2_GETINFO_BITRATE 1 +#define WA2_GETINFO_CHANNELS 2 + +#define WA2_NUMBANDS 10 + +#define WA2_EQDATA_FIRSTBAND 0 +#define WA2_EQDATA_LASTBAND 9 +#define WA2_EQDATA_PREAMP 10 +#define WA2_EQDATA_ENABLED 11 +#define WA2_EQDATA_AUTO 12 + +#define IPC_GETWND_EQ 0 +#define IPC_GETWND_PE 1 +#define IPC_GETWND_MB 2 +#define IPC_GETWND_VIDEO 3 + +#define WA2_USERBUTTON_PREV 0 +#define WA2_USERBUTTON_PLAY 1 +#define WA2_USERBUTTON_PAUSE 2 +#define WA2_USERBUTTON_STOP 3 +#define WA2_USERBUTTON_NEXT 4 + +#define WA2_USERBUTTONMOD_NONE 0 +#define WA2_USERBUTTONMOD_SHIFT 1 +#define WA2_USERBUTTONMOD_CTRL 2 + +#define WINAMP_MAIN_WINDOW 40258 +#define WINAMP_OPTIONS_MINIBROWSER 40298 +#define WINAMP_OPTIONS_VIDEO 40328 +#define WINAMP_OPTIONS_PLEDIT 40040 +#define WINAMP_OPTIONS_EQ 40036 + +#define WINAMP_FILE_LOC 40185 +#define WINAMP_FILE_PLAY 40029 +#define WINAMP_FILE_DIR 40187 + +//----------------------------------------------------------------------------------------------- + +#include <windows.h> +#include "../gen_ml/ml.h" +#include "../winamp/wa_ipc.h" +#include "../winamp/ipc_pe.h" + +//----------------------------------------------------------------------------------------------- + +class Winamp2FrontEnd { + public: + friend BOOL CALLBACK findVisWndProc(HWND hwnd, LPARAM lParam); + Winamp2FrontEnd(); + virtual ~Winamp2FrontEnd(); + + void init(HWND hwndParent); + + const char *getVersion(); + + void enqueueFile(const wchar_t *file); + + /* + WA2_USERBUTTON_PLAY + WA2_USERBUTTON_PAUSE + WA2_USERBUTTON_STOP + WA2_USERBUTTON_NEXT + WA2_USERBUTTON_PREV + + WA2_USERBUTTONMOD_SHIFT + WA2_USERBUTTONMOD_CTRL + */ + void userButton(int button, int modifier); + + int isPlaying(); // 0 (false) or 1 (true) + int isPaused(); // 0 (false) or 1 (true) + int isStopped(); // if !isPlaying() and !isStopped() and !isPaused(), we're between tracks + + int getPosition(); // in ms + int getLength(); // in ms + int seekTo(int ms); // in millisecond + + void setVolume(int v); // 0 (silence) to 255 (loud) + int getVolume(); // 0 (silence) to 255 (loud) + + void setPanning(int p); // 0 (left) to 255 (right) + int getPanning(); // 0 (left) to 255 (right) + + void setShuffle(int shuffle); + int getShuffle(); + + void setRepeat(int repeat); + int getRepeat(); + + void setManualPlaylistAdvance(int manual); + int getManualPlaylistAdvance(); + + /* + WA2_GETINFO_SAMPLERATE : Samplerate (i.e. 44100) + WA2_GETINFO_BITRATE : Bitrate (i.e. 128) + WA2_GETINFO_CHANNELS : Channels (i.e. 2) + */ + int getInfo(int wa2_getinfo); + + /* + WA2_EQDATA_FIRSTBAND/LASTBAND (0 to 9) : The 10 bands of EQ data. 0-63 (+20db - -20db) + WA2_EQDATA_PREAMP : The preamp value. 0-63 (+20db - -20db) + WA2_EQDATA_ENABLED : Enabled. zero if disabled, nonzero if enabled. + WA2_EQDATA_AUTO : Autoload. zero if disabled, nonzero if enabled. + */ + int getEqData(int wa2_eqdata); + void setEqData(int wa2_eqdata, int val); + + void enableWindows(int enabled); + int areWindowsEnabled(); + void setWindowsVisible(int visible); + int areWindowsVisible(); + int isMainWindowVisible(); + + void *CanPlay(const wchar_t *); + bool IsPlaylist(const wchar_t *fn); + int getCurPlaylistEntry(); + int getPlaylistLength(); + + const wchar_t *GetCurrentTitle(); + const wchar_t *GetCurrentFile(); + const wchar_t *getTitle(int plentry); + const char *getFile(int plentry); + const wchar_t *getFileW(int plentry); + + void setCurTitle(const wchar_t* new_title); + + void playAudioCD(int cd); // id of cd (0 to 4) + + void openFileDialog(HWND w); + void openUrlDialog(HWND w); + void openUrl(const wchar_t *url); + void openDirectoryDialog(HWND w); + void ejectPopupMenu(); + void previousPopupMenu(); + void nextPopupMenu(); + void playPopupMenu(); + void pausePopupMenu(); + void stopPopupMenu(); + void setDialogBoxParent(HWND w); + void updateDialogBoxParent(HWND w); + + /* + IPC_GETWND_EQ + IPC_GETWND_PE + IPC_GETWND_MB + IPC_GETWND_VIDEO + */ + HWND getWnd(int wnd); + int isWindowVisible(intptr_t which); + void setWindowVisible(intptr_t which, int visible); + HWND getMediaLibrary(); + void ensureMediaLibraryLoaded(); + + int isOnTop(); + void setOnTop(int ontop); + void toggleOnTop(); + + // screen coordinates + void triggerPopupMenu(int x, int y); + void triggerEQPresetMenu(int x, int y); + int triggerFileMenu(int x, int y, int width, int height); + int triggerPlayMenu(int x, int y, int width, int height); + int triggerOptionsMenu(int x, int y, int width, int height); + int triggerWindowsMenu(int x, int y, int width, int height); + int triggerHelpMenu(int x, int y, int width, int height); + int triggerPEFileMenu(int x, int y, int width, int height); + int triggerPEPlaylistMenu(int x, int y, int width, int height); + int triggerPESortMenu(int x, int y, int width, int height); + int triggerPEHelpMenu(int x, int y, int width, int height); + int triggerMLFileMenu(int x, int y, int width, int height); + int triggerMLViewMenu(int x, int y, int width, int height); + int triggerMLHelpMenu(int x, int y, int width, int height); + int triggerPEListOfListsMenu(int x, int y); + + HMENU getTopMenu(); + HMENU getPopupMenu(); + int adjustOptionsPopupMenu(int direction); + + enum { + WA2_MAINMENUBAR_FILE = 0, + WA2_MAINMENUBAR_PLAY = 1, + WA2_MAINMENUBAR_OPTIONS = 2, + WA2_MAINMENUBAR_WINDOWS = 3, + WA2_MAINUMENUBAR_HELP = 4, + }; + + HMENU getMenuBarMenu(int which); + int adjustFFWindowsMenu(int direction); + int adjustFFOptionsMenu(int direction); + + HWND getMainWindow(); + + void quit(); + + char * (*export_sa_get_deprecated)(); + char * (*export_sa_get)(char data[75*2+8]); + void (*export_sa_setreq)(int); + int (*export_vu_get)(int channel); + + enum { + WA2_PLEDITPOPUP_ADD = 0, + WA2_PLEDITPOPUP_REM = 1, + WA2_PLEDITPOPUP_SEL = 2, + WA2_PLEDITPOPUP_MISC = 3, + WA2_PLEDITPOPUP_LIST = 4, + }; + + void sendPlCmd(int which, int x=0, int y=0, int menu_align_flag=0); + + enum { + WA2_MBCMD_BACK = 0, + WA2_MBCMD_FORWARD = 1, + WA2_MBCMD_STOP = 2, + WA2_MBCMD_RELOAD = 3, + WA2_MBPOPUP_MISC = 4, + }; + + void registerGlobalHotkey(const char *name, int msg, int wparam, int lparam, int flags, const char *id); + +#ifdef MINIBROWSER_SUPPORT + void sendMbCmd(int which, int x=0, int y=0, int menu_align_flag=0); +#endif + + enum { + WA2_VIDCMD_FULLSCREEN = 0, + WA2_VIDCMD_1X = 1, + WA2_VIDCMD_2X = 2, + WA2_VIDCMD_LIB = 3, + WA2_VIDPOPUP_MISC = 4, + WA2_VIDCMD_EXIT_FS = 5, + }; + + void sendVidCmd(int which, int x=0, int y=0, int menu_align_flag=0); + int hasVideoSupport(); + int isPlayingVideo(); + int isPlayingVideoFullscreen(); + int isDoubleSize(); + int getTimeDisplayMode(); + + void toggleVis(); + int isVisRunning(); + HWND getVisWnd(); + + IDropTarget *getDropTarget(); + + int getBitrate(); // in kbps + int getSamplerate(); // in khz + int getChannels(); // 1 mono, 2 stereo ... + + int isValidEmbedWndState(embedWindowState *ws); + + int PE_getNumItems(); + fileinfo2 *PE_getFileTitle(int index); + fileinfo2W *PE_getFileTitleW(int index); + int PE_getCurrentIndex(); + void PE_setCurrentIndex(int i); + + void switchSkin(const wchar_t *skinname); + void visNext(); + void visPrev(); + void visRandom(int set); + void pollVisRandom(); + void visFullscreen(); + void visConfig(); + void visMenu(); + + void setIdealVideoSize(int w, int h) { video_ideal_width = w; video_ideal_height = h; } + void getIdealVideoSize(int *w, int *h); + + int getStopOnVideoClose(); + void setStopOnVideoClose(int stop); + + int GetVideoResize(); + void SetVideoResize(int stop); + + virtual int isVis(HWND hwnd); // checks children too + + HWND getPreferencesWindow(); + void setPlEditWidthHeight(int width, int height); + + HINSTANCE getLanguagePackInstance(); + + void openTrackInfo(); + const char *getOutputPlugin(); + + void setDrawBorders(int d); + void disableSkinnedCursors(int disable); + + int getMetaData(const wchar_t *filename, const wchar_t *name, wchar_t *data, int data_len); + void GetFileInfo(const wchar_t *filename, wchar_t *title, int titleCch, int *length); + + void invalidateCache(); + + const char *getVideoInfoString(); + + void playFile(const wchar_t *file); + void rewind5s(); + void forward5s(); + void endOfPlaylist(); + void startOfPlaylist(); + void stopWithFade(); + void stopAfterCurrent(); + + void clearPlaylist(); + + int isWindowShade(int wnd); + + int getCurTrackRating(); + void setCurTrackRating(int rating); + + int isExitEnabled(); + int pushExitDisabled(); + int popExitDisabled(); + + + int DownloadFile(const char *url, const wchar_t *destfilepath = L"", bool addToMl = true, bool notifyDownloadsList = true); + void getDownloadPath(wchar_t path2store[MAX_PATH]); + void setDownloadPath(const wchar_t * path2store); + + bool GetAlbumArt(const wchar_t *filename); + bool IsWinampPro(); + +private: + void setFoundVis() { foundvis = 1; } + char *m_version; + HWND hwnd_winamp; + HWND hwnd_playlist; + int foundvis; + int enabled; + int visible; + int video_ideal_width; + int video_ideal_height; + DWORD cached_length_time; + int got_length_cache; + int cached_length; + + DWORD cached_pos_time; + int got_pos_cache; + int cached_pos; + + int saved_video, +#ifdef MINIBROWSER_SUPPORT + saved_mb, +#endif + saved_pe, saved_eq, saved_main; +}; + +//----------------------------------------------------------------------------------------------- + +extern Winamp2FrontEnd wa2; + +BOOL DoTrackPopup(HMENU hMenu, UINT fuFlags, int x, int y, HWND hwnd); + +#endif
\ No newline at end of file |