| /* |
| * Enhanced MetaFile driver dc value functions |
| * |
| * Copyright 1999 Huw D M Davies |
| * |
| */ |
| #include "enhmetafiledrv.h" |
| #include "debugtools.h" |
| |
| DEFAULT_DEBUG_CHANNEL(enhmetafile) |
| |
| INT EMFDRV_SaveDC( DC *dc ) |
| { |
| EMRSAVEDC emr; |
| emr.emr.iType = EMR_SAVEDC; |
| emr.emr.nSize = sizeof(emr); |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_RestoreDC( DC *dc, INT level ) |
| { |
| EMRRESTOREDC emr; |
| emr.emr.iType = EMR_RESTOREDC; |
| emr.emr.nSize = sizeof(emr); |
| emr.iRelative = level; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| UINT EMFDRV_SetTextAlign( DC *dc, UINT align ) |
| { |
| EMRSETTEXTALIGN emr; |
| emr.emr.iType = EMR_SETTEXTALIGN; |
| emr.emr.nSize = sizeof(emr); |
| emr.iMode = align; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| INT EMFDRV_SetBkMode( DC *dc, INT mode ) |
| { |
| EMRSETBKMODE emr; |
| emr.emr.iType = EMR_SETBKMODE; |
| emr.emr.nSize = sizeof(emr); |
| emr.iMode = mode; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| INT EMFDRV_SetROP2( DC *dc, INT rop ) |
| { |
| EMRSETROP2 emr; |
| emr.emr.iType = EMR_SETROP2; |
| emr.emr.nSize = sizeof(emr); |
| emr.iMode = rop; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| INT EMFDRV_SetPolyFillMode( DC *dc, INT mode ) |
| { |
| EMRSETPOLYFILLMODE emr; |
| emr.emr.iType = EMR_SETPOLYFILLMODE; |
| emr.emr.nSize = sizeof(emr); |
| emr.iMode = mode; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| INT EMFDRV_SetStretchBltMode( DC *dc, INT mode ) |
| { |
| EMRSETSTRETCHBLTMODE emr; |
| emr.emr.iType = EMR_SETSTRETCHBLTMODE; |
| emr.emr.nSize = sizeof(emr); |
| emr.iMode = mode; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| INT EMFDRV_SetMapMode( DC *dc, INT mode ) |
| { |
| EMRSETMAPMODE emr; |
| emr.emr.iType = EMR_SETMAPMODE; |
| emr.emr.nSize = sizeof(emr); |
| emr.iMode = mode; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| INT EMFDRV_ExcludeClipRect( DC *dc, INT left, INT top, INT right, INT bottom ) |
| { |
| EMREXCLUDECLIPRECT emr; |
| emr.emr.iType = EMR_EXCLUDECLIPRECT; |
| emr.emr.nSize = sizeof(emr); |
| emr.rclClip.left = left; |
| emr.rclClip.top = top; |
| emr.rclClip.right = right; |
| emr.rclClip.bottom = bottom; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| INT EMFDRV_IntersectClipRect( DC *dc, INT left, INT top, INT right, INT bottom) |
| { |
| EMRINTERSECTCLIPRECT emr; |
| emr.emr.iType = EMR_INTERSECTCLIPRECT; |
| emr.emr.nSize = sizeof(emr); |
| emr.rclClip.left = left; |
| emr.rclClip.top = top; |
| emr.rclClip.right = right; |
| emr.rclClip.bottom = bottom; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| INT EMFDRV_OffsetClipRgn( DC *dc, INT x, INT y ) |
| { |
| EMROFFSETCLIPRGN emr; |
| emr.emr.iType = EMR_OFFSETCLIPRGN; |
| emr.emr.nSize = sizeof(emr); |
| emr.ptlOffset.x = x; |
| emr.ptlOffset.y = y; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| DWORD EMFDRV_SetMapperFlags( DC *dc, DWORD flags ) |
| { |
| EMRSETMAPPERFLAGS emr; |
| |
| emr.emr.iType = EMR_SETMAPPERFLAGS; |
| emr.emr.nSize = sizeof(emr); |
| emr.dwFlags = flags; |
| |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_AbortPath( DC *dc ) |
| { |
| EMRABORTPATH emr; |
| |
| emr.emr.iType = EMR_ABORTPATH; |
| emr.emr.nSize = sizeof(emr); |
| |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_BeginPath( DC *dc ) |
| { |
| EMRBEGINPATH emr; |
| |
| emr.emr.iType = EMR_BEGINPATH; |
| emr.emr.nSize = sizeof(emr); |
| |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_CloseFigure( DC *dc ) |
| { |
| EMRCLOSEFIGURE emr; |
| |
| emr.emr.iType = EMR_CLOSEFIGURE; |
| emr.emr.nSize = sizeof(emr); |
| |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_EndPath( DC *dc ) |
| { |
| EMRENDPATH emr; |
| |
| emr.emr.iType = EMR_ENDPATH; |
| emr.emr.nSize = sizeof(emr); |
| |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_FillPath( DC *dc ) |
| { |
| EMRFILLPATH emr; |
| |
| emr.emr.iType = EMR_FILLPATH; |
| emr.emr.nSize = sizeof(emr); |
| FIXME("Bounds\n"); |
| emr.rclBounds.left = 0; |
| emr.rclBounds.top = 0; |
| emr.rclBounds.right = 0; |
| emr.rclBounds.bottom = 0; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_FlattenPath( DC *dc ) |
| { |
| EMRFLATTENPATH emr; |
| |
| emr.emr.iType = EMR_FLATTENPATH; |
| emr.emr.nSize = sizeof(emr); |
| |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_SelectClipPath( DC *dc, INT iMode ) |
| { |
| EMRSELECTCLIPPATH emr; |
| |
| emr.emr.iType = EMR_SELECTCLIPPATH; |
| emr.emr.nSize = sizeof(emr); |
| emr.iMode = iMode; |
| |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_StrokeAndFillPath( DC *dc ) |
| { |
| EMRSTROKEANDFILLPATH emr; |
| |
| emr.emr.iType = EMR_STROKEANDFILLPATH; |
| emr.emr.nSize = sizeof(emr); |
| FIXME("Bounds\n"); |
| emr.rclBounds.left = 0; |
| emr.rclBounds.top = 0; |
| emr.rclBounds.right = 0; |
| emr.rclBounds.bottom = 0; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_StrokePath( DC *dc ) |
| { |
| EMRSTROKEPATH emr; |
| |
| emr.emr.iType = EMR_STROKEPATH; |
| emr.emr.nSize = sizeof(emr); |
| FIXME("Bounds\n"); |
| emr.rclBounds.left = 0; |
| emr.rclBounds.top = 0; |
| emr.rclBounds.right = 0; |
| emr.rclBounds.bottom = 0; |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |
| |
| BOOL EMFDRV_WidenPath( DC *dc ) |
| { |
| EMRWIDENPATH emr; |
| |
| emr.emr.iType = EMR_WIDENPATH; |
| emr.emr.nSize = sizeof(emr); |
| |
| return EMFDRV_WriteRecord( dc, &emr.emr ); |
| } |