Mercurial > mplayer.hg
annotate gui/mplayer/menu.c @ 23793:b0a7e53e8487
Restore vo_mga check, it is Linux-only.
author | diego |
---|---|
date | Wed, 18 Jul 2007 09:15:34 +0000 |
parents | e564b9cd7290 |
children | 1cb14b091f46 |
rev | line source |
---|---|
23077 | 1 |
2 #include <stdlib.h> | |
3 #include <stdio.h> | |
4 #include <inttypes.h> | |
5 | |
6 #include "app.h" | |
23154
e564b9cd7290
Fix several implicit declarations of functions warnings.
diego
parents:
23077
diff
changeset
|
7 #include "gmplayer.h" |
23077 | 8 #include "../config.h" |
9 #include "../help_mp.h" | |
10 #include "../mp_msg.h" | |
11 | |
12 #include "widgets.h" | |
13 | |
14 unsigned char * mplMenuDrawBuffer = NULL; | |
15 int mplMenuRender = 1; | |
16 int mplMenuItem = -1; | |
17 int mplOldMenuItem = -1; | |
18 int mplMenuX,mplMenuY; | |
19 static int mplMenuIsInitialized = 0; | |
20 | |
21 void mplHideMenu( int mx,int my,int w ); | |
22 | |
23 void mplMenuDraw( void ) | |
24 { | |
25 uint32_t * buf = NULL; | |
26 uint32_t * drw = NULL; | |
27 int x,y,tmp; | |
28 | |
29 if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; | |
30 if ( !mplMenuRender && !appMPlayer.menuWindow.Visible ) return; | |
31 | |
32 if ( mplMenuRender || mplMenuItem != mplOldMenuItem ) | |
33 { | |
34 memcpy( mplMenuDrawBuffer,appMPlayer.menuBase.Bitmap.Image,appMPlayer.menuBase.Bitmap.ImageSize ); | |
35 // --- | |
36 if ( mplMenuItem != -1 ) | |
37 { | |
38 buf=(uint32_t *)mplMenuDrawBuffer; | |
39 drw=(uint32_t *)appMPlayer.menuSelected.Bitmap.Image; | |
40 for ( y=appMPlayer.MenuItems[ mplMenuItem ].y; y < appMPlayer.MenuItems[ mplMenuItem ].y + appMPlayer.MenuItems[ mplMenuItem ].height; y++ ) | |
41 for ( x=appMPlayer.MenuItems[ mplMenuItem ].x; x < appMPlayer.MenuItems[ mplMenuItem ].x + appMPlayer.MenuItems[ mplMenuItem ].width; x++ ) | |
42 { | |
43 tmp=drw[ y * appMPlayer.menuSelected.width + x ]; | |
44 if ( tmp != 0x00ff00ff ) buf[ y * appMPlayer.menuBase.width + x ]=tmp; | |
45 } | |
46 } | |
47 mplOldMenuItem=mplMenuItem; | |
48 // --- | |
49 wsConvert( &appMPlayer.menuWindow,mplMenuDrawBuffer,appMPlayer.menuBase.Bitmap.ImageSize ); | |
50 mplMenuRender=0; | |
51 } | |
52 wsPutImage( &appMPlayer.menuWindow ); | |
53 } | |
54 | |
55 void mplMenuMouseHandle( int X,int Y,int RX,int RY ) | |
56 { | |
57 int x,y,i; | |
58 | |
59 if ( !appMPlayer.menuBase.Bitmap.Image ) return; | |
60 | |
61 mplMenuItem=-1; | |
62 x=RX - appMPlayer.menuWindow.X; | |
63 y=RY - appMPlayer.menuWindow.Y; | |
64 if ( ( x < 0 ) || ( y < 0 ) || ( x > appMPlayer.menuBase.width ) || ( y > appMPlayer.menuBase.height ) ) | |
65 { | |
66 wsPostRedisplay( &appMPlayer.menuWindow ); | |
67 return; | |
68 } | |
69 | |
70 for( i=0;i<=appMPlayer.NumberOfMenuItems;i++ ) | |
71 { | |
72 if ( wgIsRect( x,y, | |
73 appMPlayer.MenuItems[i].x,appMPlayer.MenuItems[i].y, | |
74 appMPlayer.MenuItems[i].x+appMPlayer.MenuItems[i].width,appMPlayer.MenuItems[i].y+appMPlayer.MenuItems[i].height ) ) { mplMenuItem=i; break; } | |
75 } | |
76 wsPostRedisplay( &appMPlayer.menuWindow ); | |
77 } | |
78 | |
79 void mplShowMenu( int mx,int my ) | |
80 { | |
81 int x,y; | |
82 | |
83 if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; | |
84 | |
85 x=mx; | |
86 if ( x + appMPlayer.menuWindow.Width > wsMaxX ) x=wsMaxX - appMPlayer.menuWindow.Width - 1 + wsOrgX; | |
87 y=my; | |
88 if ( y + appMPlayer.menuWindow.Height > wsMaxY ) y=wsMaxY - appMPlayer.menuWindow.Height - 1 + wsOrgY; | |
89 | |
90 mplMenuX=x; mplMenuY=y; | |
91 | |
92 mplMenuItem = 0; | |
93 | |
94 wsMoveWindow( &appMPlayer.menuWindow,False,x,y ); | |
95 wsMoveTopWindow( wsDisplay,appMPlayer.menuWindow.WindowID ); | |
96 wsSetLayer( wsDisplay,appMPlayer.menuWindow.WindowID,1 ); | |
97 mplMenuRender=1; | |
98 wsVisibleWindow( &appMPlayer.menuWindow,wsShowWindow ); | |
99 wsPostRedisplay( &appMPlayer.menuWindow ); | |
100 } | |
101 | |
102 void mplHideMenu( int mx,int my,int w ) | |
103 { | |
104 int x,y,i=mplMenuItem; | |
105 | |
106 if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; | |
107 | |
108 x=mx-mplMenuX; | |
109 y=my-mplMenuY; | |
110 // x=RX - appMPlayer.menuWindow.X; | |
111 // y=RY - appMPlayer.menuWindow.Y; | |
112 | |
113 wsVisibleWindow( &appMPlayer.menuWindow,wsHideWindow ); | |
114 | |
115 if ( ( x < 0 ) || ( y < 0 ) ) return; | |
116 | |
117 // printf( "---------> %d %d,%d\n",i,x,y ); | |
118 // printf( "--------> mi: %d,%d %dx%d\n",appMPlayer.MenuItems[i].x,appMPlayer.MenuItems[i].y,appMPlayer.MenuItems[i].width,appMPlayer.MenuItems[i].height ); | |
119 if ( wgIsRect( x,y, | |
120 appMPlayer.MenuItems[i].x,appMPlayer.MenuItems[i].y, | |
121 appMPlayer.MenuItems[i].x+appMPlayer.MenuItems[i].width, | |
122 appMPlayer.MenuItems[i].y+appMPlayer.MenuItems[i].height ) ) | |
123 { | |
124 mplEventHandling( appMPlayer.MenuItems[i].msg,(float)w ); | |
125 } | |
126 } | |
127 | |
128 void mplMenuInit( void ) | |
129 { | |
130 | |
131 if ( mplMenuIsInitialized || !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; | |
132 | |
133 appMPlayer.menuBase.x=0; | |
134 appMPlayer.menuBase.y=0; | |
135 | |
136 if ( ( mplMenuDrawBuffer = calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL ) | |
137 { | |
138 #ifdef DEBUG | |
139 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[menu.h] %s",MSGTR_NEMFMR ); | |
140 #endif | |
141 gtkMessageBox( GTK_MB_FATAL,MSGTR_NEMFMR ); | |
142 return; | |
143 } | |
144 | |
145 wsCreateWindow( &appMPlayer.menuWindow, | |
146 appMPlayer.menuBase.x,appMPlayer.menuBase.y,appMPlayer.menuBase.width,appMPlayer.menuBase.height, | |
147 wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,wsOverredirect|wsHideFrame|wsMaxSize|wsMinSize|wsHideWindow,"MPlayer menu" ); | |
148 | |
149 wsSetShape( &appMPlayer.menuWindow,appMPlayer.menuBase.Mask.Image ); | |
150 | |
151 #ifdef DEBUG | |
152 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[menu.h] menu: 0x%x\n",(int)appMPlayer.menuWindow.WindowID ); | |
153 #endif | |
154 | |
155 mplMenuIsInitialized=1; | |
156 appMPlayer.menuWindow.ReDraw=mplMenuDraw; | |
157 // appMPlayer.menuWindow.MouseHandler=mplMenuMouseHandle; | |
158 // appMPlayer.menuWindow.KeyHandler=mplMainKeyHandle; | |
159 mplMenuRender=1; wsPostRedisplay( &appMPlayer.menuWindow ); | |
160 } |