- Gdi32: Update metafile structure.

svn path=/trunk/; revision=42901
This commit is contained in:
James Tabor 2009-08-24 06:06:05 +00:00
parent c1854b985e
commit 69dffc5810
3 changed files with 36 additions and 25 deletions

View 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;

View file

@ -1,5 +1,4 @@
/* $Id$
*
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: lib/gdi32/object/font.c

View 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;
}