vlc | branch: master | Jean-Baptiste Kempf <[email protected]> | Tue Mar 22 23:56:51 2011 +0100| [05520ebbb6a31742156a5f5f1fddbbbae22506ff] | committer: Jean-Baptiste Kempf
Freetype renderer: separating FontConfig from Styles The fact that we only have fontconfig for listing fonts doesn't mean that there would be no other solution. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=05520ebbb6a31742156a5f5f1fddbbbae22506ff --- modules/misc/freetype.c | 34 ++++++++++++++++++++++++---------- 1 files changed, 24 insertions(+), 10 deletions(-) diff --git a/modules/misc/freetype.c b/modules/misc/freetype.c index ed6d9e8..6875a15 100644 --- a/modules/misc/freetype.c +++ b/modules/misc/freetype.c @@ -78,6 +78,10 @@ #define DEFAULT_FONT FC_DEFAULT_FONT #endif +#ifdef HAVE_FONTCONFIG +# define HAVE_STYLES +#endif + #include <assert.h> /***************************************************************************** @@ -190,9 +194,12 @@ vlc_module_end () /* The RenderText call maps to pf_render_string, defined in vlc_filter.h */ static int RenderText( filter_t *, subpicture_region_t *, subpicture_region_t * ); -#ifdef HAVE_FONTCONFIG + +#ifdef HAVE_STYLES static int RenderHtml( filter_t *, subpicture_region_t *, subpicture_region_t * ); +#endif +#ifdef HAVE_FONTCONFIG static char *FontConfig_Select( FcConfig *, const char *, bool, bool, int * ); #endif @@ -267,7 +274,7 @@ struct filter_sys_t int i_default_font_size; int i_display_height; -#ifdef HAVE_FONTCONFIG +#ifdef HAVE_STYLES char* psz_fontfamily; xml_reader_t *p_xml; #endif @@ -308,7 +315,7 @@ static int Create( vlc_object_t *p_this ) p_filter->p_sys = p_sys = malloc( sizeof( filter_sys_t ) ); if( !p_sys ) return VLC_ENOMEM; -#ifdef HAVE_FONTCONFIG +#ifdef HAVE_STYLES p_sys->psz_fontfamily = NULL; p_sys->p_xml = NULL; #endif @@ -332,8 +339,8 @@ static int Create( vlc_object_t *p_this ) if( !psz_fontfamily || !*psz_fontfamily ) { free( psz_fontfamily ); -#ifdef HAVE_FONTCONFIG - psz_fontfamily=strdup( DEFAULT_FONT ); +#ifdef HAVE_STYLES + psz_fontfamily = strdup( DEFAULT_FONT ); #else psz_fontfamily = (char *)malloc( PATH_MAX + 1 ); if( !psz_fontfamily ) @@ -467,8 +474,9 @@ static int Create( vlc_object_t *p_this ) p_sys->i_font_attachments = 0; p_filter->pf_render_text = RenderText; -#ifdef HAVE_FONTCONFIG +#ifdef HAVE_STYLES p_filter->pf_render_html = RenderHtml; +#ifdef HAVE_FONTCONFIG FcPatternDestroy( fontmatch ); FcPatternDestroy( fontpattern ); #else @@ -518,7 +526,7 @@ static void Destroy( vlc_object_t *p_this ) free( p_sys->pp_font_attachments ); } -#ifdef HAVE_FONTCONFIG +#ifdef HAVE_STYLES if( p_sys->p_xml ) xml_ReaderDelete( p_sys->p_xml ); free( p_sys->psz_fontfamily ); #endif @@ -1309,7 +1317,7 @@ static int RenderText( filter_t *p_filter, subpicture_region_t *p_region_out, return VLC_EGENERIC; } -#ifdef HAVE_FONTCONFIG +#ifdef HAVE_STYLES static ft_style_t *CreateStyle( char *psz_fontname, int i_font_size, uint32_t i_font_color, uint32_t i_karaoke_bg_color, bool b_bold, bool b_italic, bool b_uline, bool b_through ) @@ -1934,14 +1942,18 @@ static int ProcessLines( filter_t *p_filter, { char *psz_fontfile = NULL; +#ifdef HAVE_FONTCONFIG psz_fontfile = FontConfig_Select( NULL, p_style->psz_fontname, p_style->b_bold, p_style->b_italic, &i_idx ); +#else +#error FIXME +#endif if( psz_fontfile && ! *psz_fontfile ) { - msg_Warn( p_filter, "Fontconfig was unable to find a font: \"%s\" %s" + msg_Warn( p_filter, "We were not able to find a matching font: \"%s\" %s," " so using default font", p_style->psz_fontname, ((p_style->b_bold && p_style->b_italic) ? "(Bold,Italic)" : (p_style->b_bold ? "(Bold)" : @@ -2266,6 +2278,7 @@ static int RenderHtml( filter_t *p_filter, subpicture_region_t *p_region_out, return rv; } +#ifdef HAVE_FONTCONFIG static char* FontConfig_Select( FcConfig* priv, const char* family, bool b_bold, bool b_italic, int *i_idx ) { @@ -2327,7 +2340,8 @@ static char* FontConfig_Select( FcConfig* priv, const char* family, FcPatternDestroy( p_pat ); return strdup( (const char*)val_s ); } -#else +#endif +#else /* from now no styles */ static void SetupLine( filter_t *p_filter, const char *psz_text_in, uint32_t **psz_text_out, uint32_t *pi_runs, _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
