123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- #include "Main.h"
- #include "video.h"
- #include "resource.h"
- #define inreg(x,y,x2,y2) \
- ((mouse_x <= ( x2 ) && mouse_x >= ( x ) && \
- mouse_y <= ( y2 ) && mouse_y >= ( y )))
- static int mouse_x, mouse_y, mouse_type, mouse_stats;
- static int which_cap=0;
- enum { NO_CAP,TITLE_CAP,TB_CAP, SZ_CAP,VW_CAP};
- static void do_titlebar();
- static void do_titlebuttons();
- static void do_size();
- static void do_vw();
- void videoui_handlemouseevent(int x, int y, int type, int stats)
- {
- mouse_x = x;
- mouse_y = y;
- mouse_type = type;
- mouse_stats = stats;
- switch (which_cap)
- {
- case VW_CAP: do_vw(); return;
- case TITLE_CAP: do_titlebar();return;
- case TB_CAP: do_titlebuttons();return;
- case SZ_CAP: do_size(); return;
- default: break;
- }
- do_vw();
- do_titlebuttons();
- do_size();
- do_titlebar();
- }
- static void do_titlebar()
- {
- if (which_cap == TITLE_CAP || (!which_cap && (config_easymove || mouse_y < 14)))
- {
- static int clickx, clicky;
- switch (mouse_type)
- {
- case 1:
- {
- which_cap=TITLE_CAP;
- clickx=mouse_x;
- clicky=mouse_y;
- }
- break;
- case -1:
- which_cap=0;
- break;
- case 0:
- if (which_cap == TITLE_CAP && mouse_stats & MK_LBUTTON)
- {
- POINT p = { mouse_x, mouse_y};
- ClientToScreen(hVideoWindow,&p);
- p.x-=clickx;
- p.y-=clicky;
- SendMessageW(hVideoWindow,WM_USER+0x100,1,(LPARAM)&p);
- }
- break;
- }
- }
- }
- static void do_titlebuttons()
- {
- int w=0;
- w=inreg(config_video_width-10,3,config_video_width-1,3+9)?1:0;
- if (w) // kill button
- {
- if (mouse_type == -1 && which_cap == TB_CAP)
- {
- which_cap=0;
- draw_vw_tbutton(0);
- SendMessageW(hMainWindow,WM_COMMAND,WINAMP_OPTIONS_VIDEO,0);
- }
- else if (mouse_stats & MK_LBUTTON)
- {
- which_cap=TB_CAP;
- draw_vw_tbutton(w?1:0);
- }
- }
- else if (which_cap == TB_CAP)
- {
- which_cap=0;
- draw_vw_tbutton(0);
- }
- }
- static void do_vw()
- {
- HWND videoGetHwnd();
- int w=0;
- w=inreg(9,config_video_height-29,89,config_video_height-11)?1:0;
- if (w)
- {
- w=(mouse_x-9)/15;
- if (mouse_type == -1 && which_cap == VW_CAP)
- {
- which_cap=0;
- draw_vw_mbuts(-1);
- switch (w)
- {
- case 0:
- videoGoFullscreen();
- break;
- case 1:
- if (videoGetHwnd()) SendMessageW(videoGetHwnd(),WM_COMMAND,ID_VIDEOWND_ZOOM100,0);
- break;
- case 2:
- if (videoGetHwnd()) SendMessageW(videoGetHwnd(),WM_COMMAND,ID_VIDEOWND_ZOOM200,0);
- break;
- case 3:
- SendMessageW(hMainWindow,WM_COMMAND,WINAMP_VIDEO_TVBUTTON,0);
- break;
- case 4:
- // menu
- if (videoGetHwnd()) SendMessageW(videoGetHwnd(),WM_RBUTTONUP,0,0);
- break;
- }
- }
- else if (mouse_stats & MK_LBUTTON)
- {
- which_cap=VW_CAP;
- draw_vw_mbuts(w);
- }
- }
- else if (which_cap == VW_CAP)
- {
- which_cap=0;
- draw_vw_mbuts(-1);
- }
- }
- static void do_size()
- {
- if (which_cap == SZ_CAP || (!which_cap &&
- mouse_x > config_video_width-20 && mouse_y > config_video_height-20 &&
- ((config_video_width-mouse_x + config_video_height-mouse_y) <= 30)))
- {
- static int dx,dy;
- if (!which_cap && mouse_type == 1)
- {
- dx=config_video_width-mouse_x;
- dy=config_video_height-mouse_y;
- which_cap=SZ_CAP;
- }
- if (which_cap == SZ_CAP)
- {
- int x,y;
- if (mouse_type == -1)
- {
- which_cap=0;
- }
- x=mouse_x + dx;
- y=mouse_y + dy;
- int old_x = x;
- int old_y = y;
- if (config_video_width != x || config_video_height != y) // don't bother resizing if we're at the current size already.
- {
- if (x >= GetSystemMetrics(SM_CXSCREEN)) x = GetSystemMetrics(SM_CXSCREEN)-24;
- if (y >= GetSystemMetrics(SM_CYSCREEN)) y = GetSystemMetrics(SM_CYSCREEN)-28;
- if (!config_embedwnd_freesize)
- {
- x += 24;
- x -= x%25;
- y += 28;
- y -= y%29;
- }
- if (x < 275) x = 275;
- if (y < 20+38+29+29) y = 20+38+29+29;
- //config_video_width = x;
- //config_video_height= y;
-
- if (!((old_x < config_video_width && x > config_video_width)
- || (old_y < config_video_height && y > config_video_height))) // don't snap out a size if we're moving the mouse inward (video might not have started snapped)
- {
- SetExteriorSize(x,y);
- //SetWindowPos(hVideoWindow,0,0,0,x,y,SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);
- {
- HDC hdc=GetWindowDC(hVideoWindow);
- draw_vw(hdc);
- ReleaseDC(hVideoWindow,hdc);
- }
- }
- }
- }
- }
- }
|