Mercurial > mplayer.hg
annotate gui/ui/menu.c @ 37011:322951bebfd6
Rename parameter.
It isn't the number of items but the last index in use.
Rewrite the condition in order ro reflect this.
author | ib |
---|---|
date | Sat, 29 Mar 2014 13:49:26 +0000 |
parents | 6bb8d4f4a7b0 |
children |
rev | line source |
---|---|
26458 | 1 /* |
2 * This file is part of MPlayer. | |
3 * | |
4 * MPlayer is free software; you can redistribute it and/or modify | |
5 * it under the terms of the GNU General Public License as published by | |
6 * the Free Software Foundation; either version 2 of the License, or | |
7 * (at your option) any later version. | |
8 * | |
9 * MPlayer is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 * GNU General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU General Public License along | |
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., | |
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
17 */ | |
23077 | 18 |
34699
ed0e00db4306
Cosmetic: Move, change and add some comments on GUI windows.
ib
parents:
34684
diff
changeset
|
19 /* menu window */ |
ed0e00db4306
Cosmetic: Move, change and add some comments on GUI windows.
ib
parents:
34684
diff
changeset
|
20 |
23077 | 21 #include <stdlib.h> |
22 #include <stdio.h> | |
33123
9566100d88a1
Replace inttypes.h by stdint.h and remove inttypes.h where unneeded.
ib
parents:
33084
diff
changeset
|
23 #include <stdint.h> |
33738 | 24 #include <string.h> |
23077 | 25 |
26382
b2f4abcf20ed
Make include paths consistent; do not use ../ in them.
diego
parents:
26365
diff
changeset
|
26 #include "help_mp.h" |
b2f4abcf20ed
Make include paths consistent; do not use ../ in them.
diego
parents:
26365
diff
changeset
|
27 #include "mp_msg.h" |
35525 | 28 #include "gui/app/app.h" |
29 #include "gui/app/gui.h" | |
35772 | 30 #include "actions.h" |
35528 | 31 #include "ui.h" |
35796
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35782
diff
changeset
|
32 #include "gui/util/mem.h" |
36962 | 33 #include "gui/wm/ws.h" |
23077 | 34 |
35529 | 35 #include "gui/dialog/dialog.h" |
23077 | 36 |
33555 | 37 unsigned char * menuDrawBuffer = NULL; |
35750 | 38 static int uiMenuRender = True; |
33555 | 39 int menuItem = -1; |
40 int oldMenuItem = -1; | |
41 int menuX,menuY; | |
23077 | 42 |
33555 | 43 static void uiMenuDraw( void ) |
23077 | 44 { |
45 uint32_t * buf = NULL; | |
46 uint32_t * drw = NULL; | |
47 int x,y,tmp; | |
48 | |
35803 | 49 if ( !guiApp.menuIsPresent ) return; |
35750 | 50 if ( !uiMenuRender && !guiApp.menuWindow.Visible ) return; |
23077 | 51 |
35750 | 52 if ( uiMenuRender || menuItem != oldMenuItem ) |
23077 | 53 { |
33555 | 54 memcpy( menuDrawBuffer,guiApp.menu.Bitmap.Image,guiApp.menu.Bitmap.ImageSize ); |
34684 | 55 /* --- */ |
33555 | 56 if ( menuItem != -1 ) |
23077 | 57 { |
33555 | 58 buf=(uint32_t *)menuDrawBuffer; |
59 drw=(uint32_t *)guiApp.menuSelected.Bitmap.Image; | |
60 for ( y=guiApp.menuItems[ menuItem ].y; y < guiApp.menuItems[ menuItem ].y + guiApp.menuItems[ menuItem ].height; y++ ) | |
61 for ( x=guiApp.menuItems[ menuItem ].x; x < guiApp.menuItems[ menuItem ].x + guiApp.menuItems[ menuItem ].width; x++ ) | |
23077 | 62 { |
33555 | 63 tmp=drw[ y * guiApp.menuSelected.width + x ]; |
64 if ( !IS_TRANSPARENT ( tmp ) ) buf[ y * guiApp.menu.width + x ]=tmp; | |
23077 | 65 } |
66 } | |
33555 | 67 oldMenuItem=menuItem; |
34684 | 68 /* --- */ |
35744 | 69 wsImageRender( &guiApp.menuWindow,menuDrawBuffer ); |
35750 | 70 uiMenuRender=False; |
23077 | 71 } |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35675
diff
changeset
|
72 wsImageDraw( &guiApp.menuWindow ); |
23077 | 73 } |
74 | |
35778 | 75 static void uiMenuMouse( int Button,int X,int Y,int RX,int RY ) |
23077 | 76 { |
77 int x,y,i; | |
78 | |
36010 | 79 (void) Button; |
80 (void) RX; | |
81 (void) RY; | |
82 | |
33555 | 83 menuItem=-1; |
35778 | 84 x=X - guiApp.menuWindow.X; |
85 y=Y - guiApp.menuWindow.Y; | |
33555 | 86 if ( ( x < 0 ) || ( y < 0 ) || ( x > guiApp.menu.width ) || ( y > guiApp.menu.height ) ) |
23077 | 87 { |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35675
diff
changeset
|
88 wsWindowRedraw( &guiApp.menuWindow ); |
23077 | 89 return; |
90 } | |
91 | |
33555 | 92 for( i=0;i<=guiApp.IndexOfMenuItems;i++ ) |
23077 | 93 { |
35675 | 94 if ( isInside( x,y, |
33555 | 95 guiApp.menuItems[i].x,guiApp.menuItems[i].y, |
96 guiApp.menuItems[i].x+guiApp.menuItems[i].width,guiApp.menuItems[i].y+guiApp.menuItems[i].height ) ) { menuItem=i; break; } | |
23077 | 97 } |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35675
diff
changeset
|
98 wsWindowRedraw( &guiApp.menuWindow ); |
23077 | 99 } |
100 | |
35767 | 101 void uiMenuInit( void ) |
102 { | |
103 | |
35803 | 104 if ( !guiApp.menuIsPresent ) return; |
35767 | 105 |
106 guiApp.menu.x=0; | |
107 guiApp.menu.y=0; | |
108 | |
109 if ( ( menuDrawBuffer = calloc( 1,guiApp.menu.Bitmap.ImageSize ) ) == NULL ) | |
110 { | |
36694 | 111 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[menu] " MSGTR_GUI_MSG_MemoryErrorWindow ); |
112 gtkMessageBox( MSGBOX_FATAL,"[menu] " MSGTR_GUI_MSG_MemoryErrorWindow ); | |
35767 | 113 return; |
114 } | |
115 | |
116 wsWindowCreate( &guiApp.menuWindow, | |
117 guiApp.menu.x,guiApp.menu.y,guiApp.menu.width,guiApp.menu.height, | |
118 wsOverredirect|wsHideFrame|wsMaxSize|wsMinSize|wsHideWindow,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,"MPlayer menu" ); | |
119 | |
35782 | 120 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[menu] menuWindow ID: 0x%x\n",(int)guiApp.menuWindow.WindowID ); |
35767 | 121 |
35782 | 122 wsWindowShape( &guiApp.menuWindow,guiApp.menu.Mask.Image ); |
35767 | 123 |
124 guiApp.menuWindow.DrawHandler=uiMenuDraw; | |
35778 | 125 guiApp.menuWindow.MouseHandler=uiMenuMouse; |
35780 | 126 // guiApp.menuWindow.KeyHandler=guiApp.mainWindow.KeyHandler; |
35767 | 127 uiMenuRender=True; wsWindowRedraw( &guiApp.menuWindow ); |
128 } | |
129 | |
35796
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35782
diff
changeset
|
130 void uiMenuDone( void ) |
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35782
diff
changeset
|
131 { |
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35782
diff
changeset
|
132 nfree(menuDrawBuffer); |
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35782
diff
changeset
|
133 wsWindowDestroy(&guiApp.menuWindow); |
36291 | 134 wsEvents(); |
35796
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35782
diff
changeset
|
135 } |
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35782
diff
changeset
|
136 |
35766
16ed8155439b
Rename uiShowMenu() uiMenuShow() and uiHideMenu() uiMenuHide().
ib
parents:
35762
diff
changeset
|
137 void uiMenuShow( int mx,int my ) |
23077 | 138 { |
139 int x,y; | |
140 | |
35803 | 141 if ( !guiApp.menuIsPresent ) return; |
23077 | 142 |
143 x=mx; | |
33555 | 144 if ( x + guiApp.menuWindow.Width > wsMaxX ) x=wsMaxX - guiApp.menuWindow.Width - 1 + wsOrgX; |
23077 | 145 y=my; |
33555 | 146 if ( y + guiApp.menuWindow.Height > wsMaxY ) y=wsMaxY - guiApp.menuWindow.Height - 1 + wsOrgY; |
23077 | 147 |
33555 | 148 menuX=x; menuY=y; |
23077 | 149 |
33555 | 150 menuItem = 0; |
23077 | 151 |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35675
diff
changeset
|
152 wsWindowMove( &guiApp.menuWindow,True,x,y ); |
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35675
diff
changeset
|
153 wsWindowRaiseTop( wsDisplay,guiApp.menuWindow.WindowID ); |
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35675
diff
changeset
|
154 wsWindowLayer( wsDisplay,guiApp.menuWindow.WindowID,1 ); |
35750 | 155 uiMenuRender=True; |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35675
diff
changeset
|
156 wsWindowVisibility( &guiApp.menuWindow,wsShowWindow ); |
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35675
diff
changeset
|
157 wsWindowRedraw( &guiApp.menuWindow ); |
23077 | 158 } |
159 | |
35766
16ed8155439b
Rename uiShowMenu() uiMenuShow() and uiHideMenu() uiMenuHide().
ib
parents:
35762
diff
changeset
|
160 void uiMenuHide( int mx,int my,int w ) |
23077 | 161 { |
33555 | 162 int x,y,i=menuItem; |
23077 | 163 |
35803 | 164 if ( !guiApp.menuIsPresent ) return; |
23077 | 165 |
33555 | 166 x=mx-menuX; |
167 y=my-menuY; | |
168 // x=RX - guiApp.menuWindow.X; | |
169 // y=RY - guiApp.menuWindow.Y; | |
23077 | 170 |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35675
diff
changeset
|
171 wsWindowVisibility( &guiApp.menuWindow,wsHideWindow ); |
23077 | 172 |
173 if ( ( x < 0 ) || ( y < 0 ) ) return; | |
174 | |
175 // printf( "---------> %d %d,%d\n",i,x,y ); | |
33555 | 176 // printf( "--------> mi: %d,%d %dx%d\n",guiApp.menuItems[i].x,guiApp.menuItems[i].y,guiApp.menuItems[i].width,guiApp.menuItems[i].height ); |
35675 | 177 if ( isInside( x,y, |
33555 | 178 guiApp.menuItems[i].x,guiApp.menuItems[i].y, |
179 guiApp.menuItems[i].x+guiApp.menuItems[i].width, | |
180 guiApp.menuItems[i].y+guiApp.menuItems[i].height ) ) | |
23077 | 181 { |
36280 | 182 uiEvent( guiApp.menuItems[i].message,w ); |
23077 | 183 } |
184 } |