aboutsummaryrefslogtreecommitdiff
path: root/Src/Winamp/draw_vw.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Winamp/draw_vw.cpp')
-rw-r--r--Src/Winamp/draw_vw.cpp231
1 files changed, 231 insertions, 0 deletions
diff --git a/Src/Winamp/draw_vw.cpp b/Src/Winamp/draw_vw.cpp
new file mode 100644
index 00000000..c8ec916f
--- /dev/null
+++ b/Src/Winamp/draw_vw.cpp
@@ -0,0 +1,231 @@
+/** (c) Nullsoft, Inc. C O N F I D E N T I A L
+ ** Filename:
+ ** Project:
+ ** Description:
+ ** Author:
+ ** Created:
+ **/
+#include "Main.h"
+#include "draw.h"
+#include "resource.h"
+#include "WADrawDC.h"
+
+HBITMAP vwMainBM;
+extern "C" int vw_init=0;
+
+
+
+void draw_vw_init()
+{
+ if (vw_init)
+ draw_vw_kill();
+ vw_init=1;
+ vwMainBM = draw_LBitmap(MAKEINTRESOURCE(IDB_VIDEO),L"video.bmp");
+}
+
+void draw_vw_kill()
+{
+ if (!vw_init)
+ return;
+ DeleteObject(vwMainBM);
+
+}
+
+void draw_vw_mbuts(int whichb)
+{
+ if (!disable_skin_borders && hVideoWindow && vw_init)
+ {
+ int numb=5;
+ int x;
+ WADrawDC hdcout(hVideoWindow);
+
+ do_palmode(hdcout);
+ setSrcBM(vwMainBM);
+ for (x = 0; x < numb; x ++)
+ {
+ int nx=9+x*15;
+ int ny=51;
+ if (x==whichb)
+ {
+ nx+=158-9;
+ ny=42;
+ }
+ BitBlt(hdcout,9+x*15,config_video_height-29,15,18,bmDC,nx,ny,SRCCOPY);
+ }
+ unsetSrcBM();
+ }
+}
+
+void draw_vw_tbar(int state)
+{
+ if (!disable_skin_borders && hVideoWindow && vw_init)
+ {
+ WADrawDC hdcout(hVideoWindow);
+ state = state?0:21;
+ do_palmode(hdcout);
+ setSrcBM(vwMainBM);
+ {
+ int nt;
+ int xp=0;
+ BitBlt(hdcout,xp,0,25,20,bmDC,0,state,SRCCOPY);
+ xp+=25;
+ nt = (config_video_width - 25 - 25 - 100)/25;
+ if (nt)
+ {
+ if (nt&1)
+ {
+ BitBlt(hdcout,xp,0,12,20,bmDC,127,state,SRCCOPY);
+ xp+=12;
+ }
+ nt/=2;
+ while (nt-->0)
+ {
+ BitBlt(hdcout,xp,0,25,20,bmDC,127,state,SRCCOPY);
+ xp+=25;
+ }
+ }
+ BitBlt(hdcout,xp,0,100,20,bmDC,26,state,SRCCOPY);
+ xp+=100;
+ nt = (config_video_width - 25 - 25 - 100)/25;
+ if (nt)
+ {
+ if (nt&1)
+ {
+ BitBlt(hdcout,xp,0,13,20,bmDC,127,state,SRCCOPY);
+ xp+=13;
+ }
+ nt/=2;
+ while (nt-->0)
+ {
+ BitBlt(hdcout,xp,0,25,20,bmDC,127,state,SRCCOPY);
+ xp+=25;
+ }
+ }
+ nt = (config_video_width - 25 -25 - 100) %25;
+ if (nt)
+ {
+ StretchBlt(hdcout,xp,0,nt,20,bmDC,127,state,25,20,SRCCOPY);
+ xp+=nt;
+ }
+ BitBlt(hdcout,xp,0,25,20,bmDC,153,state,SRCCOPY);
+ }
+ unsetSrcBM();
+ }
+}
+
+void draw_vw(HDC hdcout)
+{
+ if (!hVideoWindow || !vw_init)
+ return;
+ do_palmode(hdcout);
+ draw_vw_tbar(GetForegroundWindow()==hVideoWindow?1:(config_hilite?0:1));
+ if (!disable_skin_borders)
+ {
+ setSrcBM(vwMainBM);
+ {
+ int y=(config_video_height-20-38)/29;
+ int yp=20,x,xp;
+ while (y-->0)
+ {
+ BitBlt(hdcout,0,yp,11,29,bmDC,127,42,SRCCOPY);
+ BitBlt(hdcout,config_video_width-8,yp,8,29,bmDC,139,42,SRCCOPY);
+ yp += 29;
+ }
+ y=(config_video_height-20-38)%29;
+ if (y)
+ {
+ StretchBlt(hdcout,0,yp,11,y,bmDC,127,42,11,29,SRCCOPY);
+ StretchBlt(hdcout,config_video_width-8,yp,8,y,bmDC,139,42,8,29,SRCCOPY);
+ yp += y;
+ }
+ BitBlt(hdcout,0,yp,125,38,bmDC,0,42,SRCCOPY);
+ x=(config_video_width-125-125)/25;
+ xp=125;
+ while (x-->0)
+ {
+ BitBlt(hdcout,xp,yp,25,38,bmDC,127,81,SRCCOPY);
+ xp+=25;
+ }
+ x=(config_video_width-125-125)%25;
+ if (x)
+ {
+ StretchBlt(hdcout,xp,yp,x,38,bmDC,127,81,25,38,SRCCOPY);
+ xp+=x;
+ }
+ BitBlt(hdcout,xp,yp,125,38,bmDC,0,81,SRCCOPY);
+ draw_vw_info(NULL,0);
+ }
+ unsetSrcBM();
+ }
+}
+
+wchar_t draw_vw_info_lastb[512] = {0};
+void draw_vw_info(wchar_t *t, int erase)
+{
+ if (!disable_skin_borders && hVideoWindow&&vw_init)
+ {
+ WADrawDC hdcout(hVideoWindow);
+ if (!t) t=draw_vw_info_lastb;
+ else lstrcpynW(draw_vw_info_lastb,t,sizeof(draw_vw_info_lastb));
+
+ if (erase)
+ {
+ //int y=(config_video_height-20-38)/29;
+ int yp=config_video_height-38,x,xp;
+ do_palmode(hdcout);
+ setSrcBM(vwMainBM);
+ BitBlt(hdcout,0,yp,125,38,bmDC,0,42,SRCCOPY);
+ x=(config_video_width-125-125)/25;
+ xp=125;
+ while (x-->0)
+ {
+ BitBlt(hdcout,xp,yp,25,38,bmDC,127,81,SRCCOPY);
+ xp+=25;
+ }
+ x=(config_video_width-125-125)%25;
+ if (x)
+ {
+ StretchBlt(hdcout,xp,yp,x,38,bmDC,127,81,25,38,SRCCOPY);
+ xp+=x;
+ }
+ BitBlt(hdcout,xp,yp,125,38,bmDC,0,81,SRCCOPY);
+ unsetSrcBM();
+ }
+
+ RECT r={92,config_video_height-27,config_video_width-25,config_video_height-13};
+ HGDIOBJ oldFont=SelectObject(hdcout,mfont);
+ SetTextColor(hdcout,Skin_PLColors[4]);
+ SetBkColor(hdcout,Skin_PLColors[5]);
+ DrawTextW(hdcout,t,-1,&r,DT_SINGLELINE|DT_LEFT|DT_NOPREFIX);
+ SelectObject(hdcout,oldFont);
+ }
+}
+
+
+void draw_paint_vw(HWND hwnd)
+{
+ if (!hVideoWindow || !vw_init)
+ return;
+ PAINTSTRUCT ps;
+ RECT r;
+ EnterCriticalSection(&g_mainwndcs);
+ draw_vw(BeginPaint(hwnd,&ps));
+ r=ps.rcPaint;
+ EndPaint(hwnd,&ps);
+ LeaveCriticalSection(&g_mainwndcs);
+}
+
+void draw_vw_tbutton(int b3)
+{
+ if (!disable_skin_borders && hVideoWindow && vw_init)
+ {
+ WADrawDC hdcout(hVideoWindow);
+ do_palmode(hdcout);
+ setSrcBM(vwMainBM);
+ if (!b3)
+ BitBlt(hdcout,config_video_width-11,3,9,9,bmDC,167,3,SRCCOPY);
+ else
+ BitBlt(hdcout,config_video_width-11,3,9,9,bmDC,148,42,SRCCOPY);
+ unsetSrcBM();
+ }
+} \ No newline at end of file