GDI: unicodify CreateMetaFile (take 2)
Mike McCormack
mike at codeweavers.com
Sun Mar 28 07:20:07 CST 2004
ChangeLog:
* unicodify CreateMetaFile
-------------- next part --------------
? dlls/gdi/gdi32.spec.c
? dlls/gdi/tests/gdi32_test.exe.spec.c
Index: objects/metafile.c
===================================================================
RCS file: /home/wine/wine/objects/metafile.c,v
retrieving revision 1.64
diff -u -r1.64 metafile.c
--- objects/metafile.c 4 Mar 2004 20:41:12 -0000 1.64
+++ objects/metafile.c 28 Mar 2004 12:28:45 -0000
@@ -370,7 +370,7 @@
* Take a memory based METAHEADER and change it to a disk based METAHEADER
* assosiated with filename. Note: Trashes contents of old one.
*/
-METAHEADER *MF_CreateMetaHeaderDisk(METAHEADER *mh, LPCSTR filename)
+METAHEADER *MF_CreateMetaHeaderDisk(METAHEADER *mh, LPCVOID filename, BOOL uni )
{
METAHEADERDISK *mhd;
DWORD size;
@@ -380,7 +380,12 @@
mh->mtType = METAFILE_DISK;
size = HeapSize( GetProcessHeap(), 0, mh );
mhd = (METAHEADERDISK *)((char *)mh + sizeof(METAHEADER));
- strcpy(mhd->filename, filename);
+
+ if( uni )
+ WideCharToMultiByte(CP_ACP, 0, filename, -1,
+ mhd->filename, sizeof mhd->filename, NULL, NULL);
+ else
+ strncpy( mhd->filename, filename, sizeof mhd->filename );
return mh;
}
@@ -413,7 +418,7 @@
}
WriteFile(hFile, mh2, mh2->mtSize * 2, NULL, NULL);
CloseHandle(hFile);
- mh2 = MF_CreateMetaHeaderDisk(mh2, lpFilename);
+ mh2 = MF_CreateMetaHeaderDisk(mh2, lpFilename, FALSE);
}
return MF_Create_HMETAFILE16( mh2 );
@@ -455,8 +460,6 @@
}
if(lpFilename) { /* disk based metafile */
- DWORD len;
- LPSTR lpFilenameA;
if((hFile = CreateFileW(lpFilename, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, 0, 0)) == INVALID_HANDLE_VALUE) {
HeapFree( GetProcessHeap(), 0, mh2 );
@@ -464,11 +467,7 @@
}
WriteFile(hFile, mh2, mh2->mtSize * 2, NULL, NULL);
CloseHandle(hFile);
- len = WideCharToMultiByte(CP_ACP, 0, lpFilename, -1, NULL, 0, NULL, NULL);
- lpFilenameA = HeapAlloc(GetProcessHeap(), 0, len);
- WideCharToMultiByte(CP_ACP, 0, lpFilename, -1, lpFilenameA, len, NULL, NULL);
- mh2 = MF_CreateMetaHeaderDisk(mh2, lpFilenameA);
- HeapFree(GetProcessHeap(), 0, lpFilenameA);
+ mh2 = MF_CreateMetaHeaderDisk(mh2, lpFilename, TRUE);
}
return MF_Create_HMETAFILE( mh2 );
Index: dlls/gdi/gdi_private.h
===================================================================
RCS file: /home/wine/wine/dlls/gdi/gdi_private.h,v
retrieving revision 1.10
diff -u -r1.10 gdi_private.h
--- dlls/gdi/gdi_private.h 12 Mar 2004 19:46:13 -0000 1.10
+++ dlls/gdi/gdi_private.h 28 Mar 2004 12:28:45 -0000
@@ -356,7 +356,7 @@
/* metafile.c */
extern HMETAFILE MF_Create_HMETAFILE(METAHEADER *mh);
extern HMETAFILE16 MF_Create_HMETAFILE16(METAHEADER *mh);
-extern METAHEADER *MF_CreateMetaHeaderDisk(METAHEADER *mr, LPCSTR filename);
+extern METAHEADER *MF_CreateMetaHeaderDisk(METAHEADER *mr, LPCVOID filename, BOOL unicode );
/* path.c */
Index: dlls/gdi/mfdrv/init.c
===================================================================
RCS file: /home/wine/wine/dlls/gdi/mfdrv/init.c,v
retrieving revision 1.29
diff -u -r1.29 init.c
--- dlls/gdi/mfdrv/init.c 15 Jan 2004 00:35:40 -0000 1.29
+++ dlls/gdi/mfdrv/init.c 28 Mar 2004 12:28:45 -0000
@@ -222,7 +222,7 @@
/**********************************************************************
- * CreateMetaFileA (GDI32.@)
+ * CreateMetaFileW (GDI32.@)
*
* Create a new DC and associate it with a metafile. Pass a filename
* to create a disk-based metafile, NULL to create a memory metafile.
@@ -230,14 +230,14 @@
* RETURNS
* A handle to the metafile DC if successful, NULL on failure.
*/
-HDC WINAPI CreateMetaFileA( LPCSTR filename ) /* [in] Filename of disk metafile */
+HDC WINAPI CreateMetaFileW( LPCWSTR filename ) /* [in] Filename of disk metafile */
{
HDC ret;
DC *dc;
METAFILEDRV_PDEVICE *physDev;
HANDLE hFile;
- TRACE("'%s'\n", filename );
+ TRACE("'%s'\n", debugstr_w(filename) );
if (!(dc = MFDRV_AllocMetaFile())) return 0;
physDev = (METAFILEDRV_PDEVICE *)dc->physDev;
@@ -245,12 +245,12 @@
if (filename) /* disk based metafile */
{
physDev->mh->mtType = METAFILE_DISK;
- if ((hFile = CreateFileA(filename, GENERIC_WRITE, 0, NULL,
+ if ((hFile = CreateFileW(filename, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, 0, 0)) == INVALID_HANDLE_VALUE) {
MFDRV_DeleteDC( dc->physDev );
return 0;
}
- if (!WriteFile( hFile, (LPSTR)physDev->mh, sizeof(*physDev->mh), NULL,
+ if (!WriteFile( hFile, physDev->mh, sizeof(*physDev->mh), NULL,
NULL )) {
MFDRV_DeleteDC( dc->physDev );
return 0;
@@ -258,7 +258,7 @@
physDev->hFile = hFile;
/* Grow METAHEADER to include filename */
- physDev->mh = MF_CreateMetaHeaderDisk(physDev->mh, filename);
+ physDev->mh = MF_CreateMetaHeaderDisk(physDev->mh, filename, TRUE);
}
else /* memory based metafile */
physDev->mh->mtType = METAFILE_MEMORY;
@@ -270,23 +270,23 @@
}
/**********************************************************************
- * CreateMetaFileW (GDI32.@)
+ * CreateMetaFileA (GDI32.@)
*/
-HDC WINAPI CreateMetaFileW(LPCWSTR filename)
+HDC WINAPI CreateMetaFileA(LPCSTR filename)
{
- LPSTR filenameA;
+ LPWSTR filenameW;
DWORD len;
HDC hReturnDC;
- if (!filename) return CreateMetaFileA(NULL);
+ if (!filename) return CreateMetaFileW(NULL);
- len = WideCharToMultiByte( CP_ACP, 0, filename, -1, NULL, 0, NULL, NULL );
- filenameA = HeapAlloc( GetProcessHeap(), 0, len );
- WideCharToMultiByte( CP_ACP, 0, filename, -1, filenameA, len, NULL, NULL );
+ len = MultiByteToWideChar( CP_ACP, 0, filename, -1, NULL, 0 );
+ filenameW = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) );
+ MultiByteToWideChar( CP_ACP, 0, filename, -1, filenameW, len );
- hReturnDC = CreateMetaFileA(filenameA);
+ hReturnDC = CreateMetaFileW(filenameW);
- HeapFree( GetProcessHeap(), 0, filenameA );
+ HeapFree( GetProcessHeap(), 0, filenameW );
return hReturnDC;
}
More information about the wine-patches
mailing list