diff options
Diffstat (limited to 'Src/Winamp/main_display.cpp')
-rw-r--r-- | Src/Winamp/main_display.cpp | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/Src/Winamp/main_display.cpp b/Src/Winamp/main_display.cpp new file mode 100644 index 00000000..ddc4296c --- /dev/null +++ b/Src/Winamp/main_display.cpp @@ -0,0 +1,122 @@ +/** (c) Nullsoft, Inc. C O N F I D E N T I A L + ** Filename: + ** Project: + ** Description: + ** Author: + ** Created: + **/ +#include "Main.h" +#include "wa_dlg.h" +#include "../nu/AutoChar.h" +#include "resource.h" + +extern "C" extern int g_skinloadedmanually; + +int Main_OnGetText(wchar_t *text, int sizeCch) +{ + size_t rem; + StringCchCopyExW(text, sizeCch, caption, 0, &rem, 0); + return (int)sizeCch-rem; + +} +// evil 256 color mode windows palette handling +int Main_OnQueryNewPalette(HWND hwnd) +{ + if (draw_hpal) { // hPal is NULL if we're in hicolor + HDC hdc = GetWindowDC(hwnd); + SelectPalette(hdc,draw_hpal,FALSE); + RealizePalette(hdc); + InvalidateRect(hwnd,NULL,FALSE); + ReleaseDC(hwnd,hdc); + } + return 1; +} + +// more 256 color windows palette handling +int Main_OnPaletteChanged(HWND hwnd, HWND hwndPaletteChange) +{ + if (draw_hpal) + { + HDC hdc = GetWindowDC(hwnd); + SelectPalette(hdc,draw_hpal,FALSE); + RealizePalette(hdc); + UpdateColors(hdc); + ReleaseDC(hwnd,hdc); + } + return 1; +} + +// displaychange handling. This reinitializes bitmaps, to use optimal storage format +// depending on mode (DIB or DDB) +int Main_OnDisplayChange(HWND hwnd) +{ + int t=0; + if (g_skinloadedmanually) + { + Skin_Load(); + } + + if (g_skinmissinggenff) + { + wchar_t msg[512] = {0}; + StringCchPrintfW(msg, 512, getStringW(IDS_NO_MODERN_SKIN_SUPPORT, NULL, 0), config_skin); + MessageBoxW(NULL, msg, getStringW(IDS_SKIN_LOAD_ERROR, NULL, 0), MB_ICONWARNING | MB_OK | MB_TOPMOST); + } + + draw_setnoupdate(1); + draw_init(); + draw_clutterbar(0); + draw_shuffle(config_shuffle,0); + draw_eject(0); + draw_eqplbut(config_eq_open,0,config_pe_open,0); + draw_repeat(config_repeat,0); + draw_buttonbar(-1); + draw_volumebar(config_volume,0); + draw_panbar(config_pan,0); + draw_songname(L"",&t,0); + draw_playicon(playing?paused?4:1:2); + draw_tbar(config_hilite?(GetForegroundWindow() == hMainWindow?1:0):1, config_windowshade,eggstat); + + draw_monostereo(-1); + if (playing) + { + draw_bitmixrate(-1,-1); + } + + draw_setnoupdate(0); + draw_songname(FileTitle,&ui_songposition,playing?in_getlength():PlayList_getcurrentlength()); + + // tell other windows + if (IsWindow(hVideoWindow)) + SendMessageW(hVideoWindow, WM_DISPLAYCHANGE,0,0); + if (IsWindow(hEQWindow)) + SendMessageW(hEQWindow, WM_DISPLAYCHANGE,0,0); + if (IsWindow(hPLWindow)) + SendMessageW(hPLWindow, WM_DISPLAYCHANGE,0,0); + /* + if (IsWindow(hMBWindow)) + SendMessageW(hVideoWindow, WM_DISPLAYCHANGE,0,0); + */ + if (IsWindow(hExternalVisWindow)) + SendMessageW(hExternalVisWindow, WM_DISPLAYCHANGE,0,0); + + SetTimer(hMainWindow, 101, 250, NULL); // set_aot(-1); + + InvalidateRect(hwnd,NULL,FALSE); + //UpdateWindow(hwnd); + + EnterCriticalSection(&embedcs); + { + embedWindowState *p =embedwndlist; + while (p) + { + PostMessageW(p->me,WM_DISPLAYCHANGE,0,0); + p=p->link; + } + } + + LeaveCriticalSection(&embedcs); + + PostMessageW(hMainWindow, WM_WA_IPC, 0, IPC_SKIN_CHANGED); + return 1; +} |