Commit 783fdab8 authored by Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf

Freetype: introduce a dummy font selector

When we don't have a way to select a font by family, use the basic font
(default or the config one)

This reduces the number of HAVE_STYLES usage and avoid a few bugs
parent 15f6fe98
...@@ -56,26 +56,22 @@ ...@@ -56,26 +56,22 @@
#define FT_MulFix(v, s) (((v)*(s))>>16) #define FT_MulFix(v, s) (((v)*(s))>>16)
#endif #endif
/* apple stuff */
#ifdef __APPLE__
#include <TargetConditionals.h>
#if !TARGET_OS_IPHONE
#include <Carbon/Carbon.h>
#endif
#include <sys/param.h> /* for MAXPATHLEN */
#undef HAVE_FONTCONFIG
#define HAVE_STYLES
#endif
/* RTL */ /* RTL */
#if defined(HAVE_FRIBIDI) #if defined(HAVE_FRIBIDI)
# include <fribidi/fribidi.h> # include <fribidi/fribidi.h>
#endif #endif
/* Win32 GDI */ /* apple stuff */
#ifdef _WIN32 #ifdef __APPLE__
# include <TargetConditionals.h>
# undef HAVE_FONTCONFIG
# define HAVE_STYLES # define HAVE_STYLES
#endif
/* Win32 */
#ifdef _WIN32
# undef HAVE_FONTCONFIG # undef HAVE_FONTCONFIG
# define HAVE_STYLES
#endif #endif
/* FontConfig */ /* FontConfig */
...@@ -1926,29 +1922,17 @@ static int Create( vlc_object_t *p_this ) ...@@ -1926,29 +1922,17 @@ static int Create( vlc_object_t *p_this )
#ifdef HAVE_STYLES #ifdef HAVE_STYLES
psz_fontname = strdup( DEFAULT_FAMILY ); psz_fontname = strdup( DEFAULT_FAMILY );
#else #else
# ifdef _WIN32 psz_fontname = File_Select( DEFAULT_FONT_FILE );
/* Get Windows Font folder */
char *psz_win_fonts_path = GetWindowsFontPath();
if( asprintf( &psz_fontname, "%s"DEFAULT_FONT_FILE, psz_win_fonts_path ) == -1 )
{
psz_fontname = NULL;
goto error;
}
free(psz_win_fonts_path);
# else
psz_fontname = strdup( DEFAULT_FONT_FILE );
# endif
msg_Err( p_filter,"User specified an empty fontfile, using %s", psz_fontname );
#endif #endif
} }
/* Set the current font file */ /* Set the current font file */
p_sys->style.psz_fontname = psz_fontname; p_sys->style.psz_fontname = psz_fontname;
p_sys->style.psz_monofontname = psz_monofontfamily;
#ifdef HAVE_STYLES
#ifdef HAVE_FONTCONFIG #ifdef HAVE_FONTCONFIG
p_sys->pf_select = FontConfig_Select; p_sys->pf_select = FontConfig_Select;
FontConfig_BuildCache( p_filter );
#elif defined( __APPLE__ ) #elif defined( __APPLE__ )
#if !TARGET_OS_IPHONE #if !TARGET_OS_IPHONE
p_sys->pf_select = MacLegacy_Select; p_sys->pf_select = MacLegacy_Select;
...@@ -1956,11 +1940,7 @@ static int Create( vlc_object_t *p_this ) ...@@ -1956,11 +1940,7 @@ static int Create( vlc_object_t *p_this )
#elif defined( _WIN32 ) #elif defined( _WIN32 )
p_sys->pf_select = Win32_Select; p_sys->pf_select = Win32_Select;
#else #else
# error selection not implemented p_sys->pf_select = Dummy_Select;
#endif
#ifdef HAVE_FONTCONFIG
FontConfig_BuildCache( p_filter );
#endif #endif
/* */ /* */
...@@ -1970,20 +1950,13 @@ static int Create( vlc_object_t *p_this ) ...@@ -1970,20 +1950,13 @@ static int Create( vlc_object_t *p_this )
false, p_sys->i_default_font_size, false, p_sys->i_default_font_size,
&monofontindex ); &monofontindex );
msg_Dbg( p_filter, "Using %s as font from file %s", psz_fontname, psz_fontfile ); msg_Dbg( p_filter, "Using %s as font from file %s", psz_fontname, psz_fontfile );
msg_Dbg( p_filter, "Using %s as mono-font from file %s", psz_monofontfamily, psz_monofontfile );
/* If nothing is found, use the default family */ /* If nothing is found, use the default family */
if( !psz_fontfile ) if( !psz_fontfile )
psz_fontfile = strdup( psz_fontname ); psz_fontfile = File_Select( psz_fontname );
if( !psz_monofontfile ) if( !psz_monofontfile )
psz_monofontfile = strdup( psz_monofontfamily ); psz_monofontfile = File_Select( psz_monofontfamily );
#else /* !HAVE_STYLES */
/* Use the default file */
p_sys->pf_select = NULL;
psz_fontfile = psz_fontname;
psz_monofontfile = psz_monofontfamily;
#endif
p_sys->style.psz_monofontname = psz_monofontfamily;
if( Init_FT( p_this, psz_fontfile, fontindex, f_outline_thickness ) != VLC_SUCCESS ) if( Init_FT( p_this, psz_fontfile, fontindex, f_outline_thickness ) != VLC_SUCCESS )
goto error; goto error;
...@@ -1996,18 +1969,14 @@ static int Create( vlc_object_t *p_this ) ...@@ -1996,18 +1969,14 @@ static int Create( vlc_object_t *p_this )
LoadFontsFromAttachments( p_filter ); LoadFontsFromAttachments( p_filter );
#ifdef HAVE_STYLES
free( psz_fontfile ); free( psz_fontfile );
free( psz_monofontfile ); free( psz_monofontfile );
#endif
return VLC_SUCCESS; return VLC_SUCCESS;
error: error:
#ifdef HAVE_STYLES
free( psz_fontfile ); free( psz_fontfile );
free( psz_monofontfile ); free( psz_monofontfile );
#endif
free( psz_fontname ); free( psz_fontname );
free( psz_monofontfamily ); free( psz_monofontfamily );
free( p_sys ); free( p_sys );
......
...@@ -413,3 +413,28 @@ char* MacLegacy_Select( filter_t *p_filter, const char* psz_fontname, ...@@ -413,3 +413,28 @@ char* MacLegacy_Select( filter_t *p_filter, const char* psz_fontname,
#endif #endif
#endif #endif
char* Dummy_Select( filter_t *p_filter, const char* psz_font,
bool b_bold, bool b_italic, int i_size, int *i_idx )
{
VLC_UNUSED(p_filter);
VLC_UNUSED(b_bold);
VLC_UNUSED(b_italic);
VLC_UNUSED(i_size);
VLC_UNUSED(i_idx);
char *psz_fontname;
# ifdef _WIN32
/* Get Windows Font folder */
char *psz_win_fonts_path = GetWindowsFontPath();
if( asprintf( &psz_fontname, "%s\\%s", psz_win_fonts_path, psz_font ) == -1 )
{
psz_fontname = NULL;
return NULL;
}
free(psz_win_fonts_path);
# else
psz_fontname = strdup( psz_font );
# endif
return psz_fontname;
}
...@@ -99,3 +99,7 @@ char* MacLegacy_Select( filter_t *p_filter, const char* psz_fontname, ...@@ -99,3 +99,7 @@ char* MacLegacy_Select( filter_t *p_filter, const char* psz_fontname,
#endif #endif
#endif #endif
char* Dummy_Select( filter_t *p_filter, const char* family,
bool b_bold, bool b_italic, int i_size, int *i_idx );
#define File_Select(a) Dummy_Select(NULL, a, 0, 0, 0, NULL)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment