ReactOS 0.4.16-dev-2110-ge3521eb
NtGdiLineTo.c File Reference
#include "../win32nt.h"
#include <gditools.h>
Include dependency graph for NtGdiLineTo.c:

Go to the source code of this file.

Macros

#define DIBINDEX(n)   MAKELONG((n),0x10FF)
 

Functions

static COLORREF Do_LineTo (COLORREF crPenColor, HDC hdc, COLORREF crBack, COLORREF crText)
 
void Test_NtGdiLineTo_1BPP_BW (HDC hdc)
 
void Test_NtGdiLineTo_1BPP_RB (void)
 
 START_TEST (NtGdiLineTo)
 

Variables

static HDC ghdcDDB1
 
static HDC ghdcDDB32
 

Macro Definition Documentation

◆ DIBINDEX

#define DIBINDEX (   n)    MAKELONG((n),0x10FF)

Definition at line 11 of file NtGdiLineTo.c.

Function Documentation

◆ Do_LineTo()

static COLORREF Do_LineTo ( COLORREF  crPenColor,
HDC  hdc,
COLORREF  crBack,
COLORREF  crText 
)
static

Definition at line 17 of file NtGdiLineTo.c.

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}
#define NULL
Definition: types.h:112
HDC hdc
Definition: main.c:9
__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)
COLORREF WINAPI SetDCPenColor(_In_ HDC hdc, _In_ COLORREF crColor)
Definition: dc.c:941
DWORD COLORREF
Definition: windef.h:94
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
Definition: dc.c:999
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:917

Referenced by Test_NtGdiLineTo_1BPP_BW(), and Test_NtGdiLineTo_1BPP_RB().

◆ START_TEST()

START_TEST ( NtGdiLineTo  )

Definition at line 185 of file NtGdiLineTo.c.

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 HDC ghdcDDB32
Definition: NtGdiLineTo.c:13
#define ok(value,...)
Definition: atltest.h:57
BOOL ChangeScreenBpp(_In_ ULONG cBitsPixel, _Out_ PULONG pcOldBitsPixel)
Definition: gditools.c:110
HBITMAP ghbmp1
Definition: gditools.c:22
HDC ghdcDIB1
Definition: gditools.c:24
BOOL GdiToolsInit(void)
Definition: gditools.c:229
HBITMAP ghbmp32
Definition: gditools.c:22
HDC ghdcDIB1_InvCol
Definition: gditools.c:24
uint32_t ULONG
Definition: typedefs.h:59
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)

◆ Test_NtGdiLineTo_1BPP_BW()

void Test_NtGdiLineTo_1BPP_BW ( HDC  hdc)

Definition at line 32 of file NtGdiLineTo.c.

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}
static COLORREF Do_LineTo(COLORREF crPenColor, HDC hdc, COLORREF crBack, COLORREF crText)
Definition: NtGdiLineTo.c:17
#define ok_eq_hex(value, expected)
Definition: apitest.h:134
HGDIOBJ WINAPI GetStockObject(_In_ int)

Referenced by START_TEST().

◆ Test_NtGdiLineTo_1BPP_RB()

void Test_NtGdiLineTo_1BPP_RB ( void  )

Definition at line 133 of file NtGdiLineTo.c.

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}
HDC ghdcDIB1_RB
Definition: gditools.c:24

Referenced by START_TEST().

Variable Documentation

◆ ghdcDDB1

HDC ghdcDDB1
static

Definition at line 13 of file NtGdiLineTo.c.

Referenced by START_TEST().

◆ ghdcDDB32

HDC ghdcDDB32
static

Definition at line 13 of file NtGdiLineTo.c.

Referenced by START_TEST().