mirror of
https://github.com/reactos/wine.git
synced 2024-11-29 14:40:56 +00:00
f0f8da5870
Adds *Path functions to dc funcs table + add EnhMetaFile recording. Separate out Polylne/PolylineTo and PolyBezier/PolyBezierTo in dc funcs table to enable proper enhmetafile recording. The current position update in *To functions is now handled by the main function and not in the drivers. Move USER functions from graphics/painting.c -> windows/painting.c
240 lines
5.2 KiB
C
240 lines
5.2 KiB
C
/*
|
|
* 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 );
|
|
}
|