[gdi32] Revise CreateScalableFontResourceA to pass through CreateScalableFontResourceW.
Jeremy White
jwhite at winehq.org
Fri Mar 7 10:11:09 CST 2008
---
dlls/gdi32/font.c | 67 ++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 51 insertions(+), 16 deletions(-)
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index b8def4e..24e16f3 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -2662,23 +2662,44 @@ BOOL WINAPI CreateScalableFontResourceA( DWORD fHidden,
LPCSTR lpszFontFile,
LPCSTR lpszCurrentPath )
{
- HANDLE f;
+ LPWSTR lpszResourceFileW = NULL;
+ LPWSTR lpszFontFileW = NULL;
+ LPWSTR lpszCurrentPathW = NULL;
+ int len;
+ BOOL ret;
- /* fHidden=1 - only visible for the calling app, read-only, not
- * enumbered with EnumFonts/EnumFontFamilies
- * lpszCurrentPath can be NULL
- */
- FIXME("(%d,%s,%s,%s): stub\n",
- fHidden, debugstr_a(lpszResourceFile), debugstr_a(lpszFontFile),
- debugstr_a(lpszCurrentPath) );
+ if (lpszResourceFile)
+ {
+ len = MultiByteToWideChar(CP_ACP, 0, lpszResourceFile, -1, NULL, 0);
+ lpszResourceFileW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, lpszResourceFile, -1, lpszResourceFileW, len);
+ }
- /* If the output file already exists, return the ERROR_FILE_EXISTS error as specified in MSDN */
- if ((f = CreateFileA(lpszResourceFile, 0, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)) != INVALID_HANDLE_VALUE) {
- CloseHandle(f);
- SetLastError(ERROR_FILE_EXISTS);
- return FALSE;
+ if (lpszFontFile)
+ {
+ len = MultiByteToWideChar(CP_ACP, 0, lpszFontFile, -1, NULL, 0);
+ lpszFontFileW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, lpszFontFile, -1, lpszFontFileW, len);
}
- return FALSE; /* create failed */
+
+ if (lpszCurrentPath)
+ {
+ len = MultiByteToWideChar(CP_ACP, 0, lpszCurrentPath, -1, NULL, 0);
+ lpszCurrentPathW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, lpszCurrentPath, -1, lpszCurrentPathW, len);
+ }
+
+ ret = CreateScalableFontResourceW(fHidden, lpszResourceFileW,
+ lpszFontFileW, lpszCurrentPathW);
+
+ if (lpszResourceFileW)
+ HeapFree(GetProcessHeap(), 0, lpszResourceFileW);
+ if (lpszFontFileW)
+ HeapFree(GetProcessHeap(), 0, lpszFontFileW);
+ if (lpszCurrentPathW)
+ HeapFree(GetProcessHeap(), 0, lpszCurrentPathW);
+
+ return ret;
}
/***********************************************************************
@@ -2689,8 +2710,22 @@ BOOL WINAPI CreateScalableFontResourceW( DWORD fHidden,
LPCWSTR lpszFontFile,
LPCWSTR lpszCurrentPath )
{
- FIXME("(%d,%p,%p,%p): stub\n",
- fHidden, lpszResourceFile, lpszFontFile, lpszCurrentPath );
+ HANDLE f;
+ FIXME("(%d,%s,%s,%s): stub\n",
+ fHidden, debugstr_w(lpszResourceFile), debugstr_w(lpszFontFile),
+ debugstr_w(lpszCurrentPath) );
+
+ /* fHidden=1 - only visible for the calling app, read-only, not
+ * enumbered with EnumFonts/EnumFontFamilies
+ * lpszCurrentPath can be NULL
+ */
+
+ /* If the output file already exists, return the ERROR_FILE_EXISTS error as specified in MSDN */
+ if ((f = CreateFileW(lpszResourceFile, 0, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)) != INVALID_HANDLE_VALUE) {
+ CloseHandle(f);
+ SetLastError(ERROR_FILE_EXISTS);
+ return FALSE;
+ }
return FALSE; /* create failed */
}
--
1.5.3.6
More information about the wine-patches
mailing list