[2/2] gdi32: Add support for FR_NOT_ENUM to AddFontResource().

Dmitry Timoshkov dmitry at codeweavers.com
Wed Oct 27 04:30:43 CDT 2010


---
 dlls/gdi32/freetype.c |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index c35e332..cc9b722 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -1892,7 +1892,7 @@ LOAD_FUNCPTR(FcPatternGetString);
     return;
 }
 
-static BOOL load_font_from_data_dir(LPCWSTR file)
+static BOOL load_font_from_data_dir(LPCWSTR file, DWORD flags)
 {
     BOOL ret = FALSE;
     const char *data_dir = wine_get_data_dir();
@@ -1914,14 +1914,14 @@ static BOOL load_font_from_data_dir(LPCWSTR file)
         WideCharToMultiByte(CP_UNIXCP, 0, file, -1, unix_name + strlen(unix_name), len, NULL, NULL);
 
         EnterCriticalSection( &freetype_cs );
-        ret = AddFontFileToList(unix_name, NULL, NULL, ADDFONT_FORCE_BITMAP, NULL);
+        ret = AddFontFileToList(unix_name, NULL, NULL, flags, NULL);
         LeaveCriticalSection( &freetype_cs );
         HeapFree(GetProcessHeap(), 0, unix_name);
     }
     return ret;
 }
 
-static BOOL load_font_from_winfonts_dir(LPCWSTR file)
+static BOOL load_font_from_winfonts_dir(LPCWSTR file, DWORD flags)
 {
     static const WCHAR slashW[] = {'\\','\0'};
     BOOL ret = FALSE;
@@ -1934,7 +1934,7 @@ static BOOL load_font_from_winfonts_dir(LPCWSTR file)
     strcatW(windowsdir, file);
     if ((unixname = wine_get_unix_file_name(windowsdir))) {
         EnterCriticalSection( &freetype_cs );
-        ret = AddFontFileToList(unixname, NULL, NULL, ADDFONT_FORCE_BITMAP, NULL);
+        ret = AddFontFileToList(unixname, NULL, NULL, flags, NULL);
         LeaveCriticalSection( &freetype_cs );
         HeapFree(GetProcessHeap(), 0, unixname);
     }
@@ -1965,7 +1965,7 @@ static void load_system_fonts(void)
                     HeapFree(GetProcessHeap(), 0, unixname);
                 }
                 if (!added)
-                    load_font_from_data_dir(data);
+                    load_font_from_data_dir(data, ADDFONT_FORCE_BITMAP);
             }
         }
         RegCloseKey(hkey);
@@ -2127,25 +2127,25 @@ INT WineEngAddFontResourceEx(LPCWSTR file, DWORD flags, PVOID pdv)
     if (ft_handle)  /* do it only if we have freetype up and running */
     {
         char *unixname;
+        DWORD add_font_flags = ADDFONT_FORCE_BITMAP;
 
-        if(flags)
-            FIXME("Ignoring flags %x\n", flags);
+        if (flags & FR_NOT_ENUM) add_font_flags |= ADDFONT_HIDDEN;
 
         if((unixname = wine_get_unix_file_name(file)))
         {
             EnterCriticalSection( &freetype_cs );
-            ret = AddFontFileToList(unixname, NULL, NULL, ADDFONT_FORCE_BITMAP, NULL);
+            ret = AddFontFileToList(unixname, NULL, NULL, add_font_flags, NULL);
             LeaveCriticalSection( &freetype_cs );
             HeapFree(GetProcessHeap(), 0, unixname);
         }
         if (!ret && !strchrW(file, '\\')) {
             /* Try in %WINDIR%/fonts, needed for Fotobuch Designer */
-            ret = load_font_from_winfonts_dir(file);
+            ret = load_font_from_winfonts_dir(file, add_font_flags);
             if (!ret) {
                 /* Try in datadir/fonts (or builddir/fonts),
                  * needed for Magic the Gathering Online
                  */
-                ret = load_font_from_data_dir(file);
+                ret = load_font_from_data_dir(file, add_font_flags);
             }
         }
     }
@@ -2847,7 +2847,7 @@ BOOL WineEngInit(void)
                         HeapFree(GetProcessHeap(), 0, unixname);
                     }
                     if (!added)
-                        load_font_from_data_dir(data);
+                        load_font_from_data_dir(data, ADDFONT_FORCE_BITMAP);
                 }
                 /* reset dlen and vlen */
                 dlen = datalen;
-- 
1.7.0.6




More information about the wine-patches mailing list