From 160be64e9e8fe2b50954865dbbf8c21f0df84305 Mon Sep 17 00:00:00 2001 From: Huw D M Davies Date: Wed, 3 Apr 2002 22:47:50 +0000 Subject: [PATCH] Added writing META_ESCAPE records. --- dlls/gdi/mfdrv/init.c | 24 +++++++++++++++++++++++- dlls/gdi/mfdrv/metafiledrv.h | 2 ++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/dlls/gdi/mfdrv/init.c b/dlls/gdi/mfdrv/init.c index 0167305ad53..82be6470197 100644 --- a/dlls/gdi/mfdrv/init.c +++ b/dlls/gdi/mfdrv/init.c @@ -56,7 +56,7 @@ static const DC_FUNCTIONS MFDRV_Funcs = NULL, /* pEnumDeviceFonts */ MFDRV_ExcludeClipRect, /* pExcludeClipRect */ NULL, /* pExtDeviceMode */ - NULL, /* pExtEscape */ + MFDRV_ExtEscape, /* pExtEscape */ MFDRV_ExtFloodFill, /* pExtFloodFill */ MFDRV_ExtTextOut, /* pExtTextOut */ MFDRV_FillPath, /* pFillPath */ @@ -536,4 +536,26 @@ int MFDRV_AddHandleDC( PHYSDEV dev ) return physDev->nextHandle++; } +/********************************************************************** + * MFDRV_ExtEscape + */ +INT MFDRV_ExtEscape( PHYSDEV dev, INT nEscape, INT cbInput, LPCVOID in_data, + INT cbOutput, LPVOID out_data ) +{ + METARECORD *mr; + DWORD len; + if(nEscape == MFCOMMENT) { + len = sizeof(*mr) + sizeof(WORD) + ((cbInput + 1) & ~1); + mr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len); + mr->rdSize = len / 2; + mr->rdFunction = META_ESCAPE; + mr->rdParm[0] = nEscape; + mr->rdParm[1] = cbInput; + memcpy(&(mr->rdParm[2]), in_data, cbInput); + MFDRV_WriteRecord( dev, mr, len); + HeapFree(GetProcessHeap(), 0, mr); + return 1; + } + return 0; +} diff --git a/dlls/gdi/mfdrv/metafiledrv.h b/dlls/gdi/mfdrv/metafiledrv.h index 2da4245443d..0d4ff74633f 100644 --- a/dlls/gdi/mfdrv/metafiledrv.h +++ b/dlls/gdi/mfdrv/metafiledrv.h @@ -70,6 +70,8 @@ extern BOOL MFDRV_Ellipse( PHYSDEV dev, INT left, INT top, extern BOOL MFDRV_EndPath( PHYSDEV dev ); extern INT MFDRV_ExcludeClipRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom ); +extern INT MFDRV_ExtEscape( PHYSDEV dev, INT nEscape, INT cbInput, LPCVOID in_data, + INT cbOutput, LPVOID out_data ); extern BOOL MFDRV_ExtFloodFill( PHYSDEV dev, INT x, INT y, COLORREF color, UINT fillType ); extern BOOL MFDRV_ExtTextOut( PHYSDEV dev, INT x, INT y,