1693
|
1
|
|
2 unsigned char * mplMenuDrawBuffer = NULL;
|
|
3 int mplMenuRender = 1;
|
|
4 int mplMenuItem = -1;
|
|
5 int mplOldMenuItem = -1;
|
|
6 int mplMenuX,mplMenuY;
|
|
7
|
|
8 void mplHideMenu( int mx,int my );
|
|
9
|
|
10 void mplMenuDraw( wsParamDisplay )
|
|
11 {
|
|
12 unsigned long * buf = NULL;
|
|
13 unsigned long * drw = NULL;
|
|
14 unsigned long x,y,tmp;
|
|
15
|
|
16 if ( !appMPlayer.menuBase.Bitmap.Image ) return;
|
|
17 if ( !appMPlayer.menuWindow.Visible ) return;
|
|
18
|
|
19 if ( mplMenuRender || mplMenuItem != mplOldMenuItem )
|
|
20 {
|
|
21 memcpy( mplMenuDrawBuffer,appMPlayer.menuBase.Bitmap.Image,appMPlayer.menuBase.Bitmap.ImageSize );
|
|
22 // ---
|
|
23 if ( mplMenuItem != -1 )
|
|
24 {
|
|
25 buf=(unsigned long *)mplMenuDrawBuffer;
|
|
26 drw=(unsigned long *)appMPlayer.menuSelected.Bitmap.Image;
|
|
27 for ( y=appMPlayer.MenuItems[ mplMenuItem ].y; y < appMPlayer.MenuItems[ mplMenuItem ].y + appMPlayer.MenuItems[ mplMenuItem ].height; y++ )
|
|
28 for ( x=appMPlayer.MenuItems[ mplMenuItem ].x; x < appMPlayer.MenuItems[ mplMenuItem ].x + appMPlayer.MenuItems[ mplMenuItem ].width; x++ )
|
|
29 {
|
|
30 tmp=drw[ y * appMPlayer.menuSelected.width + x ];
|
|
31 if ( tmp != 0x00ff00ff ) buf[ y * appMPlayer.menuBase.width + x ]=tmp;
|
|
32 }
|
|
33 }
|
|
34 mplOldMenuItem=mplMenuItem;
|
|
35 // ---
|
|
36 wsConvert( &appMPlayer.menuWindow,mplMenuDrawBuffer,appMPlayer.menuBase.Bitmap.ImageSize );
|
|
37 // wsConvert( &appMPlayer.menuWindow,mplMenuDrawBuffer,appMPlayer.menuBase.Bitmap.Height * appMPlayer.menuBase.Bitmap.Width );
|
|
38 mplMenuRender=0;
|
|
39 }
|
|
40 wsPutImage( &appMPlayer.menuWindow );
|
|
41 }
|
|
42
|
|
43 void mplMenuMouseHandle( int X,int Y,int RX,int RY )
|
|
44 {
|
|
45 int x,y,i;
|
|
46
|
|
47 if ( !appMPlayer.menuBase.Bitmap.Image ) return;
|
|
48
|
|
49 mplMenuItem=-1;
|
|
50 x=RX - appMPlayer.menuWindow.X;
|
|
51 y=RY - appMPlayer.menuWindow.Y;
|
|
52 if ( ( x < 0 ) || ( y < 0 ) || ( x > appMPlayer.menuBase.width ) || ( y > appMPlayer.menuBase.height ) )
|
|
53 {
|
|
54 wsPostRedisplay( &appMPlayer.menuWindow );
|
|
55 return;
|
|
56 }
|
|
57
|
|
58 for( i=0;i<appMPlayer.NumberOfMenuItems+1;i++ )
|
|
59 {
|
|
60 if ( wgIsRect( x,y,
|
|
61 appMPlayer.MenuItems[i].x,appMPlayer.MenuItems[i].y,
|
|
62 appMPlayer.MenuItems[i].x+appMPlayer.MenuItems[i].width,appMPlayer.MenuItems[i].y+appMPlayer.MenuItems[i].height ) ) mplMenuItem=i;
|
|
63 }
|
|
64 wsPostRedisplay( &appMPlayer.menuWindow );
|
|
65 }
|
|
66
|
|
67 void mplShowMenu( int mx,int my )
|
|
68 {
|
|
69 int x,y;
|
|
70
|
|
71 if ( !appMPlayer.menuBase.Bitmap.Image ) return;
|
|
72
|
|
73 x=mx;
|
|
74 if ( x + appMPlayer.menuWindow.Width > wsMaxX ) x=wsMaxX - appMPlayer.menuWindow.Width - 1;
|
|
75 y=my;
|
|
76 if ( y + appMPlayer.menuWindow.Height > wsMaxY ) y=wsMaxY - appMPlayer.menuWindow.Height - 1;
|
|
77
|
|
78 mplMenuX=x; mplMenuY=y;
|
|
79
|
|
80 mplMenuItem = 0;
|
|
81
|
|
82 wsMoveWindow( &appMPlayer.menuWindow,x,y );
|
|
83 wsVisibleWindow( &appMPlayer.menuWindow,wsShowWindow );
|
|
84 wsMoveTopWindow( &appMPlayer.menuWindow );
|
|
85 }
|
|
86
|
|
87 void mplHideMenu( int mx,int my )
|
|
88 {
|
|
89 int x,y,i=mplMenuItem;
|
|
90
|
|
91 if ( !appMPlayer.menuBase.Bitmap.Image ) return;
|
|
92
|
|
93 x=mx-mplMenuX;
|
|
94 y=my-mplMenuY;
|
|
95
|
|
96 wsVisibleWindow( &appMPlayer.menuWindow,wsHideWindow );
|
|
97
|
|
98 if ( ( x < 0 ) || ( y < 0 ) ) return;
|
|
99
|
|
100 if ( wgIsRect( x,y,
|
|
101 appMPlayer.MenuItems[i].x,appMPlayer.MenuItems[i].y,
|
|
102 appMPlayer.MenuItems[i].x+appMPlayer.MenuItems[i].width,
|
|
103 appMPlayer.MenuItems[i].y+appMPlayer.MenuItems[i].height ) )
|
|
104 {
|
|
105 mplMsgHandle( appMPlayer.MenuItems[i].msg,0 );
|
|
106 }
|
|
107 }
|
|
108
|
|
109 void mplMenuInit( void )
|
|
110 {
|
|
111
|
|
112 if ( !appMPlayer.menuBase.Bitmap.Image ) return;
|
|
113
|
|
114 appMPlayer.menuBase.x=0;
|
|
115 appMPlayer.menuBase.y=0;
|
|
116
|
|
117 if ( ( mplMenuDrawBuffer = calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL )
|
|
118 {
|
|
119 #ifdef DEBUG
|
|
120 dbprintf( 1,langNEMFMR );
|
|
121 #endif
|
|
122 gtkMessageBox( langNEMFMR );
|
|
123 return;
|
|
124 }
|
|
125
|
|
126 wsCreateWindow( &appMPlayer.menuWindow,
|
|
127 appMPlayer.menuBase.x,appMPlayer.menuBase.y,appMPlayer.menuBase.width,appMPlayer.menuBase.height,
|
|
128 wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,wsHideFrame|wsMaxSize|wsMinSize|wsHideWindow,"MPlayer menu" );
|
|
129
|
|
130 #ifdef DEBUG
|
|
131 dbprintf( 1,"[menu.h] menu: 0x%x\n",(int)appMPlayer.menuWindow.WindowID );
|
|
132 #endif
|
|
133
|
|
134 appMPlayer.menuWindow.ReDraw=mplMenuDraw;
|
|
135 // appMPlayer.menuWindow.MouseHandler=mplMenuMouseHandle;
|
|
136 // appMPlayer.menuWindow.KeyHandler=mplMainKeyHandle;
|
|
137
|
|
138 wsPostRedisplay( &appMPlayer.menuWindow );
|
|
139 }
|