- Gdi32: Update metafile structure.
authorJames Tabor <james.tabor@reactos.org>
Mon, 24 Aug 2009 06:06:05 +0000 (06:06 +0000)
committerJames Tabor <james.tabor@reactos.org>
Mon, 24 Aug 2009 06:06:05 +0000 (06:06 +0000)
svn path=/trunk/; revision=42901

reactos/dll/win32/gdi32/include/gdi32p.h
reactos/dll/win32/gdi32/objects/font.c
reactos/dll/win32/gdi32/objects/metafile.c

index 3db5e49..e82c969 100644 (file)
@@ -42,32 +42,42 @@ typedef INT
 /* TYPES *********************************************************************/
 
 // Based on wmfapi.h and Wine.
-typedef struct tagMETAFILEDC {
-  PVOID      pvMetaBuffer;
-  HANDLE     hFile;
-  DWORD      Size;
-  METAHEADER mh;
-  UINT       handles_size, cur_handles;
-  HGDIOBJ   *handles;
-
-  // more DC object stuff.
-  HGDIOBJ    Pen;
-  HGDIOBJ    Brush;
-  HGDIOBJ    Palette;
-  HGDIOBJ    Font;
-
-  WCHAR      Filename[MAX_PATH+2];
-  // Add more later.
+typedef struct tagMETAFILEDC
+{
+  PVOID       pvMetaBuffer;
+  HANDLE      hFile;
+  DWORD       Size;
+  DWORD       dwWritten;
+  METAHEADER  mh;
+  WORD        reserved;
+  HLOCAL      MFObjList;
+  HPEN        hPen;
+  HBRUSH      hBrush;
+  HDC         hDc;
+  HGDIOBJ     hMetaDc;
+  HPALETTE    hPalette;
+  HFONT       hFont;
+  HBITMAP     hBitmap;
+  HRGN        hRegion;
+  HGDIOBJ     hMetafile;
+  HGDIOBJ     hMemDc;
+  HPEN        hExtPen;
+  HGDIOBJ     hEnhMetaDc;
+  HGDIOBJ     hEnhMetaFile;
+  HCOLORSPACE hColorSpace;
+  WCHAR       Filename[MAX_PATH+2];
 } METAFILEDC,*PMETAFILEDC;
 
 // Metafile Entry handle
-typedef struct tagMF_ENTRY {
+typedef struct tagMF_ENTRY
+{
   LIST_ENTRY   List;
   HGDIOBJ      hmDC;             // Handle return from NtGdiCreateClientObj.
   PMETAFILEDC pmfDC;
 } MF_ENTRY, *PMF_ENTRY;
 
-typedef struct tagENHMETAFILE {
+typedef struct tagENHMETAFILE
+{
   PVOID      pvMetaBuffer;
   HANDLE     hFile;      /* Handle for disk based MetaFile */
   DWORD      Size;
index 2387f14..2cb6f2c 100644 (file)
@@ -1,5 +1,4 @@
-/* $Id$
- *
+/*
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
  * FILE:            lib/gdi32/object/font.c
index 8d7c89b..61ded65 100644 (file)
@@ -143,7 +143,6 @@ CreateMetaFileW(
 {
   HANDLE hFile;
   HDC hmDC;
-  DWORD dwWritten;
   PMETAFILEDC pmfDC = LocalAlloc(LMEM_ZEROINIT, sizeof(METAFILEDC));
   if (!pmfDC) return NULL;
 
@@ -151,6 +150,12 @@ CreateMetaFileW(
   pmfDC->mh.mtVersion      = 0x0300;
   pmfDC->mh.mtSize         = pmfDC->mh.mtHeaderSize;
 
+  pmfDC->hPen = GetStockObject(BLACK_PEN);
+  pmfDC->hBrush = GetStockObject(WHITE_BRUSH);
+  pmfDC->hFont = GetStockObject(DEVICE_DEFAULT_FONT);
+  pmfDC->hBitmap = GetStockObject(DEFAULT_BITMAP);
+  pmfDC->hPalette = GetStockObject(DEFAULT_PALETTE);
+
   if (lpszFile)  /* disk based metafile */
   {
     pmfDC->mh.mtType = METAFILE_DISK;
@@ -160,7 +165,6 @@ CreateMetaFileW(
          (LPTSTR) &pmfDC->Filename,
                (LPTSTR*) &lpszFile))
     {
-//       MFDRV_DeleteDC( dc->physDev );
        LocalFree(pmfDC);
        return NULL;
     }
@@ -168,14 +172,12 @@ CreateMetaFileW(
     if ((hFile = CreateFileW(pmfDC->Filename, GENERIC_WRITE, 0, NULL,
                                CREATE_ALWAYS, 0, 0)) == INVALID_HANDLE_VALUE)
     {
-//       MFDRV_DeleteDC( dc->physDev );
        LocalFree(pmfDC);
        return NULL;
     }
 
-    if (!WriteFile( hFile, &pmfDC->mh, sizeof(pmfDC->mh), &dwWritten, NULL ))
+    if (!WriteFile( hFile, &pmfDC->mh, sizeof(pmfDC->mh), &pmfDC->dwWritten, NULL ))
     {
-//       MFDRV_DeleteDC( dc->physDev );
        LocalFree(pmfDC);
        return NULL;
     }