aboutsummaryrefslogtreecommitdiff
path: root/Src/Winamp/main_display.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Winamp/main_display.cpp')
-rw-r--r--Src/Winamp/main_display.cpp122
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;
+}