Huw Davies : gdi32: Add a helper to retrieve the family pointer.

Alexandre Julliard julliard at winehq.org
Tue Mar 27 12:48:06 CDT 2012


Module: wine
Branch: master
Commit: 7ad330deef3a8e108ce6cc456b7721b8e3e506bb
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7ad330deef3a8e108ce6cc456b7721b8e3e506bb

Author: Huw Davies <huw at codeweavers.com>
Date:   Tue Mar 27 11:48:39 2012 +0100

gdi32: Add a helper to retrieve the family pointer.

---

 dlls/gdi32/freetype.c |   59 +++++++++++++++++++++++++++++-------------------
 1 files changed, 36 insertions(+), 23 deletions(-)

diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index e174921..1b38a8e 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -1520,6 +1520,41 @@ static void get_family_names( FT_Face ft_face, WCHAR **name, WCHAR **english, BO
     }
 }
 
+static Family *get_family( FT_Face ft_face, BOOL vertical )
+{
+    Family *family;
+    WCHAR *name, *english_name;
+
+    get_family_names( ft_face, &name, &english_name, vertical );
+
+    family = find_family_from_name( name );
+
+    if (!family)
+    {
+        family = HeapAlloc( GetProcessHeap(), 0, sizeof(*family) );
+        family->FamilyName = strdupW( name );
+        family->EnglishName = english_name ? strdupW( english_name ) : NULL;
+        list_init( &family->faces );
+        family->replacement = &family->faces;
+        list_add_tail( &font_list, &family->entry );
+
+        if (english_name)
+        {
+            FontSubst *subst = HeapAlloc( GetProcessHeap(), 0, sizeof(*subst) );
+            subst->from.name = strdupW( english_name );
+            subst->from.charset = -1;
+            subst->to.name = strdupW( name );
+            subst->to.charset = -1;
+            add_font_subst( &font_subst_list, subst, 0 );
+        }
+    }
+    HeapFree( GetProcessHeap(), 0, name );
+    HeapFree( GetProcessHeap(), 0, english_name );
+
+    return family;
+}
+
+
 #define ADDFONT_EXTERNAL_FONT 0x01
 #define ADDFONT_FORCE_BITMAP  0x02
 #define ADDFONT_ADD_TO_CACHE  0x04
@@ -1533,7 +1568,6 @@ static void AddFaceToList(FT_Face ft_face, const char *file, void *font_data_ptr
     do {
         TT_OS2 *pOS2;
         TT_Header *pHeader;
-        WCHAR *family_name, *english_family;
         Face *face;
         struct list *face_elem_ptr;
         FT_WinFNT_HeaderRec winfnt_header;
@@ -1545,28 +1579,7 @@ static void AddFaceToList(FT_Face ft_face, const char *file, void *font_data_ptr
         if(!FT_IS_SCALABLE(ft_face))
             size = (My_FT_Bitmap_Size *)ft_face->available_sizes + bitmap_num;
 
-        get_family_names( ft_face, &family_name, &english_family, vertical );
-
-        family = find_family_from_name( family_name );
-        if(!family) {
-            family = HeapAlloc(GetProcessHeap(), 0, sizeof(*family));
-            family->FamilyName = strdupW( family_name );
-            family->EnglishName = english_family ? strdupW( english_family ) : NULL;
-            list_init(&family->faces);
-            family->replacement = &family->faces;
-            list_add_tail(&font_list, &family->entry);
-
-            if(english_family) {
-                FontSubst *subst = HeapAlloc(GetProcessHeap(), 0, sizeof(*subst));
-                subst->from.name = strdupW(english_family);
-                subst->from.charset = -1;
-                subst->to.name = strdupW(family_name);
-                subst->to.charset = -1;
-                add_font_subst(&font_subst_list, subst, 0);
-            }
-        }
-        HeapFree(GetProcessHeap(), 0, family_name);
-        HeapFree(GetProcessHeap(), 0, english_family);
+        family = get_family( ft_face, vertical );
 
         StyleW = towstr(CP_ACP, ft_face->style_name);
 




More information about the wine-cvs mailing list