ReactOS 0.4.16-dev-2110-ge3521eb
NtGdiLineTo.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 NtGdiLineTo
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
15static
18 COLORREF crPenColor,
19 HDC hdc,
20 COLORREF crBack,
21 COLORREF crText)
22{
23 SetDCPenColor(hdc, crPenColor);
24 SetBkColor(hdc, crBack);
25 SetTextColor(hdc, crText);
26 NtGdiMoveTo(hdc, 0, 0, NULL);
27 NtGdiLineTo(hdc, 4, 0);
28 COLORREF cr = NtGdiGetPixel(hdc, 0, 0);
29 return cr;
30}
31
33{
34 HPEN hOldPen = SelectObject(hdc, GetStockObject(DC_PEN));
35
36 // White bg color
37 ok_eq_hex(Do_LineTo(0x000000, hdc, 0xFFFFFF, 0x000000), 0x000000); // white bg, black fg: black => black
38 ok_eq_hex(Do_LineTo(0x010101, hdc, 0xFFFFFF, 0x000000), 0x000000); // white bg, black fg: dark => black
39 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0xFFFFFF, 0x000000), 0x000000); // white bg, black fg: bright => black
40 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0xFFFFFF, 0x000000), 0xFFFFFF); // white bg, black fg: white => white
41 ok_eq_hex(Do_LineTo(0x000000, hdc, 0xFFFFFF, 0x010101), 0x000000); // white bg, dark fg: black => black
42 ok_eq_hex(Do_LineTo(0x010101, hdc, 0xFFFFFF, 0x010101), 0x000000); // white bg, dark fg: fg => black
43 ok_eq_hex(Do_LineTo(0x020202, hdc, 0xFFFFFF, 0x010101), 0x000000); // white bg, dark fg: dark => black
44 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0xFFFFFF, 0x010101), 0x000000); // white bg, dark fg: bright => black
45 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0xFFFFFF, 0x010101), 0xFFFFFF); // white bg, dark fg: white => white
46 ok_eq_hex(Do_LineTo(0x000000, hdc, 0xFFFFFF, 0xFEFEFE), 0x000000); // white bg, bright fg: black => black
47 ok_eq_hex(Do_LineTo(0x010101, hdc, 0xFFFFFF, 0xFEFEFE), 0x000000); // white bg, bright fg: dark => black
48 ok_eq_hex(Do_LineTo(0xFDFDFD, hdc, 0xFFFFFF, 0xFEFEFE), 0x000000); // white bg, bright fg: bright => black
49 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0xFFFFFF, 0xFEFEFE), 0x000000); // white bg, bright fg: fg => black
50 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0xFFFFFF, 0xFEFEFE), 0xFFFFFF); // white bg, bright fg: white => white
51 ok_eq_hex(Do_LineTo(0x000000, hdc, 0xFFFFFF, 0xFFFFFF), 0x000000); // white bg, white fg: black => black
52 ok_eq_hex(Do_LineTo(0x010101, hdc, 0xFFFFFF, 0xFFFFFF), 0x000000); // white bg, white fg: dark => black
53 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0xFFFFFF, 0xFFFFFF), 0x000000); // white bg, white fg: bright => black
54 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0xFFFFFF, 0xFFFFFF), 0xFFFFFF); // white bg, white fg: white => white
55
56 // bright bg color
57 ok_eq_hex(Do_LineTo(0x000000, hdc, 0xFEFEFE, 0x000000), 0x000000); // bright bg, black fg: black => black
58 ok_eq_hex(Do_LineTo(0x010101, hdc, 0xFEFEFE, 0x000000), 0x000000); // bright bg, black fg: dark => black
59 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0xFEFEFE, 0x000000), 0xFFFFFF); // bright bg, black fg: bg => white
60 ok_eq_hex(Do_LineTo(0xFDFDFD, hdc, 0xFEFEFE, 0x000000), 0x000000); // bright bg, black fg: bright => black
61 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0xFEFEFE, 0x000000), 0xFFFFFF); // bright bg, black fg: white => white
62 ok_eq_hex(Do_LineTo(0x000000, hdc, 0xFEFEFE, 0x010101), 0x000000); // bright bg, dark fg: black => black
63 ok_eq_hex(Do_LineTo(0x010101, hdc, 0xFEFEFE, 0x010101), 0x000000); // bright bg, dark fg: fg => black
64 ok_eq_hex(Do_LineTo(0x020202, hdc, 0xFEFEFE, 0x010101), 0x000000); // bright bg, dark fg: dark => black
65 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0xFEFEFE, 0x010101), 0xFFFFFF); // bright bg, dark fg: bg => white
66 ok_eq_hex(Do_LineTo(0xFDFDFD, hdc, 0xFEFEFE, 0x010101), 0x000000); // bright bg, dark fg: bright => black
67 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0xFEFEFE, 0x010101), 0xFFFFFF); // bright bg, dark fg: white => white
68 ok_eq_hex(Do_LineTo(0x000000, hdc, 0xFEFEFE, 0xFDFDFD), 0x000000); // bright bg, bright fg: black => black
69 ok_eq_hex(Do_LineTo(0x010101, hdc, 0xFEFEFE, 0xFDFDFD), 0x000000); // bright bg, bright fg: dark => black
70 ok_eq_hex(Do_LineTo(0xFDFDFD, hdc, 0xFEFEFE, 0xFDFDFD), 0x000000); // bright bg, bright fg: fg => black
71 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0xFEFEFE, 0xFDFDFD), 0xFFFFFF); // bright bg, bright fg: bg => white
72 ok_eq_hex(Do_LineTo(0xFDFDFD, hdc, 0xFEFEFE, 0xFDFDFD), 0x000000); // bright bg, bright fg: dark => black
73 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0xFEFEFE, 0xFDFDFD), 0xFFFFFF); // bright bg, bright fg: white => white
74 ok_eq_hex(Do_LineTo(0x000000, hdc, 0xFEFEFE, 0xFFFFFF), 0x000000); // bright bg, white fg: black => black
75 ok_eq_hex(Do_LineTo(0x010101, hdc, 0xFEFEFE, 0xFFFFFF), 0x000000); // bright bg, white fg: dark => black
76 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0xFEFEFE, 0xFFFFFF), 0xFFFFFF); // bright bg, white fg: bg => white
77 ok_eq_hex(Do_LineTo(0xFDFDFD, hdc, 0xFEFEFE, 0xFFFFFF), 0x000000); // bright bg, white fg: bright => black
78 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0xFEFEFE, 0xFFFFFF), 0xFFFFFF); // bright bg, white fg: white => white
79
80 // dark bg color
81 ok_eq_hex(Do_LineTo(0x000000, hdc, 0x010101, 0x000000), 0x000000); // dark bg, black fg: black => black
82 ok_eq_hex(Do_LineTo(0x010101, hdc, 0x010101, 0x000000), 0x000000); // dark bg, black fg: bg => black
83 ok_eq_hex(Do_LineTo(0x020202, hdc, 0x010101, 0x000000), 0xFFFFFF); // dark bg, black fg: dark => white
84 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0x010101, 0x000000), 0xFFFFFF); // dark bg, black fg: bright => white
85 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0x010101, 0x000000), 0xFFFFFF); // dark bg, black fg: white => white
86 ok_eq_hex(Do_LineTo(0x000000, hdc, 0x010101, 0x020202), 0x000000); // dark bg, dark fg: black => black
87 ok_eq_hex(Do_LineTo(0x010101, hdc, 0x010101, 0x020202), 0x000000); // dark bg, dark fg: bg => black
88 ok_eq_hex(Do_LineTo(0x020202, hdc, 0x010101, 0x020202), 0xFFFFFF); // dark bg, dark fg: fg => white
89 ok_eq_hex(Do_LineTo(0x030303, hdc, 0x010101, 0x020202), 0xFFFFFF); // dark bg, dark fg: dark => white
90 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0x010101, 0x020202), 0xFFFFFF); // dark bg, dark fg: bright => white
91 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0x010101, 0x020202), 0xFFFFFF); // dark bg, dark fg: white => white
92 ok_eq_hex(Do_LineTo(0x000000, hdc, 0x010101, 0xFEFEFE), 0x000000); // dark bg, bright fg: black => black
93 ok_eq_hex(Do_LineTo(0x010101, hdc, 0x010101, 0xFEFEFE), 0x000000); // dark bg, bright fg: bg => black
94 ok_eq_hex(Do_LineTo(0x030303, hdc, 0x010101, 0xFEFEFE), 0xFFFFFF); // dark bg, bright fg: dark => white
95 ok_eq_hex(Do_LineTo(0xFDFDFD, hdc, 0x010101, 0xFEFEFE), 0xFFFFFF); // dark bg, bright fg: bright => white
96 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0x010101, 0xFEFEFE), 0xFFFFFF); // dark bg, bright fg: fg => white
97 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0x010101, 0xFEFEFE), 0xFFFFFF); // dark bg, bright fg: white => white
98 ok_eq_hex(Do_LineTo(0x000000, hdc, 0x010101, 0xFFFFFF), 0x000000); // dark bg, white fg: black => black
99 ok_eq_hex(Do_LineTo(0x010101, hdc, 0x010101, 0xFFFFFF), 0x000000); // dark bg, white fg: bg => black
100 ok_eq_hex(Do_LineTo(0x020202, hdc, 0x010101, 0xFFFFFF), 0xFFFFFF); // dark bg, white fg: dark => white
101 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0x010101, 0xFFFFFF), 0xFFFFFF); // dark bg, white fg: dark => white
102 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0x010101, 0xFFFFFF), 0xFFFFFF); // dark bg, white fg: white => white
103
104 // black bg color
105 ok_eq_hex(Do_LineTo(0x000000, hdc, 0x000000, 0x000000), 0x000000); // black bg, black fg: black => black
106 ok_eq_hex(Do_LineTo(0x010101, hdc, 0x000000, 0x000000), 0xFFFFFF); // black bg, black fg: dark => white
107 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0x000000, 0x000000), 0xFFFFFF); // black bg, black fg: bright => white
108 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0x000000, 0x000000), 0xFFFFFF); // black bg, black fg: white => white
109 ok_eq_hex(Do_LineTo(0x000000, hdc, 0x000000, 0x020202), 0x000000); // black bg, dark fg: black => black
110 ok_eq_hex(Do_LineTo(0x010101, hdc, 0x000000, 0x020202), 0xFFFFFF); // black bg, dark fg: dark => white
111 ok_eq_hex(Do_LineTo(0x020202, hdc, 0x000000, 0x020202), 0xFFFFFF); // black bg, dark fg: fg => white
112 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0x000000, 0x020202), 0xFFFFFF); // black bg, dark fg: bright => white
113 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0x000000, 0x020202), 0xFFFFFF); // black bg, dark fg: white => white
114 ok_eq_hex(Do_LineTo(0x000000, hdc, 0x000000, 0xFEFEFE), 0x000000); // black bg, bright fg: black => black
115 ok_eq_hex(Do_LineTo(0x030303, hdc, 0x000000, 0xFEFEFE), 0xFFFFFF); // black bg, bright fg: dark => white
116 ok_eq_hex(Do_LineTo(0xFDFDFD, hdc, 0x000000, 0xFEFEFE), 0xFFFFFF); // black bg, bright fg: bright => white
117 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0x000000, 0xFEFEFE), 0xFFFFFF); // black bg, bright fg: fg => white
118 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0x000000, 0xFEFEFE), 0xFFFFFF); // black bg, bright fg: white => white
119 ok_eq_hex(Do_LineTo(0x000000, hdc, 0x000000, 0xFFFFFF), 0x000000); // black bg, white fg: black => black
120 ok_eq_hex(Do_LineTo(0x010101, hdc, 0x000000, 0xFFFFFF), 0xFFFFFF); // black bg, white fg: dark => white
121 ok_eq_hex(Do_LineTo(0xFEFEFE, hdc, 0x000000, 0xFFFFFF), 0xFFFFFF); // black bg, white fg: bright => white
122 ok_eq_hex(Do_LineTo(0xFFFFFF, hdc, 0x000000, 0xFFFFFF), 0xFFFFFF); // black bg, white fg: white => white
123
124 // Test the bg brightness threshold behavior
125 ok_eq_hex(Do_LineTo(0x010101, hdc, 0x80807E, 0x000000), 0xFFFFFF); // just below threshold bg, black fg: grey => white
126 ok_eq_hex(Do_LineTo(0x010101, hdc, 0x80807F, 0x000000), 0x000000); // just above threshold bg, black fg: grey => black
127 ok_eq_hex(Do_LineTo(0x010101, hdc, 0xFF007F, 0x000000), 0xFFFFFF); // just below threshold bg, black fg: grey => white
128 ok_eq_hex(Do_LineTo(0x010101, hdc, 0xFF0080, 0x000000), 0x000000); // just above threshold bg, black fg: grey => black
129
130 SelectObject(hdc, hOldPen);
131}
132
134{
135 HPEN hOldPen = SelectObject(ghdcDIB1_RB, GetStockObject(DC_PEN));
136
137 ok_eq_hex(Do_LineTo(0x000000, ghdcDIB1_RB, 0xFFFFFF, 0x000000), 0x0000FF); // white bg, black fg: black => red
138 ok_eq_hex(Do_LineTo(0x0000FF, ghdcDIB1_RB, 0xFFFFFF, 0x000000), 0x0000FF); // white bg, black fg: red => red
139 ok_eq_hex(Do_LineTo(0x5050FF, ghdcDIB1_RB, 0xFFFFFF, 0x000000), 0x0000FF); // white bg, black fg: gray-red => red
140 ok_eq_hex(Do_LineTo(0xFF0000, ghdcDIB1_RB, 0xFFFFFF, 0x000000), 0xFF0000); // white bg, black fg: blue => blue
141 ok_eq_hex(Do_LineTo(0xFE0000, ghdcDIB1_RB, 0xFFFFFF, 0x000000), 0x0000FF); // white bg, black fg: almost blue => red
142 ok_eq_hex(Do_LineTo(0xFF5050, ghdcDIB1_RB, 0xFFFFFF, 0x000000), 0x0000FF); // white bg, black fg: gray-blue => red
143 ok_eq_hex(Do_LineTo(0xFFFFFF, ghdcDIB1_RB, 0xFFFFFF, 0x000000), 0xFF0000); // white bg, black fg: white => blue
144
145 ok_eq_hex(Do_LineTo(0x000000, ghdcDIB1_RB, 0x000000, 0xFFFFFF), 0xFF0000); // black bg, white fg: black => blue
146 ok_eq_hex(Do_LineTo(0x0000FF, ghdcDIB1_RB, 0x000000, 0xFFFFFF), 0x0000FF); // black bg, white fg: red => red
147 ok_eq_hex(Do_LineTo(0x5050FF, ghdcDIB1_RB, 0x000000, 0xFFFFFF), 0x0000FF); // black bg, white fg: gray-red => red
148 ok_eq_hex(Do_LineTo(0xFF0000, ghdcDIB1_RB, 0x000000, 0xFFFFFF), 0xFF0000); // black bg, white fg: blue => blue
149 ok_eq_hex(Do_LineTo(0xFE0000, ghdcDIB1_RB, 0x000000, 0xFFFFFF), 0x0000FF); // black bg, white fg: blue => red
150 ok_eq_hex(Do_LineTo(0xFF5050, ghdcDIB1_RB, 0x000000, 0xFFFFFF), 0x0000FF); // black bg, white fg: gray-blue => red
151 ok_eq_hex(Do_LineTo(0xFFFFFF, ghdcDIB1_RB, 0x000000, 0xFFFFFF), 0x0000FF); // black bg, white fg: white => red
152
153 ok_eq_hex(Do_LineTo(0x000000, ghdcDIB1_RB, 0x2020FE, 0xFFFFFF), 0xFF0000); // reddish bg, white fg: black => blue
154 ok_eq_hex(Do_LineTo(0x0000FF, ghdcDIB1_RB, 0x2020FE, 0xFFFFFF), 0x0000FF); // reddish bg, white fg: red => red
155 ok_eq_hex(Do_LineTo(0x5050FF, ghdcDIB1_RB, 0x2020FE, 0xFFFFFF), 0xFF0000); // reddish bg, white fg: gray-red => blue
156 ok_eq_hex(Do_LineTo(0xFF0000, ghdcDIB1_RB, 0x2020FE, 0xFFFFFF), 0xFF0000); // reddish bg, white fg: blue => blue
157 ok_eq_hex(Do_LineTo(0xFE0000, ghdcDIB1_RB, 0x2020FE, 0xFFFFFF), 0xFF0000); // reddish bg, white fg: blue => blue
158 ok_eq_hex(Do_LineTo(0xFF5050, ghdcDIB1_RB, 0x2020FE, 0xFFFFFF), 0xFF0000); // reddish bg, white fg: gray-blue => blue
159 ok_eq_hex(Do_LineTo(0xFFFFFF, ghdcDIB1_RB, 0x2020FE, 0xFFFFFF), 0xFF0000); // reddish bg, white fg: white => blue
160 ok_eq_hex(Do_LineTo(0x2020FE, ghdcDIB1_RB, 0x2020FE, 0xFFFFFF), 0x0000FF); // reddish bg, white fg: bg => red
161
162 ok_eq_hex(Do_LineTo(0x000000, ghdcDIB1_RB, 0xFE2010, 0xFFFFFF), 0x0000FF); // blueish bg, white fg: black => red
163 ok_eq_hex(Do_LineTo(0x0000FF, ghdcDIB1_RB, 0xFE2010, 0xFFFFFF), 0x0000FF); // blueish bg, white fg: red => red
164 ok_eq_hex(Do_LineTo(0x5050FF, ghdcDIB1_RB, 0xFE2010, 0xFFFFFF), 0x0000FF); // blueish bg, white fg: gray-red => red
165 ok_eq_hex(Do_LineTo(0xFF0000, ghdcDIB1_RB, 0xFE2010, 0xFFFFFF), 0xFF0000); // blueish bg, white fg: blue => blue
166 ok_eq_hex(Do_LineTo(0xFE0000, ghdcDIB1_RB, 0xFE2010, 0xFFFFFF), 0x0000FF); // blueish bg, white fg: blue => red
167 ok_eq_hex(Do_LineTo(0xFF5050, ghdcDIB1_RB, 0xFE2010, 0xFFFFFF), 0x0000FF); // blueish bg, white fg: gray-blue => red
168 ok_eq_hex(Do_LineTo(0xFFFFFF, ghdcDIB1_RB, 0xFE2010, 0xFFFFFF), 0x0000FF); // blueish bg, white fg: white => red
169 ok_eq_hex(Do_LineTo(0xFE2010, ghdcDIB1_RB, 0xFE2010, 0xFFFFFF), 0xFF0000); // blueish bg, white fg: bg => blue
170
171 // Test the bg color threshold behavior
172 ok_eq_hex(Do_LineTo(0x010101, ghdcDIB1_RB, 0x002001, 0x000000), 0xFF0000); // closer to red: grey => blue
173 ok_eq_hex(Do_LineTo(0x010101, ghdcDIB1_RB, 0x808081, 0x000000), 0xFF0000); // closer to red: grey => blue
174 ok_eq_hex(Do_LineTo(0x010101, ghdcDIB1_RB, 0xFE80FF, 0x000000), 0xFF0000); // closer to red: grey => blue
175 ok_eq_hex(Do_LineTo(0x010101, ghdcDIB1_RB, 0x000000, 0x000000), 0x0000FF); // middle: grey => red
176 ok_eq_hex(Do_LineTo(0x010101, ghdcDIB1_RB, 0x808080, 0x000000), 0x0000FF); // middle: grey => red
177 ok_eq_hex(Do_LineTo(0x010101, ghdcDIB1_RB, 0xFFFFFF, 0x000000), 0x0000FF); // middle: grey => red
178 ok_eq_hex(Do_LineTo(0x010101, ghdcDIB1_RB, 0x013000, 0x000000), 0x0000FF); // closer to blue: grey => red
179 ok_eq_hex(Do_LineTo(0x010101, ghdcDIB1_RB, 0x81A080, 0x000000), 0x0000FF); // closer to blue: grey => red
180 ok_eq_hex(Do_LineTo(0x010101, ghdcDIB1_RB, 0xFFFFFE, 0x000000), 0x0000FF); // closer to blue: grey => red
181
182 SelectObject(ghdcDIB1_RB, hOldPen);
183}
184
186{
187 ok(GdiToolsInit(), "GdiToolsInit failed\n");
188
189 ULONG cBitsPixel;
190 ChangeScreenBpp(32, &cBitsPixel);
191
193 ok(SelectObject(ghdcDDB1, ghbmp1) != NULL, "SelectObject failed\n");
195 ok(SelectObject(ghdcDDB32, ghbmp32) != NULL, "SelectObject failed\n");
196
201
202 ChangeScreenBpp(cBitsPixel, &cBitsPixel);
203}
static HDC ghdcDDB1
Definition: NtGdiLineTo.c:13
void Test_NtGdiLineTo_1BPP_RB(void)
Definition: NtGdiLineTo.c:133
void Test_NtGdiLineTo_1BPP_BW(HDC hdc)
Definition: NtGdiLineTo.c:32
static COLORREF Do_LineTo(COLORREF crPenColor, HDC hdc, COLORREF crBack, COLORREF crText)
Definition: NtGdiLineTo.c:17
static HDC ghdcDDB32
Definition: NtGdiLineTo.c:13
#define ok_eq_hex(value, expected)
Definition: apitest.h:134
#define ok(value,...)
Definition: atltest.h:57
#define START_TEST(x)
Definition: atltest.h:75
#define NULL
Definition: types.h:112
BOOL ChangeScreenBpp(_In_ ULONG cBitsPixel, _Out_ PULONG pcOldBitsPixel)
Definition: gditools.c:110
HBITMAP ghbmp1
Definition: gditools.c:22
HDC ghdcDIB1
Definition: gditools.c:24
HDC ghdcDIB1_RB
Definition: gditools.c:24
BOOL GdiToolsInit(void)
Definition: gditools.c:229
HBITMAP ghbmp32
Definition: gditools.c:22
HDC ghdcDIB1_InvCol
Definition: gditools.c:24
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:88
__kernel_entry W32KAPI DWORD APIENTRY NtGdiGetPixel(_In_ HDC hdc, _In_ INT x, _In_ INT y)
Definition: bitblt.c:1518
__kernel_entry W32KAPI BOOL APIENTRY NtGdiLineTo(_In_ HDC hdc, _In_ INT x, _In_ INT y)
uint32_t ULONG
Definition: typedefs.h:59
COLORREF WINAPI SetDCPenColor(_In_ HDC hdc, _In_ COLORREF crColor)
Definition: dc.c:941
DWORD COLORREF
Definition: windef.h:94
HGDIOBJ WINAPI GetStockObject(_In_ int)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
Definition: dc.c:999
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:917