From 25f8352ffe541d6548b0943164d3177c984d6368 Mon Sep 17 00:00:00 2001 From: pontscho Date: Fri, 30 Aug 2002 19:11:03 +0000 Subject: add subtitle dropping support git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7170 b3059339-0415-0410-9bf9-f77b7e298cf2 --- Gui/events.c | 3 ++- Gui/events.h | 2 ++ Gui/interface.c | 31 +++++++++++++++++++++++++++---- Gui/mplayer/gtk/menu.c | 1 + Gui/mplayer/gtk/pl.c | 2 +- Gui/mplayer/mw.h | 4 ++++ 6 files changed, 37 insertions(+), 6 deletions(-) (limited to 'Gui') diff --git a/Gui/events.c b/Gui/events.c index 5e61b64ea5..8101eaf427 100644 --- a/Gui/events.c +++ b/Gui/events.c @@ -47,7 +47,8 @@ evName evNames[] = { evPlayDVD, "evPlayDVD" }, { evPlayVCD, "evPlayVCD" }, { evSetURL, "evSetURL" }, - { evLoadAudioFile, "evLoadAudioFile" } + { evLoadAudioFile, "evLoadAudioFile" }, + { evDropSubtitle, "evDropSubtitle" } }; int evBoxs = sizeof( evNames ) / sizeof( evName ); diff --git a/Gui/events.h b/Gui/events.h index f8f400260e..a75a5223d9 100644 --- a/Gui/events.h +++ b/Gui/events.h @@ -47,10 +47,12 @@ #define evHelp 37 #define evLoadSubtitle 38 +#define evDropSubtitle 43 #define evPlayDVD 39 #define evPlayVCD 40 #define evPlayNetwork 41 #define evLoadAudioFile 42 +// 44 ... #define evExit 1000 diff --git a/Gui/interface.c b/Gui/interface.c index 2ee5c5fe54..9b08abf16e 100644 --- a/Gui/interface.c +++ b/Gui/interface.c @@ -20,6 +20,7 @@ #include "../libvo/x11_common.h" #include "../libvo/video_out.h" #include "../libvo/font_load.h" +#include "../libvo/sub.h" #include "../input/input.h" #include "../libao2/audio_out.h" #include "../mixer.h" @@ -239,6 +240,8 @@ void guiLoadFont( void ) #endif #ifdef USE_SUB +extern mp_osd_obj_t* vo_osd_list; + void guiLoadSubtitle( char * name ) { if ( guiIntfStruct.Playing == 0 ) @@ -248,14 +251,34 @@ void guiLoadSubtitle( char * name ) } if ( subtitles ) { + mp_msg( MSGT_GPLAYER,MSGL_INFO,"[gui] Delete subtitles.\n" ); sub_free( subtitles ); - if ( sub_name ) free( sub_name ); + subtitles=NULL; sub_name=NULL; vo_sub=NULL; - subtitles=NULL; + if ( vo_osd_list ) + { + int len; + mp_osd_obj_t * osd = vo_osd_list; + while ( osd ) + { + if ( osd->type == OSDTYPE_SUBTITLE ) break; + osd=osd->next; + } + if ( osd && osd->flags&OSDFLAG_VISIBLE ) + { + len=osd->stride * ( osd->bbox.y2 - osd->bbox.y1 ); + memset( osd->bitmap_buffer,0,len ); + memset( osd->alpha_buffer,0,len ); + } + } + } + if ( name ) + { + mp_msg( MSGT_GPLAYER,MSGL_INFO,"[gui] Delete Load subtitle: %s\n",name ); + sub_name=gstrdup( name ); + subtitles=sub_read_file( sub_name,guiIntfStruct.FPS ); } - sub_name=gstrdup( name ); - subtitles=sub_read_file( sub_name,guiIntfStruct.FPS ); } #endif diff --git a/Gui/mplayer/gtk/menu.c b/Gui/mplayer/gtk/menu.c index 8d1db72f2d..f78ecc3dee 100644 --- a/Gui/mplayer/gtk/menu.c +++ b/Gui/mplayer/gtk/menu.c @@ -282,6 +282,7 @@ GtkWidget * create_PopUpMenu( void ) #endif AddMenuItem( SubMenu,MSGTR_MENU_PlayURL, evSetURL ); AddMenuItem( SubMenu,MSGTR_MENU_LoadSubtitle" ", evLoadSubtitle ); + AddMenuItem( SubMenu,MSGTR_MENU_DropSubtitle,evDropSubtitle ); AddMenuItem( SubMenu,MSGTR_MENU_LoadExternAudioFile, evLoadAudioFile ); SubMenu=AddSubMenu( Menu,MSGTR_MENU_Playing ); AddMenuItem( SubMenu,MSGTR_MENU_Play" ", evPlay ); diff --git a/Gui/mplayer/gtk/pl.c b/Gui/mplayer/gtk/pl.c index 4471251bd6..bfaab179e8 100644 --- a/Gui/mplayer/gtk/pl.c +++ b/Gui/mplayer/gtk/pl.c @@ -638,7 +638,7 @@ GtkWidget * create_PlayList( void ) GTK_WIDGET_UNSET_FLAGS( Ok,GTK_CAN_FOCUS ); // gtk_widget_add_accelerator( Ok,"released",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE ); - Cancel=gtk_button_new_with_label( "Cancel" ); + Cancel=gtk_button_new_with_label( MSGTR_Cancel ); gtk_widget_ref( Cancel ); gtk_object_set_data_full( GTK_OBJECT( PlayList ),"Cancel",Cancel,(GtkDestroyNotify)gtk_widget_unref ); gtk_widget_show( Cancel ); diff --git a/Gui/mplayer/mw.h b/Gui/mplayer/mw.h index 15f4146839..7500413456 100644 --- a/Gui/mplayer/mw.h +++ b/Gui/mplayer/mw.h @@ -356,6 +356,10 @@ NoPause: gtkShow( evLoad,NULL ); break; case evLoadSubtitle: gtkShow( evLoadSubtitle,NULL ); break; + case evDropSubtitle: + gfree( (void **)&guiIntfStruct.Subtitlename ); + guiLoadSubtitle( NULL ); + break; case evLoadAudioFile: gtkShow( evLoadAudioFile,NULL ); break; case evPrev: mplPrev(); break; case evNext: mplNext(); break; -- cgit v1.2.3