Implemented OleCreatePropertyFrame and
[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 #include "debugtools.h"
9
10 DEFAULT_DEBUG_CHANNEL(enhmetafile);
11
12 INT EMFDRV_SaveDC( DC *dc )
13 {
14     EMRSAVEDC emr;
15     emr.emr.iType = EMR_SAVEDC;
16     emr.emr.nSize = sizeof(emr);
17     return EMFDRV_WriteRecord( dc, &emr.emr );
18 }
19
20 BOOL EMFDRV_RestoreDC( DC *dc, INT level )
21 {
22     EMRRESTOREDC emr;
23     emr.emr.iType = EMR_RESTOREDC;
24     emr.emr.nSize = sizeof(emr);
25     emr.iRelative = level;
26     return EMFDRV_WriteRecord( dc, &emr.emr );
27 }
28
29 UINT EMFDRV_SetTextAlign( DC *dc, UINT align )
30 {
31     EMRSETTEXTALIGN emr;
32     emr.emr.iType = EMR_SETTEXTALIGN;
33     emr.emr.nSize = sizeof(emr);
34     emr.iMode = align;
35     return EMFDRV_WriteRecord( dc, &emr.emr );
36 }
37
38 INT EMFDRV_SetBkMode( DC *dc, INT mode )
39 {
40     EMRSETBKMODE emr;
41     emr.emr.iType = EMR_SETBKMODE;
42     emr.emr.nSize = sizeof(emr);
43     emr.iMode = mode;
44     return EMFDRV_WriteRecord( dc, &emr.emr );
45 }
46
47 INT EMFDRV_SetROP2( DC *dc, INT rop )
48 {
49     EMRSETROP2 emr;
50     emr.emr.iType = EMR_SETROP2;
51     emr.emr.nSize = sizeof(emr);
52     emr.iMode = rop;
53     return EMFDRV_WriteRecord( dc, &emr.emr );
54 }
55
56 INT EMFDRV_SetPolyFillMode( DC *dc, INT mode )
57 {
58     EMRSETPOLYFILLMODE emr;
59     emr.emr.iType = EMR_SETPOLYFILLMODE;
60     emr.emr.nSize = sizeof(emr);
61     emr.iMode = mode;
62     return EMFDRV_WriteRecord( dc, &emr.emr );
63 }
64
65 INT EMFDRV_SetStretchBltMode( DC *dc, INT mode )
66 {
67     EMRSETSTRETCHBLTMODE emr;
68     emr.emr.iType = EMR_SETSTRETCHBLTMODE;
69     emr.emr.nSize = sizeof(emr);
70     emr.iMode = mode;
71     return EMFDRV_WriteRecord( dc, &emr.emr );
72 }
73
74 INT EMFDRV_SetMapMode( DC *dc, INT mode )
75 {
76     EMRSETMAPMODE emr;
77     emr.emr.iType = EMR_SETMAPMODE;
78     emr.emr.nSize = sizeof(emr);
79     emr.iMode = mode;
80     return EMFDRV_WriteRecord( dc, &emr.emr );
81 }
82
83 INT EMFDRV_ExcludeClipRect( DC *dc, INT left, INT top, INT right, INT bottom )
84 {
85     EMREXCLUDECLIPRECT emr;
86     emr.emr.iType      = EMR_EXCLUDECLIPRECT;
87     emr.emr.nSize      = sizeof(emr);
88     emr.rclClip.left   = left;
89     emr.rclClip.top    = top;
90     emr.rclClip.right  = right;
91     emr.rclClip.bottom = bottom;
92     return EMFDRV_WriteRecord( dc, &emr.emr );
93 }
94
95 INT EMFDRV_IntersectClipRect( DC *dc, INT left, INT top, INT right, INT bottom)
96 {
97     EMRINTERSECTCLIPRECT emr;
98     emr.emr.iType      = EMR_INTERSECTCLIPRECT;
99     emr.emr.nSize      = sizeof(emr);
100     emr.rclClip.left   = left;
101     emr.rclClip.top    = top;
102     emr.rclClip.right  = right;
103     emr.rclClip.bottom = bottom;
104     return EMFDRV_WriteRecord( dc, &emr.emr );
105 }
106
107 INT EMFDRV_OffsetClipRgn( DC *dc, INT x, INT y )
108 {
109     EMROFFSETCLIPRGN emr;
110     emr.emr.iType   = EMR_OFFSETCLIPRGN;
111     emr.emr.nSize   = sizeof(emr);
112     emr.ptlOffset.x = x;
113     emr.ptlOffset.y = y;
114     return EMFDRV_WriteRecord( dc, &emr.emr );
115 }
116
117 DWORD EMFDRV_SetMapperFlags( DC *dc, DWORD flags )
118 {
119     EMRSETMAPPERFLAGS emr;
120
121     emr.emr.iType = EMR_SETMAPPERFLAGS;
122     emr.emr.nSize = sizeof(emr);
123     emr.dwFlags   = flags;
124
125     return EMFDRV_WriteRecord( dc, &emr.emr );
126 }
127
128 BOOL EMFDRV_AbortPath( DC *dc )
129 {
130     EMRABORTPATH emr;
131
132     emr.emr.iType = EMR_ABORTPATH;
133     emr.emr.nSize = sizeof(emr);
134
135     return EMFDRV_WriteRecord( dc, &emr.emr );
136 }
137
138 BOOL EMFDRV_BeginPath( DC *dc )
139 {
140     EMRBEGINPATH emr;
141
142     emr.emr.iType = EMR_BEGINPATH;
143     emr.emr.nSize = sizeof(emr);
144
145     return EMFDRV_WriteRecord( dc, &emr.emr );
146 }
147
148 BOOL EMFDRV_CloseFigure( DC *dc )
149 {
150     EMRCLOSEFIGURE emr;
151
152     emr.emr.iType = EMR_CLOSEFIGURE;
153     emr.emr.nSize = sizeof(emr);
154
155     return EMFDRV_WriteRecord( dc, &emr.emr );
156 }
157
158 BOOL EMFDRV_EndPath( DC *dc )
159 {
160     EMRENDPATH emr;
161
162     emr.emr.iType = EMR_ENDPATH;
163     emr.emr.nSize = sizeof(emr);
164
165     return EMFDRV_WriteRecord( dc, &emr.emr );
166 }
167
168 BOOL EMFDRV_FillPath( DC *dc )
169 {
170     EMRFILLPATH emr;
171
172     emr.emr.iType = EMR_FILLPATH;
173     emr.emr.nSize = sizeof(emr);
174     FIXME("Bounds\n");
175     emr.rclBounds.left = 0;
176     emr.rclBounds.top = 0;
177     emr.rclBounds.right = 0;
178     emr.rclBounds.bottom = 0;
179     return EMFDRV_WriteRecord( dc, &emr.emr );
180 }
181
182 BOOL EMFDRV_FlattenPath( DC *dc )
183 {
184     EMRFLATTENPATH emr;
185
186     emr.emr.iType = EMR_FLATTENPATH;
187     emr.emr.nSize = sizeof(emr);
188
189     return EMFDRV_WriteRecord( dc, &emr.emr );
190 }
191
192 BOOL EMFDRV_SelectClipPath( DC *dc, INT iMode )
193 {
194     EMRSELECTCLIPPATH emr;
195
196     emr.emr.iType = EMR_SELECTCLIPPATH;
197     emr.emr.nSize = sizeof(emr);
198     emr.iMode = iMode;
199
200     return EMFDRV_WriteRecord( dc, &emr.emr );
201 }
202
203 BOOL EMFDRV_StrokeAndFillPath( DC *dc )
204 {
205     EMRSTROKEANDFILLPATH emr;
206
207     emr.emr.iType = EMR_STROKEANDFILLPATH;
208     emr.emr.nSize = sizeof(emr);
209     FIXME("Bounds\n");
210     emr.rclBounds.left = 0;
211     emr.rclBounds.top = 0;
212     emr.rclBounds.right = 0;
213     emr.rclBounds.bottom = 0;
214     return EMFDRV_WriteRecord( dc, &emr.emr );
215 }
216
217 BOOL EMFDRV_StrokePath( DC *dc )
218 {
219     EMRSTROKEPATH emr;
220
221     emr.emr.iType = EMR_STROKEPATH;
222     emr.emr.nSize = sizeof(emr);
223     FIXME("Bounds\n");
224     emr.rclBounds.left = 0;
225     emr.rclBounds.top = 0;
226     emr.rclBounds.right = 0;
227     emr.rclBounds.bottom = 0;
228     return EMFDRV_WriteRecord( dc, &emr.emr );
229 }
230
231 BOOL EMFDRV_WidenPath( DC *dc )
232 {
233     EMRWIDENPATH emr;
234
235     emr.emr.iType = EMR_WIDENPATH;
236     emr.emr.nSize = sizeof(emr);
237
238     return EMFDRV_WriteRecord( dc, &emr.emr );
239 }