Started implementing Enhanced MetaFile driver.
[wine/hacks.git] / graphics / enhmetafiledrv / dc.c
blob4eac6c12539b87eb13d36e47419efd7f8d9822fc
1 /*
2 * Enhanced MetaFile driver dc value functions
4 * Copyright 1999 Huw D M Davies
6 */
7 #include "enhmetafiledrv.h"
9 INT EMFDRV_SaveDC( DC *dc )
11 EMRSAVEDC emr;
12 emr.emr.iType = EMR_SAVEDC;
13 emr.emr.nSize = sizeof(emr);
14 return EMFDRV_WriteRecord( dc, &emr.emr );
17 BOOL EMFDRV_RestoreDC( DC *dc, INT level )
19 EMRRESTOREDC emr;
20 emr.emr.iType = EMR_RESTOREDC;
21 emr.emr.nSize = sizeof(emr);
22 emr.iRelative = level;
23 return EMFDRV_WriteRecord( dc, &emr.emr );
26 UINT EMFDRV_SetTextAlign( DC *dc, UINT align )
28 EMRSETTEXTALIGN emr;
29 emr.emr.iType = EMR_SETTEXTALIGN;
30 emr.emr.nSize = sizeof(emr);
31 emr.iMode = align;
32 return EMFDRV_WriteRecord( dc, &emr.emr );
35 INT EMFDRV_SetBkMode( DC *dc, INT mode )
37 EMRSETBKMODE emr;
38 emr.emr.iType = EMR_SETBKMODE;
39 emr.emr.nSize = sizeof(emr);
40 emr.iMode = mode;
41 return EMFDRV_WriteRecord( dc, &emr.emr );
44 INT EMFDRV_SetROP2( DC *dc, INT rop )
46 EMRSETROP2 emr;
47 emr.emr.iType = EMR_SETROP2;
48 emr.emr.nSize = sizeof(emr);
49 emr.iMode = rop;
50 return EMFDRV_WriteRecord( dc, &emr.emr );
53 INT EMFDRV_SetPolyFillMode( DC *dc, INT mode )
55 EMRSETPOLYFILLMODE emr;
56 emr.emr.iType = EMR_SETPOLYFILLMODE;
57 emr.emr.nSize = sizeof(emr);
58 emr.iMode = mode;
59 return EMFDRV_WriteRecord( dc, &emr.emr );
62 INT EMFDRV_SetStretchBltMode( DC *dc, INT mode )
64 EMRSETSTRETCHBLTMODE emr;
65 emr.emr.iType = EMR_SETSTRETCHBLTMODE;
66 emr.emr.nSize = sizeof(emr);
67 emr.iMode = mode;
68 return EMFDRV_WriteRecord( dc, &emr.emr );
71 INT EMFDRV_SetMapMode( DC *dc, INT mode )
73 EMRSETMAPMODE emr;
74 emr.emr.iType = EMR_SETMAPMODE;
75 emr.emr.nSize = sizeof(emr);
76 emr.iMode = mode;
77 return EMFDRV_WriteRecord( dc, &emr.emr );
80 INT EMFDRV_ExcludeClipRect( DC *dc, INT left, INT top, INT right, INT bottom )
82 EMREXCLUDECLIPRECT emr;
83 emr.emr.iType = EMR_EXCLUDECLIPRECT;
84 emr.emr.nSize = sizeof(emr);
85 emr.rclClip.left = left;
86 emr.rclClip.top = top;
87 emr.rclClip.right = right;
88 emr.rclClip.bottom = bottom;
89 return EMFDRV_WriteRecord( dc, &emr.emr );
92 INT EMFDRV_IntersectClipRect( DC *dc, INT left, INT top, INT right, INT bottom)
94 EMRINTERSECTCLIPRECT emr;
95 emr.emr.iType = EMR_INTERSECTCLIPRECT;
96 emr.emr.nSize = sizeof(emr);
97 emr.rclClip.left = left;
98 emr.rclClip.top = top;
99 emr.rclClip.right = right;
100 emr.rclClip.bottom = bottom;
101 return EMFDRV_WriteRecord( dc, &emr.emr );
104 INT EMFDRV_OffsetClipRgn( DC *dc, INT x, INT y )
106 EMROFFSETCLIPRGN emr;
107 emr.emr.iType = EMR_OFFSETCLIPRGN;
108 emr.emr.nSize = sizeof(emr);
109 emr.ptlOffset.x = x;
110 emr.ptlOffset.y = y;
111 return EMFDRV_WriteRecord( dc, &emr.emr );
114 DWORD EMFDRV_SetMapperFlags( DC *dc, DWORD flags )
116 EMRSETMAPPERFLAGS emr;
118 emr.emr.iType = EMR_SETMAPPERFLAGS;
119 emr.emr.nSize = sizeof(emr);
120 emr.dwFlags = flags;
122 return EMFDRV_WriteRecord( dc, &emr.emr );