diff options
author | ben <ben@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-11-25 11:20:02 +0000 |
---|---|---|
committer | ben <ben@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-11-25 11:20:02 +0000 |
commit | c913e7dba1452be730c8ba8368a0515594d3f27a (patch) | |
tree | 91a19568c2a73273786c66adb108005d66b7b3bc /libvo | |
parent | fce8c944ed5434a5f99310b5c73d49815bb1da9b (diff) | |
download | mpv-c913e7dba1452be730c8ba8368a0515594d3f27a.tar.bz2 mpv-c913e7dba1452be730c8ba8368a0515594d3f27a.tar.xz |
support for dvdnav menu buttons overlay as simple alpha boxes (rework from Otvos Attila's series of patches)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21209 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo')
-rw-r--r-- | libvo/sub.c | 34 | ||||
-rw-r--r-- | libvo/sub.h | 1 |
2 files changed, 35 insertions, 0 deletions
diff --git a/libvo/sub.c b/libvo/sub.c index 6af8819060..0301e65de6 100644 --- a/libvo/sub.c +++ b/libvo/sub.c @@ -8,6 +8,11 @@ #include <malloc.h> #endif +#ifdef USE_DVDNAV +#include <dvdnav.h> +#define OSD_NAV_BOX_ALPHA 0x7f +#endif + #include "mp_msg.h" #include "help_mp.h" #include "video_out.h" @@ -192,6 +197,24 @@ inline static void vo_update_text_osd(mp_osd_obj_t* obj,int dxs,int dys){ } } +#ifdef USE_DVDNAV +inline static void vo_update_nav (mp_osd_obj_t *obj, int dxs, int dys) { + extern dvdnav_highlight_event_t dvd_nav_hl; + int len; + + obj->bbox.x1 = obj->x = dvd_nav_hl.sx; + obj->bbox.y1 = obj->y = dvd_nav_hl.sy; + obj->bbox.x2 = dvd_nav_hl.ex; + obj->bbox.y2 = dvd_nav_hl.ey; + + alloc_buf (obj); + len = obj->stride * (obj->bbox.y2 - obj->bbox.y1); + memset (obj->bitmap_buffer, OSD_NAV_BOX_ALPHA, len); + memset (obj->alpha_buffer, OSD_NAV_BOX_ALPHA, len); + obj->flags |= OSDFLAG_BBOX | OSDFLAG_VISIBLE | OSDFLAG_CHANGED; +} +#endif + int vo_osd_progbar_type=-1; int vo_osd_progbar_value=100; // 0..256 @@ -817,6 +840,11 @@ int vo_update_osd(int dxs,int dys){ int vis=obj->flags&OSDFLAG_VISIBLE; obj->flags&=~OSDFLAG_BBOX; switch(obj->type){ +#ifdef USE_DVDNAV + case OSDTYPE_DVDNAV: + vo_update_nav(obj,dxs,dys); + break; +#endif case OSDTYPE_SUBTITLE: vo_update_text_sub(obj,dxs,dys); break; @@ -884,6 +912,9 @@ void vo_init_osd(void){ new_osd_obj(OSDTYPE_SUBTITLE); new_osd_obj(OSDTYPE_PROGBAR); new_osd_obj(OSDTYPE_SPU); +#ifdef USE_DVDNAV + new_osd_obj(OSDTYPE_DVDNAV); +#endif #ifdef HAVE_FREETYPE force_load_font = 1; #endif @@ -919,6 +950,9 @@ void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, case OSDTYPE_SPU: vo_draw_spudec_sub(obj, draw_alpha); // FIXME break; +#ifdef USE_DVDNAV + case OSDTYPE_DVDNAV: +#endif case OSDTYPE_OSD: case OSDTYPE_SUBTITLE: case OSDTYPE_PROGBAR: diff --git a/libvo/sub.h b/libvo/sub.h index 62d3473bf6..d9e295b6f8 100644 --- a/libvo/sub.h +++ b/libvo/sub.h @@ -10,6 +10,7 @@ typedef struct mp_osd_bbox_s { #define OSDTYPE_SUBTITLE 2 #define OSDTYPE_PROGBAR 3 #define OSDTYPE_SPU 4 +#define OSDTYPE_DVDNAV 5 #define OSDFLAG_VISIBLE 1 #define OSDFLAG_CHANGED 2 |