Skip to content

Commit d267938

Browse files
committed
[WIN32U_APITEST] Add tests for NtGdiSetPixel
1 parent 9932008 commit d267938

File tree

3 files changed

+356
-0
lines changed

3 files changed

+356
-0
lines changed

modules/rostests/apitests/win32u/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ list(APPEND SOURCE
4242
ntgdi/NtGdiSelectPen.c
4343
ntgdi/NtGdiSetBitmapBits.c
4444
ntgdi/NtGdiSetDIBitsToDeviceInternal.c
45+
ntgdi/NtGdiSetPixel.c
4546
ntgdi/NtGdiTransformPoints.c
4647

4748
# ntuser/NtUserCallHwnd.c
Lines changed: 353 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,353 @@
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 <[email protected]>
6+
*/
7+
8+
#include "../win32nt.h"
9+
#include <gditools.h>
10+
11+
#define DIBINDEX(n) MAKELONG((n),0x10FF)
12+
13+
static void Test_NtGdiSetPixel_generic(void)
14+
{
15+
COLORREF cr;
16+
17+
/* Test hdc = NULL */
18+
SetLastError(0xdeadbeef);
19+
cr = NtGdiSetPixel(NULL, 0, 0, 0);
20+
ok_eq_hex(cr, CLR_INVALID);
21+
todo_ros ok_eq_ulong(GetLastError(), 0xdeadbeef);
22+
23+
/* Test invalid hdc */
24+
SetLastError(0xdeadbeef);
25+
cr = NtGdiSetPixel((HDC)0x12345678, 0, 0, 0);
26+
ok_eq_hex(cr, CLR_INVALID);
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);
33+
ok_eq_hex(cr, CLR_INVALID);
34+
ok_eq_ulong(GetLastError(), 0xdeadbeef);
35+
36+
/* Test Info-DC */
37+
cr = NtGdiSetPixel(ghdcInfo, 0, 0, 0x123456);
38+
todo_ros ok_eq_hex(cr, (GetNTVersion() >= _WIN32_WINNT_VISTA) ? 0x123456 : CLR_INVALID);
39+
40+
/* Test bounds */
41+
BITMAP bm = { 0 };
42+
GetObject(ghbmpDIB32, sizeof(BITMAP), &bm);
43+
cr = NtGdiSetPixel(ghdcDIB32, -1, 0, 0x123456);
44+
todo_ros ok_eq_hex(cr, CLR_INVALID);
45+
cr = NtGdiSetPixel(ghdcDIB32, 0, -1, 0x123456);
46+
todo_ros ok_eq_hex(cr, CLR_INVALID);
47+
cr = NtGdiSetPixel(ghdcDIB32, bm.bmWidth - 1, 0, 0x123456);
48+
ok_eq_hex(cr, 0x123456);
49+
cr = NtGdiSetPixel(ghdcDIB32, bm.bmWidth, 0, 0x123456);
50+
todo_ros ok_eq_hex(cr, CLR_INVALID);
51+
cr = NtGdiSetPixel(ghdcDIB32, 0, bm.bmHeight - 1, 0x123456);
52+
ok_eq_hex(cr, 0x123456);
53+
cr = NtGdiSetPixel(ghdcDIB32, 0, bm.bmHeight, 0x123456);
54+
todo_ros ok_eq_hex(cr, CLR_INVALID);
55+
ok_eq_ulong(GetLastError(), 0xdeadbeef);
56+
57+
/* Test WindowOrg */
58+
((PULONG)gpvDIB32)[0] = 0x00;
59+
SetWindowOrgEx(ghdcDIB32, 2, 2, NULL);
60+
cr = NtGdiSetPixel(ghdcDIB32, 1, 1, 0x123456);
61+
todo_ros ok_eq_hex(cr, CLR_INVALID);
62+
cr = NtGdiSetPixel(ghdcDIB32, 2, 2, 0x123456);
63+
ok_eq_hex(cr, 0x123456);
64+
ok_eq_hex(((PULONG)gpvDIB32)[0], 0x00563412);
65+
SetWindowOrgEx(ghdcDIB32, 0, 0, NULL);
66+
67+
/* Test ViewPortOrg */
68+
((PULONG)gpvDIB32)[0] = 0x00;
69+
SetViewportOrgEx(ghdcDIB32, 2, 2, NULL);
70+
cr = NtGdiSetPixel(ghdcDIB32, -3, 0, 0x123456);
71+
todo_ros ok_eq_hex(cr, CLR_INVALID);
72+
cr = NtGdiSetPixel(ghdcDIB32, -2, -2, 0x123456);
73+
ok_eq_hex(cr, 0x123456);
74+
ok_eq_hex(((PULONG)gpvDIB32)[0], 0x00563412);
75+
SetViewportOrgEx(ghdcDIB32, 0, 0, NULL);
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;
84+
SetWorldTransform(ghdcDIB32, &xform);
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+
96+
static 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);
130+
SetBkMode(ghdcDIB1, OPAQUE);
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 */
240+
cr = NtGdiSetPixel(ghdcDIB1, 0, 0, CLR_INVALID);
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);
262+
cr = NtGdiSetPixel(ghdcDIB1_InvCol, 0, 0, CLR_INVALID);
263+
todo_ros ok_eq_hex(cr, 0);
264+
todo_ros ok_eq_hex(((PUCHAR)gpvDIB1_InvCol)[0], 0x80);
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+
288+
static void Test_NtGdiSetPixel_32Bpp(void)
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+
342+
START_TEST(NtGdiSetPixel)
343+
{
344+
if (!GdiToolsInit())
345+
{
346+
skip("GdiToolsInit failed\n");
347+
return;
348+
}
349+
350+
Test_NtGdiSetPixel_generic();
351+
Test_NtGdiSetPixel_1Bpp();
352+
Test_NtGdiSetPixel_32Bpp();
353+
}

modules/rostests/apitests/win32u/testlist.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ extern void func_NtGdiSelectFont(void);
3838
extern void func_NtGdiSelectPen(void);
3939
extern void func_NtGdiSetBitmapBits(void);
4040
extern void func_NtGdiSetDIBitsToDeviceInternal(void);
41+
extern void func_NtGdiSetPixel(void);
4142
extern void func_NtGdiTransformPoints(void);
4243
//extern void func_NtUserCallHwnd(void);
4344
//extern void func_NtUserCallHwndLock(void);
@@ -105,6 +106,7 @@ const struct test winetest_testlist[] =
105106
{ "NtGdiSelectPen", func_NtGdiSelectPen },
106107
{ "NtGdiSetBitmapBits", func_NtGdiSetBitmapBits },
107108
{ "NtGdiSetDIBitsToDeviceInternal", func_NtGdiSetDIBitsToDeviceInternal },
109+
{ "NtGdiSetPixel", func_NtGdiSetPixel },
108110
{ "NtGdiTransformPoints", func_NtGdiTransformPoints },
109111

110112
/* ntuser */

0 commit comments

Comments
 (0)