Alexandre Julliard : gdi32: Don't bother caching the font type.

Alexandre Julliard julliard at winehq.org
Fri Oct 23 14:27:18 CDT 2020


Module: wine
Branch: master
Commit: a13492b3766ed1d71e3a42b43dbc544f297e67d4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=a13492b3766ed1d71e3a42b43dbc544f297e67d4

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Oct 23 20:14:49 2020 +0200

gdi32: Don't bother caching the font type.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/freetype.c | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 718c7f3407e..cf8b2c66e22 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -3239,7 +3239,7 @@ struct fontdir
 #include <poppack.h>
 
 static void GetEnumStructs(Face *face, const WCHAR *family_name, LPENUMLOGFONTEXW pelf,
-                           NEWTEXTMETRICEXW *pntm, LPDWORD ptype);
+                           NEWTEXTMETRICEXW *pntm);
 
 static BOOL get_fontdir( const WCHAR *dos_name, struct fontdir *fd )
 {
@@ -3249,7 +3249,6 @@ static BOOL get_fontdir( const WCHAR *dos_name, struct fontdir *fd )
     WCHAR *family_name;
     ENUMLOGFONTEXW elf;
     NEWTEXTMETRICEXW ntm;
-    DWORD type;
 
     if (!(unix_name = wine_get_unix_file_name( dos_name ))) return FALSE;
     ft_face = new_ft_face( unix_name, NULL, 0, 0, FALSE );
@@ -3259,14 +3258,14 @@ static BOOL get_fontdir( const WCHAR *dos_name, struct fontdir *fd )
     if (face)
     {
         family_name = ft_face_get_family_name( ft_face, GetSystemDefaultLCID() );
-        GetEnumStructs( face, family_name, &elf, &ntm, &type );
+        GetEnumStructs( face, family_name, &elf, &ntm );
         release_face( face );
         HeapFree( GetProcessHeap(), 0, family_name );
     }
     pFT_Done_Face( ft_face );
 
     if (!face) return FALSE;
-    if ((type & TRUETYPE_FONTTYPE) == 0) return FALSE;
+    if (!(ntm.ntmTm.tmPitchAndFamily & TMPF_TRUETYPE)) return FALSE;
 
     memset( fd, 0, sizeof(*fd) );
 
@@ -5217,8 +5216,19 @@ static DWORD create_enum_charset_list(DWORD charset, struct enum_charset_list *l
     return n;
 }
 
+static UINT get_font_type( const NEWTEXTMETRICEXW *ntm )
+{
+    UINT ret = 0;
+
+    if (ntm->ntmTm.tmPitchAndFamily & TMPF_TRUETYPE)  ret |= TRUETYPE_FONTTYPE;
+    if (ntm->ntmTm.tmPitchAndFamily & TMPF_DEVICE)    ret |= DEVICE_FONTTYPE;
+    if (!(ntm->ntmTm.tmPitchAndFamily & TMPF_VECTOR)) ret |= RASTER_FONTTYPE;
+    return ret;
+}
+
+
 static void GetEnumStructs(Face *face, const WCHAR *family_name, LPENUMLOGFONTEXW pelf,
-			   NEWTEXTMETRICEXW *pntm, LPDWORD ptype)
+                           NEWTEXTMETRICEXW *pntm)
 {
     struct gdi_font *gdi_font;
     GdiFont *font;
@@ -5229,7 +5239,6 @@ static void GetEnumStructs(Face *face, const WCHAR *family_name, LPENUMLOGFONTEX
         TRACE("Cached\n");
         *pelf = face->cached_enum_data->elf;
         *pntm = face->cached_enum_data->ntm;
-        *ptype = face->cached_enum_data->type;
         return;
     }
 
@@ -5303,20 +5312,11 @@ static void GetEnumStructs(Face *face, const WCHAR *family_name, LPENUMLOGFONTEX
     pelf->elfLogFont.lfQuality = DRAFT_QUALITY;
     pelf->elfLogFont.lfPitchAndFamily = (pntm->ntmTm.tmPitchAndFamily & 0xf1) + 1;
 
-    *ptype = 0;
-    if (pntm->ntmTm.tmPitchAndFamily & TMPF_TRUETYPE)
-        *ptype |= TRUETYPE_FONTTYPE;
-    if (pntm->ntmTm.tmPitchAndFamily & TMPF_DEVICE)
-        *ptype |= DEVICE_FONTTYPE;
-    if(!(pntm->ntmTm.tmPitchAndFamily & TMPF_VECTOR))
-        *ptype |= RASTER_FONTTYPE;
-
     face->cached_enum_data = HeapAlloc(GetProcessHeap(), 0, sizeof(*face->cached_enum_data));
     if (face->cached_enum_data)
     {
         face->cached_enum_data->elf = *pelf;
         face->cached_enum_data->ntm = *pntm;
-        face->cached_enum_data->type = *ptype;
     }
 
     free_gdi_font(gdi_font);
@@ -5347,10 +5347,10 @@ static BOOL enum_face_charsets(const Family *family, Face *face, struct enum_cha
 {
     ENUMLOGFONTEXW elf;
     NEWTEXTMETRICEXW ntm;
-    DWORD type = 0;
-    DWORD i;
+    DWORD type, i;
 
-    GetEnumStructs( face, face->family->family_name, &elf, &ntm, &type );
+    GetEnumStructs( face, face->family->family_name, &elf, &ntm );
+    type = get_font_type( &ntm );
     for(i = 0; i < list->total; i++) {
         if(!face->scalable && face->fs.fsCsb[0] == 0) { /* OEM bitmap */
             elf.elfLogFont.lfCharSet = ntm.ntmTm.tmCharSet = OEM_CHARSET;




More information about the wine-cvs mailing list