Added writing META_ESCAPE records.
diff --git a/dlls/gdi/mfdrv/init.c b/dlls/gdi/mfdrv/init.c
index 0167305..82be647 100644
--- a/dlls/gdi/mfdrv/init.c
+++ b/dlls/gdi/mfdrv/init.c
@@ -56,7 +56,7 @@
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 @@
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 2da4245..0d4ff74 100644
--- a/dlls/gdi/mfdrv/metafiledrv.h
+++ b/dlls/gdi/mfdrv/metafiledrv.h
@@ -70,6 +70,8 @@
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,