Mercurial > mplayer.hg
annotate gui/ui/menu.c @ 37003:2d8157b3b386
Fix the index passed to PutImage() for item type itVPotmeter.
Unlike the position for drawing the button (from bottom to top), the
index for the phase image has to be in the usual range, i.e. 0 for 0%
and numphases - 1 for 100%, so that the phase image can be designed
straightforwardly.
Fix the parameter although PutImage() currently doesn't work for item
type itVPotmeter at all.
author | ib |
---|---|
date | Fri, 28 Mar 2014 12:21:07 +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 } |