]> granicus.if.org Git - libass/commitdiff
Remove libass dependency on global font_fontconfig variable.
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>
Wed, 30 Apr 2008 14:16:22 +0000 (14:16 +0000)
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>
Wed, 30 Apr 2008 14:16:22 +0000 (14:16 +0000)
A new function (ass_set_fonts_nofc) is introduced instead of an extra argument
to existing ass_set_fonts to keep binary compatibility with older versions of
the library.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26614 b3059339-0415-0410-9bf9-f77b7e298cf2

libass/ass.h
libass/ass_fontconfig.c
libass/ass_fontconfig.h
libass/ass_mp.c
libass/ass_render.c

index 851be6681d8c4c818358ba79d80915b4b946e406..9710ae727685cda790344613ae7c33b40f439f47 100644 (file)
@@ -93,6 +93,11 @@ void ass_set_line_spacing(ass_renderer_t* priv, double line_spacing);
  */
 int  ass_set_fonts(ass_renderer_t* priv, const char* default_font, const char* default_family);
 
+/**
+ * \brief set font lookup defaults, don't use fontconfig even if it is available
+ */
+int  ass_set_fonts_nofc(ass_renderer_t* priv, const char* default_font, const char* default_family);
+
 /**
  * \brief render a frame, producing a list of ass_image_t
  * \param priv library
index addcc826468920e21d4ebbc3bb616f3529c021ee..b9a8f42c4519b8f4deb4e20bda3986a89f528a8d 100644 (file)
@@ -40,8 +40,6 @@
 #include <fontconfig/fcfreetype.h>
 #endif
 
-extern int font_fontconfig;
-
 struct fc_instance_s {
 #ifdef HAVE_FONTCONFIG
        FcConfig* config;
@@ -155,7 +153,7 @@ char* fontconfig_select(fc_instance_t* priv, const char* family, unsigned bold,
                        uint32_t code)
 {
        char* res = 0;
-       if (font_fontconfig < 0) {
+       if (!priv->config) {
                *index = priv->index_default;
                return priv->path_default;
        }
@@ -319,16 +317,17 @@ static void process_fontdata(fc_instance_t* priv, ass_library_t* library, FT_Lib
  * \param path default font path
  * \return pointer to fontconfig private data
 */ 
-fc_instance_t* fontconfig_init(ass_library_t* library, FT_Library ftlibrary, const char* family, const char* path)
+fc_instance_t* fontconfig_init(ass_library_t* library, FT_Library ftlibrary, const char* family, const char* path, int fc)
 {
        int rc;
        fc_instance_t* priv = calloc(1, sizeof(fc_instance_t));
        const char* dir = library->fonts_dir;
        int i;
        
-       if (font_fontconfig < 0) {
+       if (!fc) {
                mp_msg(MSGT_ASS, MSGL_WARN,
                       MSGTR_LIBASS_FontconfigDisabledDefaultFontWillBeUsed);
+               priv->config = NULL;
                priv->path_default = strdup(path);
                priv->index_default = 0;
                return priv;
index 3806f2468b3096af0222cc0b8d8c502e17c2ecb5..f5762f854b68fe9016e519ce18161926a598382c 100644 (file)
@@ -32,7 +32,7 @@
 
 typedef struct fc_instance_s fc_instance_t;
 
-fc_instance_t* fontconfig_init(ass_library_t* library, FT_Library ftlibrary, const char* family, const char* path);
+fc_instance_t* fontconfig_init(ass_library_t* library, FT_Library ftlibrary, const char* family, const char* path, int fc);
 char* fontconfig_select(fc_instance_t* priv, const char* family, unsigned bold, unsigned italic, int* index, uint32_t code);
 void fontconfig_done(fc_instance_t* priv);
 
index b3b3963eef4637ab32debb35d8054ea40686f1b1..5fa2cd53c2b84600b827e660a264c12c81d7d79a 100644 (file)
@@ -242,7 +242,10 @@ void ass_configure_fonts(ass_renderer_t* priv) {
        else if (font_fontconfig >= 0 && font_name) family = strdup(font_name);
        else family = 0;
 
-       ass_set_fonts(priv, path, family);
+       if (font_fontconfig >= 0)
+               ass_set_fonts(priv, path, family);
+       else
+               ass_set_fonts_nofc(priv, path, family);
 
        free(dir);
        free(path);
index 05657294a7ee984f9c210f5ab7aedc65c5f7e242..8951af0ad0fcc4b115e13d9524d97728a0486d8e 100644 (file)
@@ -2083,7 +2083,7 @@ void ass_set_line_spacing(ass_renderer_t* priv, double line_spacing)
        priv->settings.line_spacing = line_spacing;
 }
 
-int ass_set_fonts(ass_renderer_t* priv, const char* default_font, const char* default_family)
+static int ass_set_fonts_(ass_renderer_t* priv, const char* default_font, const char* default_family, int fc)
 {
        if (priv->settings.default_font)
                free(priv->settings.default_font);
@@ -2095,11 +2095,21 @@ int ass_set_fonts(ass_renderer_t* priv, const char* default_font, const char* de
 
        if (priv->fontconfig_priv)
                fontconfig_done(priv->fontconfig_priv);
-       priv->fontconfig_priv = fontconfig_init(priv->library, priv->ftlibrary, default_family, default_font);
+       priv->fontconfig_priv = fontconfig_init(priv->library, priv->ftlibrary, default_family, default_font, fc);
 
        return !!priv->fontconfig_priv;
 }
 
+int ass_set_fonts(ass_renderer_t* priv, const char* default_font, const char* default_family)
+{
+       return ass_set_fonts_(priv, default_font, default_family, 1);
+}
+
+int ass_set_fonts_nofc(ass_renderer_t* priv, const char* default_font, const char* default_family)
+{
+       return ass_set_fonts_(priv, default_font, default_family, 0);
+}
+
 /**
  * \brief Start a new frame
  */