]> git.sesse.net Git - vlc/blobdiff - modules/video_filter/marq.c
dynamic, per-subpicture, font size control -- i_font_size added to subpicture_region_...
[vlc] / modules / video_filter / marq.c
index a7a6e00c6829f505caa880c1ee498e0af55a71ea..0360ef5534197d2615c01d007603737b408efe97 100644 (file)
@@ -66,7 +66,7 @@ struct filter_sys_t
 \r
     char *psz_marquee;    /* marquee string */\r
 \r
-    int  i_font_color, i_font_opacity; /* font color control */\r
+    int  i_font_color, i_font_opacity, i_font_size; /* font control */\r
     \r
     time_t last_time;\r
     vlc_bool_t b_absolute; /* position control, relative vs. absolute */\r
@@ -87,6 +87,10 @@ struct filter_sys_t
 #define OPACITY_TEXT N_("Opacity, -1..255")\r
 #define OPACITY_LONGTEXT N_("The opacity (inverse of transparency) of overlay text. " \\r
     "-1 = use freetype-opacity, 0 = transparent, 255 = totally opaque. " )\r
+#define SIZE_TEXT N_("Font size, pixels")\r
+#define SIZE_LONGTEXT N_("Specify the font size, in pixels, " \\r
+    "with -1 = use freetype-fontsize" )\r
+\r
 #define COLOR_TEXT N_("Text Default Color")\r
 #define COLOR_LONGTEXT N_("The color of overlay text. 1 byte for each color, hexadecimal." \\r
     "-1 = use freetype-color, #000000 = all colors off, " \\r
@@ -124,6 +128,7 @@ vlc_module_begin();
         OPACITY_TEXT, OPACITY_LONGTEXT, VLC_FALSE );\r
     add_integer( "marq-color", -1, NULL, COLOR_TEXT, COLOR_LONGTEXT, VLC_TRUE );\r
         change_integer_list( pi_color_values, ppsz_color_descriptions, 0 );\r
+    add_integer( "marq-size", -1, NULL, SIZE_TEXT, SIZE_LONGTEXT, VLC_FALSE );\r
 \r
     set_description( _("Marquee display sub filter") );\r
     add_shortcut( "marq" );\r
@@ -137,7 +142,6 @@ static int CreateFilter( vlc_object_t *p_this )
     filter_t *p_filter = (filter_t *)p_this;\r
     filter_sys_t *p_sys;\r
     vlc_object_t *p_input;\r
-    vlc_value_t     val;\r
 \r
     /* Allocate structure */\r
     p_sys = p_filter->p_sys = malloc( sizeof( filter_sys_t ) );\r
@@ -162,6 +166,7 @@ static int CreateFilter( vlc_object_t *p_this )
     var_Create( p_input->p_libvlc, "marq-opacity", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );\r
     p_sys->i_font_opacity = var_CreateGetInteger( p_input->p_libvlc , "marq-opacity" );\r
     p_sys->i_font_color = var_CreateGetInteger( p_input->p_libvlc , "marq-color" );\r
+    p_sys->i_font_size = var_CreateGetInteger( p_input->p_libvlc , "marq-size" );\r
 \r
     var_AddCallback( p_input->p_libvlc, "marq-x", MarqueeCallback, p_sys );\r
     var_AddCallback( p_input->p_libvlc, "marq-y", MarqueeCallback, p_sys );\r
@@ -170,6 +175,7 @@ static int CreateFilter( vlc_object_t *p_this )
     var_AddCallback( p_input->p_libvlc, "marq-position", MarqueeCallback, p_sys );\r
     var_AddCallback( p_input->p_libvlc, "marq-color", MarqueeCallback, p_sys );\r
     var_AddCallback( p_input->p_libvlc, "marq-opacity", MarqueeCallback, p_sys );\r
+    var_AddCallback( p_input->p_libvlc, "marq-size", MarqueeCallback, p_sys );\r
 \r
     vlc_object_release( p_input );\r
 \r
@@ -206,6 +212,8 @@ static void DestroyFilter( vlc_object_t *p_this )
     var_Destroy( p_input->p_libvlc , "marq-position" );\r
     var_Destroy( p_input->p_libvlc , "marq-color");\r
     var_Destroy( p_input->p_libvlc , "marq-opacity");\r
+    var_Destroy( p_input->p_libvlc , "marq-size");\r
+\r
     vlc_object_release( p_input );\r
 }\r
 \r
@@ -263,7 +271,8 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
     p_spu->i_x = p_sys->i_xoff;\r
     p_spu->i_y = p_sys->i_yoff;\r
     p_spu->p_region->i_font_color = p_sys->i_font_color;\r
-    p_spu->p_region->i_font_opacity = p_sys->i_font_opacity;;\r
+    p_spu->p_region->i_font_opacity = p_sys->i_font_opacity;\r
+    p_spu->p_region->i_font_size = p_sys->i_font_size;\r
     \r
     p_spu->i_flags = p_sys->i_pos;\r
 \r
@@ -301,6 +310,10 @@ static int MarqueeCallback( vlc_object_t *p_this, char const *psz_var,
     {\r
         p_sys->i_font_opacity = newval.i_int;\r
     }\r
+    else if ( !strncmp( psz_var, "marq-size", 6 ) )\r
+    {\r
+        p_sys->i_font_size = newval.i_int;\r
+    }\r
     else if ( !strncmp( psz_var, "marq-timeout", 12 ) )\r
     {\r
         p_sys->i_timeout = newval.i_int;\r