diff options
Diffstat (limited to 'Src/Winamp/draw_vw.cpp')
-rw-r--r-- | Src/Winamp/draw_vw.cpp | 231 |
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 |