[vlc-commits] Freetype: simplify win32 fonts lookup folder
Jean-Baptiste Kempf
git at videolan.org
Sun Dec 15 16:16:46 CET 2013
vlc | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Sun Dec 15 16:15:53 2013 +0100| [a888fdf60d0a72478ca82fc472d43043298c2410] | committer: Jean-Baptiste Kempf
Freetype: simplify win32 fonts lookup folder
It's less elegant, because it is not cached, but it's cleaner in
freetype.c with less #ifdef all around...
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a888fdf60d0a72478ca82fc472d43043298c2410
---
modules/text_renderer/freetype.c | 25 ++++---------------------
modules/text_renderer/platform_fonts.c | 22 ++++++++++++++++++++--
modules/text_renderer/platform_fonts.h | 1 +
3 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/modules/text_renderer/freetype.c b/modules/text_renderer/freetype.c
index 20e438b..5e0233b 100644
--- a/modules/text_renderer/freetype.c
+++ b/modules/text_renderer/freetype.c
@@ -342,11 +342,6 @@ struct filter_sys_t
bool bold, bool italic, int size,
int *index);
- /* Cache the Win32 font folder */
-#ifdef _WIN32
- char* psz_win_fonts_path;
-#endif
-
};
/* */
@@ -1972,17 +1967,6 @@ static int Create( vlc_object_t *p_this )
p_sys->f_shadow_vector_x = f_shadow_distance * cos(2 * M_PI * f_shadow_angle / 360);
p_sys->f_shadow_vector_y = f_shadow_distance * sin(2 * M_PI * f_shadow_angle / 360);
-#ifdef _WIN32
- /* Get Windows Font folder */
- wchar_t wdir[MAX_PATH];
- if( S_OK != SHGetFolderPathW( NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, wdir ) )
- {
- GetWindowsDirectoryW( wdir, MAX_PATH );
- wcscat( wdir, L"\\fonts" );
- }
- p_sys->psz_win_fonts_path = FromWide( wdir );
-#endif
-
/* Set default psz_fontname */
if( !psz_fontname || !*psz_fontname )
{
@@ -1991,11 +1975,14 @@ static int Create( vlc_object_t *p_this )
psz_fontname = strdup( DEFAULT_FAMILY );
#else
# ifdef _WIN32
- if( asprintf( &psz_fontname, "%s"DEFAULT_FONT_FILE, p_sys->psz_win_fonts_path ) == -1 )
+ /* 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
@@ -2109,10 +2096,6 @@ static void Destroy( vlc_object_t *p_this )
free( p_sys->style.psz_fontname );
free( p_sys->style.psz_monofontname );
-#ifdef _WIN32
- free( p_sys->psz_win_fonts_path );
-#endif
-
Destroy_FT( p_this );
free( p_sys );
}
diff --git a/modules/text_renderer/platform_fonts.c b/modules/text_renderer/platform_fonts.c
index a666a5c..8466ccc 100644
--- a/modules/text_renderer/platform_fonts.c
+++ b/modules/text_renderer/platform_fonts.c
@@ -253,6 +253,18 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *lpelfe, const NEWTEXTM
return GetFileFontByName( (LPCTSTR)lpelfe->elfFullName, (char **)lParam );
}
+char *GetWindowsFontPath()
+{
+ wchar_t wdir[MAX_PATH];
+ if( S_OK != SHGetFolderPathW( NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, wdir ) )
+ {
+ GetWindowsDirectoryW( wdir, MAX_PATH );
+ wcscat( wdir, L"\\fonts" );
+ }
+ return FromWide( wdir );
+}
+
+
char* Win32_Select( filter_t *p_filter, const char* family,
bool b_bold, bool b_italic, int i_size, int *i_idx )
{
@@ -290,21 +302,27 @@ char* Win32_Select( filter_t *p_filter, const char* family,
return psz_filename;
else
{
+ /* Get Windows Font folder */
+ char psz_win_fonts_path = GetWindowsFontPath();
char *psz_tmp;
- if( asprintf( &psz_tmp, "%s\\%s", p_filter->p_sys->psz_win_fonts_path, psz_filename ) == -1 )
+ if( asprintf( &psz_tmp, "%s\\%s", psz_win_fonts_path, psz_filename ) == -1 )
{
free( psz_filename );
+ free( psz_win_fonts_path );
return NULL;
}
free( psz_filename );
+ free( psz_win_fonts_path );
+
return psz_tmp;
}
}
else /* Let's take any font we can */
fail:
{
+ char psz_win_fonts_path = GetWindowsFontPath();
char *psz_tmp;
- if( asprintf( &psz_tmp, "%s\\%s", p_filter->p_sys->psz_win_fonts_path, "arial.ttf" ) == -1 )
+ if( asprintf( &psz_tmp, "%s\\%s", psz_win_fonts_path, "arial.ttf" ) == -1 )
return NULL;
else
return psz_tmp;
diff --git a/modules/text_renderer/platform_fonts.h b/modules/text_renderer/platform_fonts.h
index ac70bbe..87cea63 100644
--- a/modules/text_renderer/platform_fonts.h
+++ b/modules/text_renderer/platform_fonts.h
@@ -41,6 +41,7 @@ void FontConfig_BuildCache( filter_t *p_filter );
#ifdef _WIN32
+char *GetWindowsFontPath();
char* Win32_Select( filter_t *p_filter, const char* family,
bool b_bold, bool b_italic, int i_size, int *i_idx );
More information about the vlc-commits
mailing list