ReactOS 0.4.16-dev-2122-g1628f5e
NtGdiSetPixel.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS api tests
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Test for NtGdiSetPixel
5 * COPYRIGHT: Copyright 2025 Timo Kreuzer <timo.kreuzer@reactos.org>
6 */
7
8#include "../win32nt.h"
9#include <gditools.h>
10
11#define DIBINDEX(n) MAKELONG((n),0x10FF)
12
14{
15 COLORREF cr;
16
17 /* Test hdc = NULL */
18 SetLastError(0xdeadbeef);
19 cr = NtGdiSetPixel(NULL, 0, 0, 0);
21 todo_ros ok_eq_ulong(GetLastError(), 0xdeadbeef);
22
23 /* Test invalid hdc */
24 SetLastError(0xdeadbeef);
25 cr = NtGdiSetPixel((HDC)0x12345678, 0, 0, 0);
27 todo_ros ok_eq_ulong(GetLastError(), 0xdeadbeef);
28
29 /* Test empty memory DC */
30 SetLastError(0xdeadbeef);
31 HDC hdcMemEmpty = CreateCompatibleDC(NULL);
32 cr = NtGdiSetPixel(hdcMemEmpty, 0, 0, 0);
34 ok_eq_ulong(GetLastError(), 0xdeadbeef);
35
36 /* Test Info-DC */
37 cr = NtGdiSetPixel(ghdcInfo, 0, 0, 0x123456);
39
40 /* Test bounds */
41 BITMAP bm = { 0 };
42 GetObject(ghbmpDIB32, sizeof(BITMAP), &bm);
43 cr = NtGdiSetPixel(ghdcDIB32, -1, 0, 0x123456);
45 cr = NtGdiSetPixel(ghdcDIB32, 0, -1, 0x123456);
47 cr = NtGdiSetPixel(ghdcDIB32, bm.bmWidth - 1, 0, 0x123456);
48 ok_eq_hex(cr, 0x123456);
49 cr = NtGdiSetPixel(ghdcDIB32, bm.bmWidth, 0, 0x123456);
51 cr = NtGdiSetPixel(ghdcDIB32, 0, bm.bmHeight - 1, 0x123456);
52 ok_eq_hex(cr, 0x123456);
53 cr = NtGdiSetPixel(ghdcDIB32, 0, bm.bmHeight, 0x123456);
55 ok_eq_ulong(GetLastError(), 0xdeadbeef);
56
57 /* Test WindowOrg */
58 ((PULONG)gpvDIB32)[0] = 0x00;
60 cr = NtGdiSetPixel(ghdcDIB32, 1, 1, 0x123456);
62 cr = NtGdiSetPixel(ghdcDIB32, 2, 2, 0x123456);
63 ok_eq_hex(cr, 0x123456);
64 ok_eq_hex(((PULONG)gpvDIB32)[0], 0x00563412);
66
67 /* Test ViewPortOrg */
68 ((PULONG)gpvDIB32)[0] = 0x00;
70 cr = NtGdiSetPixel(ghdcDIB32, -3, 0, 0x123456);
72 cr = NtGdiSetPixel(ghdcDIB32, -2, -2, 0x123456);
73 ok_eq_hex(cr, 0x123456);
74 ok_eq_hex(((PULONG)gpvDIB32)[0], 0x00563412);
76
77 /* Test with an arbitrary transform */
78 int iOldGraphicsMode = SetGraphicsMode(ghdcDIB32, GM_ADVANCED);
79 XFORM xformOld, xform = { 0 };
80 GetWorldTransform(ghdcDIB32, &xformOld);
81 xform.eM11 = 1.5f; xform.eM12 = 0.5f;
82 xform.eM21 = -0.5f; xform.eM22 = 1.0f;
83 xform.eDx = 2.0f; xform.eDy = 1.0f;
85 memset(gpDIB32, 0, sizeof(*gpDIB32));
86 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, 0x123456);
87 ok_eq_hex(cr, 0x123456);
88 ok_eq_hex((*gpDIB32)[1][2], 0x00563412);
89 cr = NtGdiSetPixel(ghdcDIB32, 4, 4, 0xABCDEF);
90 ok_eq_hex(cr, 0xABCDEF);
91 ok_eq_hex((*gpDIB32)[7][6], 0x00EFCDAB);
92 SetWorldTransform(ghdcDIB32, &xformOld);
93 SetGraphicsMode(ghdcDIB32, iOldGraphicsMode);
94}
95
96static void Test_NtGdiSetPixel_1Bpp(void)
97{
98 COLORREF cr;
99
100 ((PUCHAR)gpvDIB1)[0] = 0x00;
101 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00000000);
102 ok_eq_hex(cr, 0x00000000);
103 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x00);
104
105 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00FFFFFF);
106 ok_eq_hex(cr, 0x00FFFFFF);
107 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x80);
108
109 cr = NtGdiSetPixel(ghdcDIB1, 7, 0, 0x00FFFFFF);
110 ok_eq_hex(cr, 0x00FFFFFF);
111 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x81);
112
113 /* The pixel is set to 1, if the sum of R+G+B is >= 383 (0x17F) */
114 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x0080807E);
115 ok_eq_hex(cr, 0x00000000);
116 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x0080807F);
117 ok_eq_hex(cr, 0x00FFFFFF);
118 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00FF007F);
119 ok_eq_hex(cr, 0x00000000);
120 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00FF0080);
121 ok_eq_hex(cr, 0x00FFFFFF);
122
123 /* Test if SetBkMode() has any effect */
124 ((PUCHAR)gpvDIB1)[0] = 0x00;
125 int iOldBkMode = SetBkMode(ghdcDIB1, TRANSPARENT);
126 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00000000);
127 ok_eq_hex(cr, 0x00000000);
128 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00FFFFFF);
129 ok_eq_hex(cr, 0x00FFFFFF);
131 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00000000);
132 ok_eq_hex(cr, 0x00000000);
133 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00FFFFFF);
134 ok_eq_hex(cr, 0x00FFFFFF);
135 SetBkMode(ghdcDIB1, iOldBkMode);
136
137 /* Test if SetBkColor() has any effect */
138 ((PUCHAR)gpvDIB1)[0] = 0x00;
139 COLORREF crOldBkColor = SetBkColor(ghdcDIB1, 0x00010101);
140 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00000000);
141 ok_eq_hex(cr, 0x00000000);
142 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x00);
143 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00FFFFFF);
144 ok_eq_hex(cr, 0x00FFFFFF);
145 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x80);
146 SetBkColor(ghdcDIB1, crOldBkColor);
147
148 /* Test if SetDCPenColor() has any effect */
149 ((PUCHAR)gpvDIB1)[0] = 0x00;
150 COLORREF crOldPenColor = SetDCPenColor(ghdcDIB1, 0x00FEFEFE);
151 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00000000);
152 ok_eq_hex(cr, 0x00000000);
153 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x00);
154 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00FFFFFF);
155 ok_eq_hex(cr, 0x00FFFFFF);
156 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x80);
157 SetDCPenColor(ghdcDIB1, crOldPenColor);
158
159 /* Test if SetTextColor() has any effect */
160 ((PUCHAR)gpvDIB1)[0] = 0x00;
161 COLORREF crOldTextColor = SetTextColor(ghdcDIB1, 0x00FEFEFE);
162 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00000000);
163 ok_eq_hex(cr, 0x00000000);
164 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x00);
165 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00FFFFFF);
166 ok_eq_hex(cr, 0x00FFFFFF);
167 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x80);
168 SetTextColor(ghdcDIB1, crOldTextColor);
169
170 /* Test PALETTEINDEX without a palette selected */
171 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTEINDEX(0));
172 ok_eq_hex(cr, 0x000000);
173 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTEINDEX(1));
174 ok_eq_hex(cr, 0x000000);
175 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTEINDEX(7));
176 ok_eq_hex(cr, 0xFFFFFF);
177 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTEINDEX(19));
178 ok_eq_hex(cr, 0xFFFFFF);
179 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTEINDEX(20));
180 ok_eq_hex(cr, 0);
181 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTEINDEX(255));
182 ok_eq_hex(cr, 0);
183
184 /* Test the PALETTEINDEX color mask (16 bits) */
185 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x01FF0007);
186 todo_ros ok_eq_hex(cr, 0xFFFFFF);
187 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x01FF8007);
188 ok_eq_hex(cr, 0);
189
190 /* Test the PALETTEINDEX flag (crColor & 0x01000000) */
191 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x0FF000007);
192 todo_ros ok_eq_hex(cr, 0xFFFFFF);
193 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x0FE000007);
194 ok_eq_hex(cr, 0x000000);
195
196 HPALETTE hOldPal = SelectPalette(ghdcDIB1, ghpal, FALSE);
197
198 /* Test color matching with DC palette again */
199 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x0080807E);
200 ok_eq_hex(cr, 0x00000000);
201 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x0080807F);
202 ok_eq_hex(cr, 0x00FFFFFF);
203 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00FF007F);
204 ok_eq_hex(cr, 0x00000000);
205 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x00FF0080);
206 ok_eq_hex(cr, 0x00FFFFFF);
207
208 /* Test PALETTEINDEX */
209 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTEINDEX(0));
210 ok_eq_hex(cr, 0);
211 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTEINDEX(7));
212 ok_eq_hex(cr, 0xFFFFFF);
213 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTEINDEX(8));
214 ok_eq_hex(cr, 0);
215
216 /* Test PALETTERGB (not used) */
217 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTERGB(0x6F, 0x7F, 0x90)); // sum is 382 -> black
218 todo_ros ok_eq_hex(cr, 0);
219 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTERGB(0x6F, 0x80, 0x90)); // sum is 383 -> white
220 ok_eq_hex(cr, 0x00FFFFFF);
221
222 /* Test DIBINDEX */
223 ((PUCHAR)gpvDIB1)[0] = 0x00;
224 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, DIBINDEX(0));
225 ok_eq_hex(cr, 0);
226 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x00);
227 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, DIBINDEX(1));
228 ok_eq_hex(cr, 0xFFFFFF);
229 ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x80);
230 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, DIBINDEX(2));
231 ok_eq_hex(cr, 0);
232 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, DIBINDEX(3));
233 todo_ros ok_eq_hex(cr, 0);
234 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, DIBINDEX(0x81));
235 todo_ros ok_eq_hex(cr, 0);
236 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, DIBINDEX(0xFF01));
237 ok_eq_hex(cr, 0xFFFFFF);
238
239 /* Test invalid COLORREFs */
241 todo_ros ok_eq_hex(cr, 0);
242 todo_ros ok_eq_hex(((PUCHAR)gpvDIB1)[0], 0x00);
243 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, DIBINDEX(100));
244 ok_eq_hex(cr, 0);
245 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, PALETTEINDEX(100));
246 ok_eq_hex(cr, 0);
247 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x03FFFFFF);
248 todo_ros ok_eq_hex(cr, 0);
249 cr = NtGdiSetPixel(ghdcDIB1, 0, 0, 0x10FE0001);
250 todo_ros ok_eq_hex(cr, 0);
251
252 SelectPalette(ghdcDIB1, hOldPal, FALSE);
253
254 /* Test color inverted bitmap */
255 ((PUCHAR)gpvDIB1_InvCol)[0] = 0x00;
256 cr = NtGdiSetPixel(ghdcDIB1_InvCol, 0, 0, 0x00000000);
257 ok_eq_hex(cr, 0x000000);
258 ok_eq_hex(((PUCHAR)gpvDIB1_InvCol)[0], 0x80);
259 cr = NtGdiSetPixel(ghdcDIB1_InvCol, 0, 0, 0x00FFFFFF);
260 ok_eq_hex(cr, 0xFFFFFF);
261 ok_eq_hex(((PUCHAR)gpvDIB1_InvCol)[0], 0x00);
263 todo_ros ok_eq_hex(cr, 0);
265
266 /* Test Red-Blue bitmap */
267 ((PUCHAR)gpvDIB1_RB)[0] = 0x00;
268 cr = NtGdiSetPixel(ghdcDIB1_RB, 0, 0, 0x000000);
269 ok_eq_hex(cr, 0xFF0000);
270 ok_eq_hex(((PUCHAR)gpvDIB1_RB)[0], 0x00);
271 cr = NtGdiSetPixel(ghdcDIB1_RB, 0, 0, 0xFFFFFF);
272 ok_eq_hex(cr, 0xFF0000);
273 ok_eq_hex(((PUCHAR)gpvDIB1_RB)[0], 0x00);
274 cr = NtGdiSetPixel(ghdcDIB1_RB, 0, 0, 0xFF0000);
275 ok_eq_hex(cr, 0xFF0000);
276 ok_eq_hex(((PUCHAR)gpvDIB1_RB)[0], 0x00);
277 cr = NtGdiSetPixel(ghdcDIB1_RB, 0, 0, 0x0000FF);
278 ok_eq_hex(cr, 0x0000FF);
279 ok_eq_hex(((PUCHAR)gpvDIB1_RB)[0], 0x80);
280 cr = NtGdiSetPixel(ghdcDIB1_RB, 0, 0, 0x00FF00);
281 ok_eq_hex(cr, 0xFF0000);
282 ok_eq_hex(((PUCHAR)gpvDIB1_RB)[0], 0x00);
283 cr = NtGdiSetPixel(ghdcDIB1_RB, 0, 0, 0x00FF01);
284 ok_eq_hex(cr, 0x0000FF);
285 ok_eq_hex(((PUCHAR)gpvDIB1_RB)[0], 0x80);
286}
287
289{
290 COLORREF cr;
291
292 /* Normal RGB value */
293 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, 0x00123456);
294 ok_eq_hex(cr, 0x123456);
295 ok_eq_hex(((PULONG)gpvDIB32)[0], 0x00563412);
296
297 /* Test PALETTEINDEX without a palette selected */
298 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, PALETTEINDEX(0));
299 ok_eq_hex(cr, 0x000000);
300 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, PALETTEINDEX(1));
301 ok_eq_hex(cr, 0x000080);
302 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, PALETTEINDEX(7));
303 ok_eq_hex(cr, 0xC0C0C0);
304 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, PALETTEINDEX(19));
305 ok_eq_hex(cr, 0xFFFFFF);
306 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, PALETTEINDEX(20));
307 ok_eq_hex(cr, 0);
308 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, PALETTEINDEX(255));
309 ok_eq_hex(cr, 0);
310
311 /* Test the PALETTEINDEX color mask (16 bits) */
312 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, 0x01FF0001);
313 todo_ros ok_eq_hex(cr, 0x000080);
314 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, 0x01FF8001);
315 ok_eq_hex(cr, 0);
316
317 /* Test the PALETTEINDEX flag (crColor & 0x01000000) */
318 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, 0x0FF000007);
319 todo_ros ok_eq_hex(cr, 0xC0C0C0);
320 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, 0x0FE000007);
321 ok_eq_hex(cr, 0x000007);
322
323 /* Test PALETTEINDEX with custom DC palette */
324 HPALETTE hOldPal = SelectPalette(ghdcDIB32, ghpal, FALSE);
325 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, PALETTEINDEX(3));
326 ok_eq_hex(cr, 0x605040);
327 SelectPalette(ghdcDIB32, hOldPal, FALSE);
328
329 /* Test PALETTERGB (not used) */
330 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, PALETTERGB(0x38, 0x41, 0x9B));
331 ok_eq_hex(cr, 0x9B4138);
332
333 /* Test DIBINDEX (invalid) */
334 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, DIBINDEX(0));
335 todo_ros ok_eq_hex(cr, 0);
336 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, DIBINDEX(1));
337 todo_ros ok_eq_hex(cr, 0);
338 cr = NtGdiSetPixel(ghdcDIB32, 0, 0, DIBINDEX(0xC080));
339 todo_ros ok_eq_hex(cr, 0);
340}
341
343{
344 if (!GdiToolsInit())
345 {
346 skip("GdiToolsInit failed\n");
347 return;
348 }
349
353}
static void Test_NtGdiSetPixel_32Bpp(void)
#define DIBINDEX(n)
Definition: NtGdiSetPixel.c:11
static void Test_NtGdiSetPixel_generic(void)
Definition: NtGdiSetPixel.c:13
static void Test_NtGdiSetPixel_1Bpp(void)
Definition: NtGdiSetPixel.c:96
#define ok_eq_hex(value, expected)
Definition: apitest.h:134
#define ok_eq_ulong(value, expected)
Definition: apitest.h:120
#define GetNTVersion()
Definition: apitest.h:17
#define skip(...)
Definition: atltest.h:64
#define START_TEST(x)
Definition: atltest.h:75
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define SetLastError(x)
Definition: compat.h:752
ULONG(* gpDIB32)[8][8]
Definition: gditools.c:26
HDC ghdcInfo
Definition: gditools.c:28
PVOID gpvDIB1_RB
Definition: gditools.c:25
PVOID gpvDIB1
Definition: gditools.c:25
HDC ghdcDIB32
Definition: gditools.c:24
HPALETTE ghpal
Definition: gditools.c:27
PVOID gpvDIB1_InvCol
Definition: gditools.c:25
PVOID gpvDIB32
Definition: gditools.c:25
HDC ghdcDIB1
Definition: gditools.c:24
HBITMAP ghbmpDIB32
Definition: gditools.c:23
HDC ghdcDIB1_RB
Definition: gditools.c:24
BOOL GdiToolsInit(void)
Definition: gditools.c:229
HDC ghdcDIB1_InvCol
Definition: gditools.c:24
#define todo_ros
Definition: minitest.h:74
static HDC
Definition: imagelist.c:88
__kernel_entry W32KAPI COLORREF APIENTRY NtGdiSetPixel(_In_ HDC hdcDst, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
Definition: bitblt.c:1429
#define memset(x, y, z)
Definition: compat.h:39
#define _WIN32_WINNT_VISTA
Definition: sdkddkver.h:25
Definition: bl.h:1331
FLOAT eDy
Definition: wingdi.h:2172
FLOAT eM11
Definition: wingdi.h:2167
FLOAT eM21
Definition: wingdi.h:2169
FLOAT eM22
Definition: wingdi.h:2170
FLOAT eM12
Definition: wingdi.h:2168
FLOAT eDx
Definition: wingdi.h:2171
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char * PUCHAR
Definition: typedefs.h:53
COLORREF WINAPI SetDCPenColor(_In_ HDC hdc, _In_ COLORREF crColor)
Definition: dc.c:941
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
DWORD COLORREF
Definition: windef.h:100
#define PALETTEINDEX(i)
Definition: wingdi.h:3389
int WINAPI SetGraphicsMode(_In_ HDC, _In_ int)
Definition: dc.c:1233
#define GM_ADVANCED
Definition: wingdi.h:865
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
Definition: dc.c:999
BOOL WINAPI SetWindowOrgEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
Definition: coord.c:532
HPALETTE WINAPI SelectPalette(_In_ HDC, _In_ HPALETTE, _In_ BOOL)
BOOL WINAPI SetViewportOrgEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
Definition: coord.c:655
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
#define PALETTERGB(r, g, b)
Definition: wingdi.h:3388
#define TRANSPARENT
Definition: wingdi.h:950
#define CLR_INVALID
Definition: wingdi.h:883
BOOL WINAPI GetWorldTransform(_In_ HDC, _Out_ LPXFORM)
Definition: coord.c:278
#define OPAQUE
Definition: wingdi.h:949
int WINAPI SetBkMode(_In_ HDC, _In_ int)
Definition: dc.c:1056
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:917
BOOL WINAPI SetWorldTransform(_In_ HDC, _In_ const XFORM *)
#define GetObject
Definition: wingdi.h:4914