X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Fwin32text.c;h=9c16c12c70e58c581d0905fa3481176591969b23;hb=8f83ef4b74b37d92e95fc9bcebabf67e9aeef291;hp=7c35f9361c0b4b2721d62129506c261c5fa09582;hpb=99fab9089e9e1709d9c3a4bc5ced0c137ac59134;p=vlc diff --git a/modules/misc/win32text.c b/modules/misc/win32text.c index 7c35f9361c..9c16c12c70 100644 --- a/modules/misc/win32text.c +++ b/modules/misc/win32text.c @@ -29,7 +29,8 @@ # include "config.h" #endif -#include +#include +#include #include #include #include @@ -74,40 +75,40 @@ static int SetFont( filter_t *, int ); "fonts that will be rendered on the video. If absolute font size is set, "\ "relative size will be overriden." ) -static int pi_sizes[] = { 20, 18, 16, 12, 6 }; -static char *ppsz_sizes_text[] = { N_("Smaller"), N_("Small"), N_("Normal"), - N_("Large"), N_("Larger") }; -static int pi_color_values[] = { +static int const pi_sizes[] = { 20, 18, 16, 12, 6 }; +static char *const ppsz_sizes_text[] = { + N_("Smaller"), N_("Small"), N_("Normal"), N_("Large"), N_("Larger") }; +static const int pi_color_values[] = { 0x00000000, 0x00808080, 0x00C0C0C0, 0x00FFFFFF, 0x00800000, 0x00FF0000, 0x00FF00FF, 0x00FFFF00, 0x00808000, 0x00008000, 0x00008080, 0x0000FF00, 0x00800080, 0x00000080, 0x000000FF, 0x0000FFFF }; -static char *ppsz_color_descriptions[] = { +static const char *const ppsz_color_descriptions[] = { N_("Black"), N_("Gray"), N_("Silver"), N_("White"), N_("Maroon"), N_("Red"), N_("Fuchsia"), N_("Yellow"), N_("Olive"), N_("Green"), N_("Teal"), N_("Lime"), N_("Purple"), N_("Navy"), N_("Blue"), N_("Aqua") }; vlc_module_begin(); - set_shortname( _("Text renderer")); - set_description( _("Win32 font renderer") ); + set_shortname( N_("Text renderer")); + set_description( N_("Win32 font renderer") ); set_category( CAT_VIDEO ); set_subcategory( SUBCAT_VIDEO_SUBPIC ); add_integer( "win32text-fontsize", 0, NULL, FONTSIZE_TEXT, - FONTSIZE_LONGTEXT, VLC_TRUE ); + FONTSIZE_LONGTEXT, true ); /* opacity valid on 0..255, with default 255 = fully opaque */ add_integer_with_range( "win32-opacity", 255, 0, 255, NULL, - OPACITY_TEXT, OPACITY_LONGTEXT, VLC_FALSE ); + OPACITY_TEXT, OPACITY_LONGTEXT, false ); /* hook to the color values list, with default 0x00ffffff = white */ add_integer( "win32text-color", 0x00FFFFFF, NULL, COLOR_TEXT, - COLOR_LONGTEXT, VLC_TRUE ); - change_integer_list( pi_color_values, ppsz_color_descriptions, 0 ); + COLOR_LONGTEXT, true ); + change_integer_list( pi_color_values, ppsz_color_descriptions, NULL ); add_integer( "win32text-rel-fontsize", 16, NULL, FONTSIZER_TEXT, - FONTSIZER_LONGTEXT, VLC_FALSE ); - change_integer_list( pi_sizes, ppsz_sizes_text, 0 ); + FONTSIZER_LONGTEXT, false ); + change_integer_list( pi_sizes, ppsz_sizes_text, NULL ); set_capability( "text renderer", 50 ); add_shortcut( "text" ); @@ -132,7 +133,7 @@ struct filter_sys_t int i_logpy; }; -static uint8_t pi_gamma[16] = +static const uint8_t pi_gamma[16] = {0x00, 0x41, 0x52, 0x63, 0x84, 0x85, 0x96, 0xa7, 0xb8, 0xc9, 0xca, 0xdb, 0xdc, 0xed, 0xee, 0xff}; @@ -150,10 +151,7 @@ static int Create( vlc_object_t *p_this ) /* Allocate structure */ p_filter->p_sys = p_sys = malloc( sizeof( filter_sys_t ) ); if( !p_sys ) - { - msg_Err( p_filter, "out of memory" ); return VLC_ENOMEM; - } p_sys->i_font_size = 0; p_sys->i_display_height = 0; @@ -183,13 +181,13 @@ static int Create( vlc_object_t *p_this ) p_sys->i_default_font_size = val.i_int; if( SetFont( p_filter, 0 ) != VLC_SUCCESS ) goto error; - if( psz_fontfile ) free( psz_fontfile ); + free( psz_fontfile ); p_filter->pf_render_text = RenderText; p_filter->pf_render_html = NULL; return VLC_SUCCESS; error: - if( psz_fontfile ) free( psz_fontfile ); + free( psz_fontfile ); free( p_sys ); return VLC_EGENERIC; } @@ -219,8 +217,7 @@ static int Render( filter_t *p_filter, subpicture_region_t *p_region, uint8_t *p_dst; video_format_t fmt; int i, i_pitch; - subpicture_region_t *p_region_tmp; - vlc_bool_t b_outline = VLC_TRUE; + bool b_outline = true; /* Create a new subpicture region */ memset( &fmt, 0, sizeof(video_format_t) ); @@ -228,12 +225,6 @@ static int Render( filter_t *p_filter, subpicture_region_t *p_region, fmt.i_width = fmt.i_visible_width = i_width + (b_outline ? 4 : 0); fmt.i_height = fmt.i_visible_height = i_height + (b_outline ? 4 : 0); fmt.i_x_offset = fmt.i_y_offset = 0; - p_region_tmp = spu_CreateRegion( p_filter, &fmt ); - if( !p_region_tmp ) - { - msg_Err( p_filter, "cannot allocate SPU region" ); - return VLC_EGENERIC; - } /* Build palette */ fmt.p_palette->i_entries = 16; @@ -245,17 +236,18 @@ static int Render( filter_t *p_filter, subpicture_region_t *p_region, fmt.p_palette->palette[i][3] = pi_gamma[i]; } - p_region->fmt = p_region_tmp->fmt; - p_region->picture = p_region_tmp->picture; - free( p_region_tmp ); + p_region->p_picture = picture_New( fmt.i_chroma, fmt.i_width, fmt.i_height, fmt.i_aspect ); + if( !p_region->p_picture ) + return VLC_EGENERIC; + p_region->fmt = fmt; - p_dst = p_region->picture.Y_PIXELS; - i_pitch = p_region->picture.Y_PITCH; + p_dst = p_region->p_picture->Y_PIXELS; + i_pitch = p_region->p_picture->Y_PITCH; if( b_outline ) { memset( p_dst, 0, i_pitch * fmt.i_height ); - p_dst += p_region->picture.Y_PITCH * 2 + 2; + p_dst += p_region->p_picture->Y_PITCH * 2 + 2; } for( i = 0; i < i_height; i++ ) @@ -272,7 +264,7 @@ static int Render( filter_t *p_filter, subpicture_region_t *p_region, uint8_t left, current; int x, y; - p_dst = p_region->picture.Y_PIXELS; + p_dst = p_region->p_picture->Y_PIXELS; for( y = 1; y < (int)fmt.i_height - 1; y++ ) {