Fixed error handling in DGA_IDirectDraw2Impl_GetCaps().
[wine] / graphics / enhmetafiledrv / dc.c
1 /*
2  * Enhanced MetaFile driver dc value functions
3  *
4  * Copyright 1999 Huw D M Davies
5  *
6  */
7 #include "enhmetafiledrv.h"
8
9 INT EMFDRV_SaveDC( DC *dc )
10 {
11     EMRSAVEDC emr;
12     emr.emr.iType = EMR_SAVEDC;
13     emr.emr.nSize = sizeof(emr);
14     return EMFDRV_WriteRecord( dc, &emr.emr );
15 }
16
17 BOOL EMFDRV_RestoreDC( DC *dc, INT level )
18 {
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 );
24 }
25
26 UINT EMFDRV_SetTextAlign( DC *dc, UINT align )
27 {
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 );
33 }
34
35 INT EMFDRV_SetBkMode( DC *dc, INT mode )
36 {
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 );
42 }
43
44 INT EMFDRV_SetROP2( DC *dc, INT rop )
45 {
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 );
51 }
52
53 INT EMFDRV_SetPolyFillMode( DC *dc, INT mode )
54 {
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 );
60 }
61
62 INT EMFDRV_SetStretchBltMode( DC *dc, INT mode )
63 {
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 );
69 }
70
71 INT EMFDRV_SetMapMode( DC *dc, INT mode )
72 {
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 );
78 }
79
80 INT EMFDRV_ExcludeClipRect( DC *dc, INT left, INT top, INT right, INT bottom )
81 {
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 );
90 }
91
92 INT EMFDRV_IntersectClipRect( DC *dc, INT left, INT top, INT right, INT bottom)
93 {
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 );
102 }
103
104 INT EMFDRV_OffsetClipRgn( DC *dc, INT x, INT y )
105 {
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 );
112 }
113
114 DWORD EMFDRV_SetMapperFlags( DC *dc, DWORD flags )
115 {
116     EMRSETMAPPERFLAGS emr;
117
118     emr.emr.iType = EMR_SETMAPPERFLAGS;
119     emr.emr.nSize = sizeof(emr);
120     emr.dwFlags   = flags;
121
122     return EMFDRV_WriteRecord( dc, &emr.emr );
123 }