diff options
author | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-11-27 17:13:52 +0000 |
---|---|---|
committer | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-11-27 17:13:52 +0000 |
commit | 6e9a5a842c4e7ad71ddee1fbc5707d74c4f79da0 (patch) | |
tree | 960bc859ad36d4ba00c9f9e919ab2f14bf4ecade /libass/ass_font.c | |
parent | 98f0345059bb7d99596e78407b1df628584dfea3 (diff) | |
download | mpv-6e9a5a842c4e7ad71ddee1fbc5707d74c4f79da0.tar.bz2 mpv-6e9a5a842c4e7ad71ddee1fbc5707d74c4f79da0.tar.xz |
Move ass_font_t allocation to ass_font.h.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21333 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass/ass_font.c')
-rw-r--r-- | libass/ass_font.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libass/ass_font.c b/libass/ass_font.c index 56e89a5c7f..189173e6b8 100644 --- a/libass/ass_font.c +++ b/libass/ass_font.c @@ -48,23 +48,29 @@ static void charmap_magic(FT_Face face) } } -int ass_font_init(FT_Library ftlibrary, void* fc_priv, ass_font_t* font, ass_font_desc_t* desc) +ass_font_t* ass_font_new(FT_Library ftlibrary, void* fc_priv, ass_font_desc_t* desc) { char* path; int index; FT_Face face; int error; + ass_font_t* font; + + font = ass_font_cache_find(desc); + if (font) + return font; path = fontconfig_select(fc_priv, desc->family, desc->bold, desc->italic, &index); error = FT_New_Face(ftlibrary, path, index, &face); if (error) { mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_ErrorOpeningFont, path, index); - return 1; + return 0; } charmap_magic(face); + font = calloc(1, sizeof(ass_font_t)); font->path = strdup(path); font->index = index; font->face = face; @@ -77,7 +83,9 @@ int ass_font_init(FT_Library ftlibrary, void* fc_priv, ass_font_t* font, ass_fon font->v.x = font->v.y = 0; font->size = 0; - return 0; + ass_font_cache_add(font); + + return font; } void ass_font_set_transform(ass_font_t* font, FT_Matrix* m, FT_Vector* v) @@ -133,4 +141,5 @@ void ass_font_free(ass_font_t* font) if (font->face) FT_Done_Face(font->face); if (font->path) free(font->path); if (font->desc.family) free(font->desc.family); + free(font); } |