summaryrefslogtreecommitdiffstats
path: root/libvo
diff options
context:
space:
mode:
authorben <ben@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-11-25 11:20:02 +0000
committerben <ben@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-11-25 11:20:02 +0000
commitc913e7dba1452be730c8ba8368a0515594d3f27a (patch)
tree91a19568c2a73273786c66adb108005d66b7b3bc /libvo
parentfce8c944ed5434a5f99310b5c73d49815bb1da9b (diff)
downloadmpv-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.c34
-rw-r--r--libvo/sub.h1
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