#ifndef _MAIN_H_ #define _MAIN_H_ #ifdef __cplusplus //#pragma warning(error:4311) extern "C" { #endif #include //#include #include "wasabicfg.h" #include "wa_ipc.h" #include "config.h" #include "dpi.h" #ifndef __cplusplus #include "Plush/plush.h" #endif #define APSTUDIO_INVOKED #include "resource.h" #include #include #include #include #include #include #include #include #include "in2.h" #include "strutil.h" #include "../nu/trace.h" #ifndef NO_INPLACE_RESOLVE #if defined(_WIN64) #include "../Elevator/IFileTypeRegistrar_64.h" #else #include "../Elevator/IFileTypeRegistrar_32.h" #endif #endif /* configuration */ //#undef MAX_PATH //#define MAX_PATH 512 #define OFFSCREEN_Y_POS -30000 #define MAX_URL 4096 extern HINSTANCE language_pack_instance; #define UPDATE_DISPLAY_TIMER 38 #define STATS_TIMER 64 #define SPLASH_DELAY 2000 #define APP_NAME "Winamp" #ifdef __alpha #define APP_VERSION_PLATFORM "(AXP)" #elif defined(_WIN64) #define APP_VERSION_PLATFORM "(x64)" #elif defined(_WIN32_WINCE) #define APP_VERSION_PLATFORM "(CE)" #else #define APP_VERSION_PLATFORM "(x86)" #endif extern const char app_name[], app_version[], app_version_string[]; #define BIGINT 1000000000 #define MAINMENU_OPTIONS_BASE (11+g_mm_optionsbase_adj) #define WINDOWMENU_FFWINDOWS_BASE (3+g_mm_ffwindowsbase_adj) #define HIDDEN_TRAP -33 #define WINDOW_WIDTH 275 #define WINDOW_HEIGHT 116 #define FALLBACK_FONT L"Arial" //#define DEFAULT_FONT "Arial Unicode MS" #define DEFAULT_FONT L"Arial" //extern prefsDlgRec *g_piprefsdlgs; #define CAPTION_SIZE (MAX_PATH+128) #define AUDITSIZE 10 //#define CLASSIC_SKIN_NAME L"Winamp Classic" #define MODERN_SKIN_NAME L"Winamp Modern" #define BENTO_SKIN_NAME L"Bento" #define BIG_BENTO_SKIN_NAME L"Big Bento" /*********************** *** about.c */ void about_dialog(void); extern int about_lastpage; extern HWND about_hwnd; /*********************** *** about2.c */ void About2_Start(HWND hwndParent); void About2_Kill(); /*********************** *** bookmark.c */ void Bookmark_additem(wchar_t *fn, wchar_t *ft); void Bookmark_AddCommandline(wchar_t *commandLine); /*********************** *** burn.cpp */ int burn_start(burnCDStruct *param); unsigned int burn_doBurn(char *cmdline, HWND winampWnd, HINSTANCE winampInstance); /*********************** *** config.c */ // configuration variables/with defaults #ifndef NO_INPLACE_RESOLVE int GetRegistrar(IFileTypeRegistrar **registrar, BOOL use_fallback); #endif void init_config(); void setup_config(void); void config_write(int); void config_read(int); BOOL config_setup_filetypes(int mode); void config_adddesktop(void); int config_isregistered(wchar_t *); BOOL config_registermediaplayer(DWORD accessEnabled); BOOL config_register_capability(wchar_t *ext, int mode); void config_register(wchar_t *ext, int reg); void config_setinifile(wchar_t *inifile); void config_setinidir(const wchar_t *inidir); void config_setm3udir(const wchar_t *m3udir); void config_setm3ubase(const wchar_t *m3ubase); void config_load_langpack_var(void); void config_save_langpack_var(void); int config_isdircontext(void); BOOL config_setup_filetype(const wchar_t *winamp_file, const wchar_t *name, BOOL use_fallback); BOOL config_adddircontext(BOOL use_fallback); int config_iscdplayer(void); BOOL config_removedircontext(BOOL use_fallback); BOOL config_regcdplayer(int reg, int mode); void config_remove_winamp_keys(void); void config_agent_add(void); void config_agent_remove(void); void regmimetype(const wchar_t *mtype, const wchar_t *programname, const wchar_t *ext, int nsonly); void RemoveRegistrar(); /*********************** *** convert.cpp */ int convert_file(convertFileStruct *cfs); void convert_end(convertFileStruct *cfs); int convert_fileW(convertFileStructW *cfs); void convert_endW(convertFileStructW *cfs); HWND convert_config(convertConfigStruct *ccs); void convert_config_end(convertConfigStruct *ccs); void convert_enumfmts(converterEnumFmtStruct *cefs); void convert_setPriority(convertSetPriority *csp); void convert_setPriorityW(convertSetPriorityW *csp); int convert_setConfigItem(convertConfigItem *cci); int convert_getConfigItem(convertConfigItem *cci); int convert_file_test(convertFileStructW *cfs); /*********************** *** dde.c */ int dde_addstart(HWND hwnd); void dde_delstart(void); int dde_isquicklaunchavailable(void); void dde_addquicklaunch(HWND hwnd); void dde_adddesktop(HWND hwnd); void dde_remdesktop(void); void dde_remquicklaunch(void); /*********************** *** dock.c */ void FixMainWindowRect(RECT *r); void EstMainWindowRect(RECT *r); void EstEQWindowRect(RECT *r); void EstPLWindowRect(RECT *r); void EstVidWindowRect(RECT *r); void SetVidWindowRect(RECT *r); void SetMainWindowRect(RECT *r); void SetEQWindowRect(RECT *r); void SetPLWindowRect(RECT *r); void MoveRect(RECT *r, int x, int y); int IsWindowAttached(RECT rc, RECT rc2); void SnapWindowToWindow(RECT *rcSrc, RECT rcDest); void AdjustSnap(RECT old1, RECT old2, RECT *new1, RECT *new2); int IsPointInRect(int x, int y, RECT *r); void FixOverlaps(RECT *r1, RECT *r2); /*********************** *** draw.c */ extern int (WINAPI *jtf_drawtext)(HDC, LPCWSTR, int, LPRECT, UINT); void draw_set_plbm(HBITMAP); extern int pe_fontheight; extern HPALETTE draw_hpal; void draw_firstinit(void); void draw_finalquit(void); void draw_init(void); void draw_paint(HWND hwnd); void draw_printclient(HDC hdc, LPARAM drawingOptions); void draw_kill(void); void draw_clear(void); void draw_monostereo(int value); // 0 is neither, 1 is mono, 2 is stereo void draw_shuffle(int on, int pressed); void draw_repeat(int on, int pressed); void draw_eqplbut(int eqon, int eqpressed, int plon, int plpressed); void draw_volumebar(int volume, int pressed); // volume is 0-51 void draw_panbar(int volume, int pressed); void draw_songname(const wchar_t *name, int *position, int songlen); void draw_positionbar(int position, int pressed); // position is 0-256 void draw_bitmixrate(int bitrate, int mixrate); void draw_buttonbar(int buttonpressed); // starts at 0 with leftmost, -1 = no button void draw_playicon(int whichicon); // 0 = none, 1 = play, 2 = stop, 4 = pause void draw_time(int minutes, int seconds, int clear); void draw_sa(unsigned char *values, int draw); // array of 12 bands, starting with leftmost, of 0..7 void draw_tbuttons(int b1, int b2, int b3, int b4); void draw_setnoupdate(int); void draw_tbar(int active, int windowshade, int egg); void draw_eject(int pressed); void draw_clutterbar(int enable); void update_volume_text(int songlen); void update_panning_text(int songlen); /***************** *** draw_eq.c */ extern int eq_init; void draw_eq_init(); void draw_eq_kill(); void draw_paint_eq(HWND hwnd); void draw_printclient_eq(HDC hdc, LPARAM /*drawingOptions*/); void draw_eq_tbutton(int b3, int wsb); void draw_eq_slid(int which, int pos, int pressed); // left to right, 0-64 void draw_eq_tbar(int active); void draw_eq_onauto(int on, int autoon, int onpressed, int autopressed); void draw_eq_presets(int pressed); void draw_eq_graphthingy(void); /***************** *** draw_pe.c *** for functions that accept HDC as the first parameter, *** hdc can be NULL, and it will use the Window DC */ extern int pe_init; void draw_pe_init(); void draw_pe_kill(); void draw_pe_tbutton(int b2, int b3, int b2_ws); void draw_paint_pe(HWND hwnd); void draw_printclient_pe(HWND hwnd, HDC hdc, LPARAM drawingOptions); void draw_reinit_plfont(int notifyOthers); void draw_pe_tbar(HWND hwnd, HDC hdc, int state); void draw_pe_vslide(HWND hwnd, HDC hdc, int pushed, int pos); // pos 0..100 void draw_pe_timedisp(HDC hdc, int minutes, int seconds, int tlm, int clear); void draw_pe_addbut(int which); // -1 = none, 0 = file, 1 = dir, 2 = loc void draw_pe_rembut(int which); // -1 = none, 0 = sel, 1 = crop, 2 = all void draw_pe_selbut(int which); // -1 = none, 0 = all, 1 = none, 2=inv void draw_pe_miscbut(int which); // -1 = none, 0 = inf, 1 = sort, 2=misc void draw_pe_iobut(int which); // -1 = none, 0 = load, 1=save, 2=clear /***************** *** draw_vw.c */ extern int vw_init; void draw_vw_init(); void draw_vw_kill(); void draw_vw_tbar(int state); void draw_vw(HDC hdcout); void draw_paint_vw(HWND hwnd); void draw_vw_tbutton(int b3); void draw_vw_mbuts(int whichb); void draw_vw_info(wchar_t *t, int erase); /***************** *** dsp.c */ void dsp_init(void); void dsp_quit(void); int dsp_dosamples(short int *samples, int numsamples, int bps, int nch, int srate); int dsp_isactive(void); /***************** *** eq.c */ extern unsigned char eq_tab[10]; void eq_dialog(HWND, int); void eq_autoload(const char *mp3fn); LRESULT CALLBACK EQ_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); /***************** *** embedwnd.cpp */ #ifdef __cplusplus typedef struct _EMBEDWND { HWND hLastFocus; } EMBEDWND; #include "../nu/CGlobalAtom.h" static CGlobalAtom EMBEDWND_PROPW(L"EMBDEWND"); #define GetEmbedWnd(__hwnd) ((EMBEDWND*)GetPropW(__hwnd, EMBEDWND_PROPW)) #endif extern LRESULT CALLBACK emb_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); extern HWND embedWindow(embedWindowState *state); extern void SnapWindowToAllWindows(RECT *outrc, HWND hwndNoSnap); extern BOOL SnapToScreen(RECT *outrc); extern CRITICAL_SECTION embedcs; extern embedWindowState *embedwndlist; // linked list extern int embedwndlist_cnt; #define EMBED_STATE_EXTRA_LINK 0 #define EMBED_STATE_EXTRA_ATTACHED 1 #define EMBED_STATE_EXTRA_GUID 4 // note this reserved 5-7 also #define EMBED_STATE_EXTRA_REPARENTING 62 #define EMBED_STATE_EXTRA_FFROOTWND 63 /***************** *** equi.c */ extern int minimize_hack_winamp; extern int do_volbar_active, do_panbar_active; void eq_ui_handlecursor(void); void equi_handlemouseevent(int x, int y, int type, int stats); void ui_handlecursor(void); BOOL DoTrackPopup(HMENU hMenu, UINT fuFlags, int x, int y, HWND hwnd); /***************** *** gen.cpp */ void load_genplugins(); void unload_genplugins(); /***************** *** html.c */ void doHtmlPlaylist(void); /***************** *** http.c */ int httpRetrieveFile(HWND hwnd, const char *url, char *file, char *dlgtitle); int httpRetrieveFileW(HWND hwnd, const char *url, const wchar_t *file, const wchar_t *dlgtitle); /***************** *** in.c */ extern In_Module *in_mod; int in_init(); void in_deinit(); In_Module *in_setmod(wchar_t *filename); In_Module *in_setmod_noplay(const wchar_t *filename, int *start_offs); // starts at *start_offs, sets *start_offs with the value of the module used char *in_getfltstr(void); wchar_t *in_getfltstrW(BOOL skip); char *in_getextlist(void); wchar_t *in_getextlistW(); int in_getouttime(void); int in_getlength(void); void in_pause(int p); int in_seek(int time_in_ms); int in_open(const wchar_t *fn); void in_setvol(int v); void in_setpan(int p); void in_close(void); int in_infobox(HWND hwnd, const wchar_t *fn); int in_get_extended_fileinfoW(const wchar_t *fn, const wchar_t *metadata, wchar_t *dest, size_t destlen); int in_get_extended_fileinfo(const char *fn, const char *metadata, char *dest, size_t destlen); int in_set_extended_fileinfo(const char *fn, const char *metadata, char *dest); int in_set_extended_fileinfoW(const wchar_t *fn, const wchar_t *metadata, wchar_t *data); int in_write_extended_fileinfo(); void eq_set(int on, char data[10], int preamp); void in_flush(int ms); /************** *** jump.c */ void SetJumpComparator(void *functionPtr); void SetJumpComparatorW(void *functionPtr); int jump_dialog(HWND hwnd); int jump_file_dialog(HWND hwnd); /*************** *** m3u.c */ int savem3ufn(const wchar_t *filename, int rel, int useBase); /* main.c */ #include "buildType.h" #ifndef WM_MOUSEWHEEL #define WM_MOUSEWHEEL 0x20A #endif extern UINT songChangeBroadcastMessage; extern HMENU main_menu, top_menu, systray_menu, g_submenus_bookmarks1, g_submenus_bookmarks2, g_submenus_skins1, g_submenus_skins2, g_submenus_vis, g_submenus_options, g_submenus_lang, g_submenus_play, v5_top_menu; extern int unique_loword_command; extern int g_submenus_lang_id; extern char g_audiocdletter[]; extern int g_audiocdletters; extern int g_dropaot_timer_set; extern int is_install; extern int g_fsapp; extern int g_restoreaot_timer_set; extern int bNoHwndOther; extern int g_safeMode; void tealike_crappy_code(unsigned long v[2], unsigned long k[4]); void UpdateAudioCDMenus(HMENU hmenu); void MoveOffscreen(HWND hwnd); void ResolveEnvironmentVariables(wchar_t *string, size_t stringSize); extern int g_main_created; extern int g_noreg; extern wchar_t szAppName[64]; // window class name, generated on the fly. extern int g_fullstop; extern int vis_fullscreen; extern int stat_isit; // used for faster version checking extern int g_mm_ffoptionsbase_adj; extern int no_notify_play; extern int last_no_notify_play; extern int disable_skin_cursors; extern int disable_skin_borders; extern int g_exit_disabled; extern UINT g_scrollMsg; LRESULT CALLBACK Main_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); extern int Ipc_WindowToggle(INT_PTR which, INT_PTR how); extern int eggstat; extern int last_brate, g_need_titleupd, g_need_infoupd; extern int g_stopaftercur; extern int g_has_deleted_current; extern int g_has_video_plugin, g_no_video_loaded; extern char *audits[AUDITSIZE]; extern int audit_ptr; extern HWND hTooltipWindow, hEQTooltipWindow, hVideoTooltipWindow, hPLTooltipWindow/*, hPL2TooltipWindow*/; extern HWND hMainWindow, hEQWindow, hPLWindow, /*hMBWindow, */hVideoWindow; extern HINSTANCE hMainInstance; extern HANDLE hMainThread; extern DWORD mainThreadId; extern int paused; extern int playing; extern wchar_t caption[CAPTION_SIZE]; extern wchar_t FileName[FILENAME_SIZE]; extern wchar_t FileTitle[FILETITLE_SIZE]; extern wchar_t FileTitleNum[FILETITLE_SIZE]; extern char *app_date; extern int g_srate, g_brate, g_nch, g_srate_exact; extern int g_mm_optionsbase_adj; extern int g_mm_ffwindowsbase_adj; extern HWND g_dialog_box_parent; extern int g_restartonquit; extern char playlist_custom_font[128]; extern wchar_t playlist_custom_fontW[128]; extern int config_custom_plfont; extern int disable_skin_cursors; LRESULT sendMlIpc(int msg, WPARAM param); extern HWND hExternalVisWindow; int CALLBACK WINAPI BrowseCallbackProc( HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData); int CALLBACK WINAPI BrowseCallbackProc_Download(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData); BOOL CALLBACK browseEnumProc(HWND hwnd, LPARAM lParam); int Main_OnClose(HWND hwnd); #define DIALOG_PARENT(w) (g_dialog_box_parent?g_dialog_box_parent:w) int CreateMainWindow(); void BuildAppName(); WPARAM WinampMessageLoop(); /*************** *** metrics.c */ #define METRICS_EMAIL 0x0001 #define METRICS_COUNTRY 0x0002 #define METRICS_ANNOUNCEMENTS 0x0003 #define METRICS_GENDER 0x0004 INT GetMetricsValueW(const char *data, const char *pszType, void *pDest, int cbDest); BOOL SetMetricsValueW(const char *data, const char *pszType, const void *pVal, int cbVal); BOOL SendMetrics(const char *data, HWND hwndParent); INT GetMetricsSize(const char *data); /*************** *** verchk.c */ void newversioncheck(void); void Ping(const char *url); /*************** *** ole.cpp */ void InitDragDrops(); void UninitDragDrops(); void Ole_initDragDrop(void); void Ole_uninitDragDrop(void); void *Ole_getDropTarget(void); /*************** *** options.c */ #define PREFS_UNICODE ((_prefsDlgRec *)1) #define PREFS_ACP ((_prefsDlgRec *)0) extern int g_taskbar_dirty; extern intptr_t prefs_last_page; extern RECT prefs_rect, alt3_rect, ctrle_rect, about_rect, loc_rect, time_rect, load_rect, editinfo_rect; extern HWND prefs_hwnd; void prefs_dialog(int modal); void prefs_liveDlgAdd(prefsDlgRec * p); void prefs_liveDlgRemove(prefsDlgRec * p); void prefs_liveDlgUpdate(prefsDlgRec * p); void SetDialogBoxFromFile(FILE *fp, HWND hwndDlg, int id); /*************** *** options_playlist.cpp */ void UpdatePlaylistFontSizeText(void); void UpdateManualAdvanceState(void); /*************** *** options_skin.cpp */ typedef struct _ENUMSKIN { const wchar_t *pszFileName; const wchar_t *pszName; int nType; int bActive; } ENUMSKIN; #define SKIN_FILETYPE_EMBED 3 #define SKIN_FILETYPE_DIR 0 #define SKIN_FILETYPE_ZIP 1 #define SKIN_FILETYPE_WSZ 2 #define SKIN_FILETYPE_WAL 4 typedef int (CALLBACK *ENUMSKINPROC)(ENUMSKIN* /*pes*/, void * /*user*/); // return 0 to stop enumeration int EnumerateSkins(ENUMSKINPROC fnEnumSkin, void *user); /*************** *** options_general.cpp */ typedef struct _ENUMLANG { const wchar_t *pszFileName; const wchar_t *pszName; int nType; int bActive; } ENUMLANG; //#define LANG_FILETYPE_LNG 1 // DEPRECATED: no longer a supported type #define LANG_FILETYPE_WLZ 2 #define LANG_FILETYPE_EMBED 3 #define LANG_FILETYPE_ZIP 4 // added 5.66 #define LANG_FILETYPE_DIR 0 // added 5.66 typedef int (CALLBACK *ENUMLANGPROC)(ENUMLANG* /*pel*/, void * /*user*/); // return 0 to stop enumeration int EnumerateLanguages(ENUMLANGPROC fnEnumLang, void *user); void LangSwitchToLangPrompt(HWND hwndDlg, wchar_t* newLang); /*************** *** out.c */ extern Out_Module *out_modules[32]; extern Out_Module *out_mod; void out_init(); void out_deinit(); void out_setwnd(); void out_changed(HINSTANCE hLib, int enabled); /*************** *** peui.c */ void peui_handlemouseevent(HWND hwnd, int x, int y, int type, int stats); void pe_ui_handlecursor(HWND hwnd); /**************** *** play.c */ void getNewFile(int, HWND, const wchar_t *); LRESULT getNewLocation(int, HWND); // if the int param is -1, returns a HGLOBAL to the thing instead of acting on it void StartPlaying(); void StopPlaying(int); void PausePlaying(); void UnPausePlaying(); void PlayThing(const char *thing, int clearlist); void BeginPlayback(); /*************** *** playlist.c */ __declspec(dllexport) extern wchar_t *(*plstring_wcsdup)(const wchar_t *str); __declspec(dllexport) extern wchar_t *(*plstring_malloc)(size_t str_size); __declspec(dllexport) extern void (*plstring_release)(wchar_t *str); __declspec(dllexport) extern void (*plstring_retain)(wchar_t *str); int LoadPlaylistByExtension(const wchar_t *fn, const wchar_t *ext, int whattodo, int useBase); int PlayList_getitem2W(int position, wchar_t *filename, wchar_t *filetitle); int PlayList_getitem_jtfW(int position, wchar_t *str); void PlayList_getcurrent_tupdate(wchar_t *FileName, wchar_t *FileTitle); int IsPlaylistExtension(const wchar_t *extension); int IsPlaylistExtensionA(const char *extension); int LoadPlaylist(const wchar_t *filename, int whattodo, int doMIMEcheck); // returns -1 if not a playlist, 0 on success, 1 on failure void plstring_init(); extern wchar_t playlistStr[19]; void PlayList_UpdateTitle(const wchar_t *filename); int PlayList_GetNextSelected(int start); int PlayList_GetSelectedCount(); void PlayList_updateitem(int position); void PlayList_getcurrent_onstop(wchar_t *filename, wchar_t *filetitle); int PlayList_gethidden(int pos); int PlayList_ishidden(int pos); int PlayList_alldone(int pos); int PlayList_hasanycurtain(int pos); int PlayList_current_hidden(void); const char *PlayList_getcurtain(int pos); const char *PlayList_getExtInf( int pos ); //const char *PlayList_getbrowser(int pos); void PlayList_resetcurrent(void); int PlayList_getitem(int position, wchar_t *filename, wchar_t *filetitle); int PlayList_getitem2(int position, char *filename, char *filetitle); int PlayList_getitem3(int position, char *filetitle, char *filelength); int PlayList_getitem3W(int position, wchar_t *filetitle, wchar_t *filelength); int PlayList_getitem_pl(int position, wchar_t *); int PlayList_getlength(void); int PlayList_deleteitem(int item); void PlayList_delete(void); void PlayList_destroy(void); void PlayList_append(const wchar_t *filename, int is_nde_string); void PlayList_appendthing(const wchar_t *url, int doMIMEcheck, int is_nde_string); void PlayList_append_withinfo(const wchar_t *filename, const wchar_t *title, const wchar_t *ext, int length, int is_nde_string); void PlayList_append_withinfo_curtain(const wchar_t *filename, const wchar_t *title, int length, char *curtain, const wchar_t *ext, int is_nde_string); void PlayList_append_withinfo_hidden(const wchar_t *filename, const wchar_t *title, int length, char *curtain/*, char *browser*/); void PlayList_getcurrent(wchar_t *filename, wchar_t *filetitle, wchar_t *filetitlenum); void PlayList_GetCurrentTitle(wchar_t *filetitle, int cchLen); void PlayList_setcurrent(const wchar_t *filename, wchar_t *filetitle); void PlayList_swap(int e1, int e2); int PlayList_setposition(int pos); int PlayList_advance(int byval); int PlayList_getPosition(); int PlayList_getNextPosition(); void PlayList_addfromdlg(const wchar_t *fns); // replace with api_playlistmanager void PlayList_refreshtitle(void); wchar_t *PlayList_gettitle(const wchar_t *filename, int useID3); const wchar_t *PlayList_GetCachedTitle(const wchar_t *filename); int PlayList_randpos(int); void PlayList_randomize(void); void PlayList_reverse(void); void PlayList_sort(int, int start_p); void PlayList_adddir(const wchar_t *path, int recurse); // returns 0 if path was invalid // replace with api_playlistmanager void PlayList_updaterandpos(void); void PlayList_makerelative(const wchar_t *listfile, wchar_t *filename, int useBase); int PlayList_getsonglength(int x); int PlayList_gettotallength(void); int PlayList_getcurrentlength(void); int PlayList_getselect(int); int PlayList_getselect2(int x, wchar_t *filename); void PlayList_setselect(int, int); void PlayList_setlastlen(int x); void PlayList_setitem(int x, const wchar_t *filename, wchar_t *filetitle); void PlayList_saveend(int start); void PlayList_restoreend(void); void PlayList_setcached(int x, int cached); int PlayList_getcached(int x); void PlayList_SetLastItem_RepeatCount( int count); int PlayList_getrepeatcount(int pos); void PlayList_terminate_lasthidden(void); void PlayList_SetLastItem_Range(unsigned long starttime, unsigned long endtime); unsigned long PlayList_GetItem_Start(int pos); unsigned long PlayList_GetItem_End(int pos); void PlayList_insert(int position, const wchar_t *filename); /************** *** pledit.c */ LRESULT CALLBACK PE_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); void pleditDlg(HWND, int); void plEditRefresh(void); void plEditSelect(int song); extern int pledit_disp_offs; void PE_Cmd(windowCommand *wc); /*************** *** pls.c */ void saveplsfn(const wchar_t *fn); int loadpls(HWND, int); int savepls(HWND hwnd); /************************ *** sa.c */ extern volatile int sa_curmode; void SpectralAnalyzer_Create(); void SpectralAnalyzer_Destroy(); void sa_setthread(int enabled); void sa_deinit(void); void sa_init(int numframes); int sa_add(char *values, int timestamp, int csa); char *sa_get(int timestamp, int csa, char data[75*2 + 8]); /************************ *** set.c */ void set_caption(int alt_cb, wchar_t *format, ...); void set_aot(int); void set_priority(void); void set_taskbar(void); void set_visopts(void); void do_caption_autoscroll(void); void set_pl_wnd_tooltip(void); void set_vid_wnd_tooltip(void); /*********************** *** shell.cpp */ HRESULT ResolveShortCut(HWND hwnd, LPCWSTR pszShortcutFile, LPWSTR pszPath); //void CreateShortCut(HWND hwnd, LPCSTR pszShortcutFile, LPCSTR pszExe, LPCSTR, int); void Shell_Free(void *p); /************************ *** skins.c */ BOOL _cleanupDirW(const wchar_t *dir); extern int g_skinloadedmanually, g_skinmissinggenff; void CreateDirectoryForFileW(wchar_t *fn, wchar_t *base); // shared for use with wlz files void Skin_Random(void); void Skin_Load(void); void Skin_CleanupZip(void); void Skin_CleanupAfterCrash(void); BOOL Skin_Check_Modern_Support(); int Skin_GetRegionPointList(int eq, int **points, int **counts); /* The indices of Skin_PLColors: 0 - text color - playlist 1 - text color - currently playing playlist entry 2 - background color - playlist 3 - background color - selected playlist entry 4 - text color - video window info, minibrowser info 5 - background - video window info, minibrowser info */ extern int Skin_PLColors[6], Skin_UseGenNums; extern char Skin_PLFont[128]; extern wchar_t Skin_PLFontW[128]; extern HWND skin_hwnd; #define N_CURSORS 29 extern HCURSOR Skin_Cursors[N_CURSORS]; /************************* *** splash.c */ void splashDlg(int wait_in_ms); /************************* *** stats.c */ void Stats_OnPlay(const wchar_t *playstring); void stats_write(void); // sets some final stats and writes to disk void stats_getuidstr(char *str); void stats_init(); void stats_save(); // just writes to disk /*********************** *** systray.c */ extern int systray_intray; void systray_minimize(wchar_t *tip); void systray_restore(void); /* ui.c */ extern int ui_songposition; extern int ui_songposition_dir; extern int ui_songposition_tts; extern int do_posbar_active; void ui_doscrolling(); void ui_handlemouseevent(int x, int y, int type, int stats); // x,y, -1=up,0=move,1=down, stats = kbstats void ui_reset(); void ui_drawtime(int time_elapsed, int mode); // mode=0 means called from timer, mode=1 forced /*********************** *** util.c */ LPCWSTR RepairMutlilineString(LPWSTR pszBuffer, INT cchBufferMax); void recent_add(const wchar_t *loc); int IsUrl(const char *url); //int IsCharSpace(char digit); //int IsCharSpaceW(wchar_t digit); int IsCharDigit(char digit); int IsCharDigitW(wchar_t digit); void mbprintf(char *file, int line, char *format, ...); void link_handledraw(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT link_handlecursor(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void link_startsubclass(HWND hwndDlg, UINT id); void myOpenURL(HWND, const wchar_t *url); void myOpenURLWithFallback(HWND, wchar_t *url, wchar_t *fallbackUrl); char *my_strdup(char *s); int geticonid(int x); int isInetAvailable(void); unsigned int getDay(void); const wchar_t *scanstr_backcW(const wchar_t *str, const wchar_t *toscan, const wchar_t *defval); void getViewport(RECT *r, HWND wnd, int full, RECT *sr); BOOL windowOffScreen(HWND hwnd, POINT pt); LPCWSTR BuildFullPath(LPCWSTR pszPathRoot, LPCWSTR pszPath, LPWSTR pszDest, INT cchDest); // INT ComparePath(LPCWSTR pszPath1, LPCWSTR pszPath2, LPCWSTR pszPathRoot); // BOOL DisabledWindow_OnMouseClick(HWND hwnd); // call it in WM_SETCURSOR /*************** *** functions related to uxtheme.dll */ #define ETDT_DISABLE 0x01 #define ETDT_ENABLE 0x02 #define ETDT_USETABTEXTURE 0x04 #define ETDT_ENABLETAB (ETDT_ENABLE | ETDT_USETABTEXTURE) #define ETDT_USEAEROWIZARDTABTEXTURE 0x08 #define ETDT_ENABLEAEROWIZARDTAB (ETDT_ENABLE | ETDT_USEAEROWIZARDTABTEXTURE) #define ETDT_VALIDBITS (ETDT_DISABLE | ETDT_ENABLE | ETDT_USETABTEXTURE | ETDT_USEAEROWIZARDTABTEXTURE) int IsWinXPTheme(void); void DoWinXPStyle(HWND tab); int IsAero(void); BOOL IsVista(void); BOOL IsVistaOrLower(void); BOOL IsWin8(void); HRESULT WAEnableThemeDialogTexture(HWND hwnd, DWORD dwFlags); /*************** *** lang.cpp */ HINSTANCE Lang_InitLangSupport(HINSTANCE, const GUID); void Lang_FollowUserDecimalLocale(void); void Lang_CleanupZip(void); void Lang_CleanupAfterCrash(void); void Lang_EndLangSupport(void); HINSTANCE Lang_FakeWinampLangHInst(HINSTANCE adjustedHInst); void Lang_LocaliseAgentOnTheFly(BOOL refresh); int extract_wlz_to_dir(wchar_t* readme_only_wlz_extraction, BOOL *skip); char *getString(UINT uID, char *str, size_t maxlen); wchar_t *getGUIDstr(const GUID, wchar_t *target); int LPMessageBox(HWND parent, UINT idMessage, UINT idTitle, UINT type); wchar_t *getStringW(UINT uID, wchar_t *str, size_t maxlen); #define LPCreateDialog(id, parent, proc) \ LPCreateDialogParam(id, parent, (DLGPROC)proc, 0) HWND LPCreateDialogParam(int id, HWND parent, DLGPROC proc, LPARAM param); #define LPDialogBox(id, parent, proc) \ LPDialogBoxParam(id, parent, (DLGPROC)proc, 0) INT_PTR LPDialogBoxParam(int id, HWND parent, DLGPROC proc, LPARAM param); #define LPDialogBoxW(id, parent, proc) \ LPDialogBoxParamW(id, parent, (DLGPROC)proc, 0) INT_PTR LPDialogBoxParamW(int id, HWND parent, DLGPROC proc, LPARAM param); #define LPCreateDialogW(id, parent, proc) \ LPCreateDialogParamW(id, parent, (DLGPROC)proc, 0) HWND LPCreateDialogParamW(int id, HWND parent, DLGPROC proc, LPARAM param); HMENU LPLoadMenu(UINT id); /*************** *** video.cpp */ extern int g_video_numaudiotracks; extern int g_video_curaudiotrack; void Browser_Create(); void Browser_Destroy(); extern wchar_t vidoutbuf_save[1024]; extern int is_fullscreen_video; int ShowVideoWindow(int init_state); void HideVideoWindow(int autoStop); LRESULT CALLBACK video_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); int video_isVideoPlaying(); int videoIsFullscreen(); void videoToggleFullscreen(); void videoForceFullscreenOff(); HWND video_Create(); /*************** *** video_ipc.cpp */ int WINAPI VideoIPCProcedure(int which, WPARAM data, LRESULT *returnValue); /*** ** videoui.c */ void videoui_handlemouseevent(int x, int y, int type, int stats); /*********************** *** vis.c */ int vis_running(); void vis_start(HWND, wchar_t*); void vis_stop(); void vsa_init(int numframes); void vsa_deinit(void); void vis_setinfo(int srate, int nch); int vsa_getmode(int *sp, int *wa); void vis_setprio(void); int vsa_add(void *data, int timestamp); int sa_add(char *values, int timestamp, int csa); void sa_addpcmdata(void *PCMData, int nch, int bps, int timestamp); void vsa_addpcmdata(void *PCMData, int nch, int bps, int timestamp); LRESULT CALLBACK VIS_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); extern HWND hVisWindow, hPLVisWindow; void vis_setextwindow(HWND hwnd); /*********************** *** rand.cpp */ int warand(); float warandf(); /******************* *** ipc.cpp */ LRESULT Main_OnIPC(HWND hwnd, int which, WPARAM data); LRESULT wa_register_ipc(WPARAM data); /******************* *** fullscreen.cpp */ void BeginFullscreenAppMonitor(); void EndFullscreenAppMonitor(); void restoreAOT(); void dropAOT(); /******************* *** main_mouse.cpp */ int Main_OnRButtonUp(HWND hwnd, int x, int y, UINT flags); int Main_OnLButtonUp(HWND hwnd, int x, int y, UINT flags); int Main_OnCaptureChanged(HWND hwnd); int Main_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags); int Main_OnLButtonDblClk(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags); int Main_OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags); /******************* *** main_nonclient.cpp */ UINT Main_OnNCHitTest(HWND hwnd, int x, int y); BOOL Main_OnNCActivate(HWND hwnd, BOOL fActive, HWND hwndActDeact, BOOL fMinimized); UINT Main_OnNCCalcSize(HWND hwnd, BOOL fCalcValidRects, NCCALCSIZE_PARAMS * lpcsp); /******************* *** main_display.cpp */ int Main_OnGetText(wchar_t *text, int sizeCch); int Main_OnDisplayChange(HWND hwnd); int Main_OnQueryNewPalette(HWND hwnd); int Main_OnPaletteChanged(HWND hwnd, HWND hwndPaletteChange); /******************* *** main_buttons.cpp */ int Main_OnButton1(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); int Main_OnButton2(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); int Main_OnButton3(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); int Main_OnButton4(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); int Main_OnButton5(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); /******************* *** main_close.cpp */ void Main_OnEndSession(HWND hwnd, BOOL fEnding); int Main_OnClose(HWND hwnd); int Main_OnDestroy(HWND hwnd); /******************* *** main_init.cpp */ void RegisterWinamp(); BOOL InitApplication(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE hInstance, int nCmdShow); /******************* *** browser.cpp */ /* void LaunchBrowser(const char *url); void OpenBrowser(); void Browser_toggleVisible(int showing); void CloseBrowser(); void Browser_init(); void Browser_kill(); */ /******************* *** ExternalCOM.cpp */ DISPID __cdecl JSAPI1_GenerateUniqueDispatchId(); HRESULT __cdecl JSAPI1_Initialize(); HRESULT __cdecl JSAPI1_Uninitialize(); HRESULT __cdecl JSAPI1_SkinChanged(); HRESULT __cdecl JSAPI1_CurrentTitleChanged(); /******************* *** SkinUtils.cpp */ const char *GetFontName(); const wchar_t *GetFontNameW(); int GetFontSize(); /*** *** ASXv2.cpp */ void loadasxv2fn(const wchar_t *filename, int whattodo); /******************* *** Wasabi.cpp */ void Wasabi_Load(); void Wasabi_Unload(); void Wasabi_FindSystemServices(); void Wasabi_ForgetSystemServices(); /******************* *** W5S.cpp */ void w5s_init(); void w5s_deinit(); /******************* *** vu.cpp */ void vu_init(int numframes, int srate); void vu_deinit(); void VU_Create(); void VU_Destroy(); int vu_add(char *values, int timestamp); int export_vu_get(int channel); void calcVuData(unsigned char *out, char *data, const int channels, const int bits); // PlayQueue.cpp int PlayQueue_OnEOF(); // paths.cpp BOOL UtilGetSpecialFolderPath(HWND hwnd, TCHAR *path, int folder); // cmdline.cpp void GetParameter(const wchar_t *commandLine, wchar_t *yourBuffer, size_t yourBufferSize); // unsorted void readwrite_client_uid(int isWrite, wchar_t uid_str[64]); BOOL read_compatmode(); extern char metric_plugin_list[]; char *export_sa_get_deprecated(); char *export_sa_get(char data[75*2 + 8]); void export_sa_setreq(int); extern HWND jump_hwnd, jump_hwnd2; wchar_t *remove_urlcodesW(wchar_t *p); int PlayList_get_lastlen(); HBITMAP draw_LBitmap(LPCTSTR bmname, const wchar_t *filename); extern void draw_mb_info(char *t, int erase); extern void FormString(char *in, char *out, int maxlen); extern int plmodified, plcleared, plneedsave; extern int g_has_deleted_current; void peui_reset(HWND hwnd); extern int volatile sa_override; extern int deferring_show; extern int g_showcode; extern int eq_startuphack, pe_startuphack; extern int g_skinloadedmanually; void vis_init(); void resizeMediaWnd (HWND hwnd); extern int g_skinloadedmanually; int writeEQfile_init(wchar_t *file, char *name, unsigned char *tab); extern int playlist_open(HWND hwnd); extern int setPlRating(int rating); extern int setCurrentRating(int rating); extern int got_ml; int peui_isrbuttoncaptured(); extern void makeurlcodes(char *in, char *out); extern HIMAGELIST toolbarIcons; extern struct ITaskbarList3* pTaskbar3; void OnTaskbarButtonCreated(BOOL force); LRESULT Main_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct); LRESULT Main_OnWASystray(HWND hwnd, int id); LRESULT Main_OnWAMPEGEOF(HWND hwnd); LRESULT Main_OnSize(HWND hwnd, UINT state, int cx, int cy); LRESULT Main_OnTimer(HWND hwnd, UINT id); LRESULT Main_OnDropFiles(HWND hwnd, HDROP hdrop); LRESULT Main_OnCopyData(HWND hwnd, COPYDATASTRUCT *cds); extern int m_converting; void DoInstall(int is_install); wchar_t *ParseParameters(wchar_t *lpszCmdParam, int *bAdd, int *bBookmark, int *bHandle, int *nCmdShow, int *bCommand, int *bCmdParam, int *bAllowCompat); #ifdef BETA void ParseParametersExpired(wchar_t *lpszCmdParam); #endif void reg_associated_filetypes(int force); wchar_t *FindNextCommand(wchar_t *cmdLine); void parseCmdLine(wchar_t *cmdline, HWND hwnd); wchar_t *CheckFileBase(wchar_t *lpszCmdParam, HWND hwnd_other, int *exit, int mode); #define CheckSkin(lpszCmdParam, hwnd_other, exit) CheckFileBase(lpszCmdParam, hwnd_other, exit, 0) #define CheckLang(lpszCmdParam, hwnd_other, exit) CheckFileBase(lpszCmdParam, hwnd_other, exit, 1) void LoadPathsIni(); LRESULT Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); extern int g_BookmarkTop, g_SkinTop, g_LangTop; extern int g_open_ml_item_in_pe; void RegisterConfigGroups(); void CopyExtendedFileInfo(const wchar_t *source, const wchar_t *destination); int ResizeComboBoxDropDown(HWND hwndDlg, UINT id, const char* str, int width); int ResizeComboBoxDropDownW(HWND hwndDlg, UINT id, const wchar_t *str, int width); // creditsrend.c void render_togglecredits(); void render_quit(void); void render_render(unsigned char *framebuffer, HDC hdc); void render_init(int w, int h, char *pal); // InW.cpp int InW_IsOurFile(In_Module *mod, const wchar_t *filename); int InW_Play(In_Module *mod, const wchar_t *filename); int InW_InfoBox(In_Module *mod, const wchar_t *filename, HWND parent); void InW_GetFileInfo(In_Module *mod, const wchar_t *filename, wchar_t *title, int *length); // conversions.cpp void Float32_To_Int16_Clip(void *destinationBuffer, signed int destinationStride, void *sourceBuffer, signed int sourceStride, unsigned int count); void Float32_To_Int24_Clip(void *destinationBuffer, signed int destinationStride, void *sourceBuffer, signed int sourceStride, unsigned int count); HANDLE DuplicateCurrentThread(); /* dwm.cpp */ extern BOOL atti_present; void DisableVistaPreview(); void DoTheVistaVideoDance(); void RegisterThumbnailTab(HWND hWnd); void UnregisterThumbnailTab(HWND hWnd); void OnIconicThumbnail(int width, int height); void OnThumbnailPreview(); void RefreshIconicThumbnail(); /* handler.cpp */ int HandleFilename(const wchar_t *filename); /* IVideoD3DOSD.cpp */ HMODULE FindD3DX9(); /* AlbumArt.cpp */ void CleanNameForPath(wchar_t *name); /* application.cpp */ BOOL IsDirectMouseWheelMessage(const UINT uMsg); BOOL DirectMouseWheel_EnableConvertToMouseWheel(HWND hwnd, BOOL enable); BOOL DirectMouseWheel_IsConvertToMouseWheelEnabled(HWND hwnd); BOOL DirectMouseWheel_ProcessDialogMessage(HWND hwnd, unsigned int uMsg, WPARAM wParam, LPARAM lParam, const int controls[], int controlslen); HWND ActiveChildWindowFromPoint(HWND hwnd, POINTS cursor_s, const int *controls, size_t controlsCount); #ifdef __cplusplus } // extern "C" #endif #endif