summaryrefslogtreecommitdiffstats
path: root/libmenu/menu_list.c
diff options
context:
space:
mode:
authoralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-03-30 02:52:54 +0000
committeralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-03-30 02:52:54 +0000
commit9c301c3e16546f00e9230abfbe36a45793bd9389 (patch)
tree6a9d061f301f41be8a36c1329543bc283d1f8b92 /libmenu/menu_list.c
parent22e18ebe856009ba68761c24fae14a166b7f0fe5 (diff)
downloadmpv-9c301c3e16546f00e9230abfbe36a45793bd9389.tar.bz2
mpv-9c301c3e16546f00e9230abfbe36a45793bd9389.tar.xz
Add a function to draw flat boxes and use it to make the list
menu and console look much cooler. Idea take from Otvos Atilla's patches (oattila_At_chello--.--hu). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17994 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmenu/menu_list.c')
-rw-r--r--libmenu/menu_list.c32
1 files changed, 25 insertions, 7 deletions
diff --git a/libmenu/menu_list.c b/libmenu/menu_list.c
index 975b30f958..56fb2ae3fd 100644
--- a/libmenu/menu_list.c
+++ b/libmenu/menu_list.c
@@ -30,6 +30,7 @@ void menu_list_draw(menu_t* menu,mp_image_t* mpi) {
int dy = 0;
int need_h = 0,need_w = 0,ptr_l,sidx = 0;
int th,count = 0;
+ int bg_w;
list_entry_t* m;
if(mpriv->count < 1)
@@ -102,7 +103,15 @@ void menu_list_draw(menu_t* menu,mp_image_t* mpi) {
} else
m = mpriv->menu;
+ bg_w = need_w+2*mpriv->minb;
if(th > 0) {
+ if(mpriv->title_bg >= 0) {
+ int tw,th2;
+ menu_text_size(mpriv->title,dw,mpriv->vspace,1,&tw,&th2);
+ if(tw+2*mpriv->minb > bg_w) bg_w = tw+2*mpriv->minb;
+ menu_draw_box(mpi,mpriv->title_bg,mpriv->title_bg_alpha,
+ x < 0 ? (mpi->w-bg_w)/2 : x-mpriv->minb,dy+y-mpriv->vspace,bg_w,th);
+ }
menu_draw_text_full(mpi,mpriv->title,
x < 0 ? mpi->w / 2 : x,
dy+y,dw,0,
@@ -114,13 +123,22 @@ void menu_list_draw(menu_t* menu,mp_image_t* mpi) {
for( ; m != NULL && dy + vo_font->height < dh ; m = m->next ) {
if(m->hide) continue;
- if(ptr_l > 0 && m == mpriv->current)
- menu_draw_text_full(mpi,mpriv->ptr,
- x < 0 ? (mpi->w - need_w) / 2 + ptr_l : x,
- dy+y,dw,dh - dy,
- mpriv->vspace,0,
- MENU_TEXT_TOP|(x < 0 ? MENU_TEXT_RIGHT :MENU_TEXT_LEFT) ,
- MENU_TEXT_TOP|(x < 0 ? MENU_TEXT_RIGHT :MENU_TEXT_LEFT));
+ if(m == mpriv->current) {
+ if(mpriv->ptr_bg >= 0)
+ menu_draw_box(mpi,mpriv->ptr_bg,mpriv->ptr_bg_alpha,
+ x < 0 ? (mpi->w-bg_w)/2 : x-mpriv->minb,dy+y-mpriv->vspace,
+ bg_w,vo_font->height + mpriv->vspace);
+ if(ptr_l > 0)
+ menu_draw_text_full(mpi,mpriv->ptr,
+ x < 0 ? (mpi->w - need_w) / 2 + ptr_l : x,
+ dy+y,dw,dh - dy,
+ mpriv->vspace,0,
+ MENU_TEXT_TOP|(x < 0 ? MENU_TEXT_RIGHT :MENU_TEXT_LEFT) ,
+ MENU_TEXT_TOP|(x < 0 ? MENU_TEXT_RIGHT :MENU_TEXT_LEFT));
+ } else if(mpriv->item_bg >= 0)
+ menu_draw_box(mpi,mpriv->item_bg,mpriv->item_bg_alpha,
+ x < 0 ? (mpi->w-bg_w)/2 : x-mpriv->minb,dy+y-mpriv->vspace,
+ bg_w,vo_font->height + mpriv->vspace);
menu_draw_text_full(mpi,m->txt,
x < 0 ? (mpi->w - need_w) / 2 + ptr_l : x + ptr_l,
dy+y,dw-ptr_l,dh - dy,