11 { {22,33,44,PC_RESERVED
},
12 {11,55,77,PC_EXPLICIT
},
13 {00,77,66,PC_RESERVED
| PC_NOCOLLAPSE
},
16 return CreatePalette((LOGPALETTE
*)&palstruct
);
20 Test_NtGdiDoPalette_GdiPalAnimate(PTESTINFO pti
)
23 PALETTEENTRY palEntries
[5] = {
28 {0x12,0x34,0x56,0x11}};
29 PALETTEENTRY palEntries2
[5];
31 /* Test stock palette */
32 SetLastError(ERROR_SUCCESS
);
33 RTEST(NtGdiDoPalette(GetStockObject(DEFAULT_PALETTE
), 0, 1, palEntries
, GdiPalAnimate
, FALSE
) == 0);
34 RTEST(GetLastError() == ERROR_SUCCESS
);
37 /* Test pEntries = NULL */
38 hPal
= CreateTestPalette();
39 RTEST(NtGdiDoPalette(hPal
, 0, 1, NULL
, GdiPalAnimate
, TRUE
) == 0);
40 RTEST(NtGdiDoPalette(hPal
, 0, 1, NULL
, GdiPalAnimate
, FALSE
) == 0);
43 /* Test PC_RESERVED */
44 hPal
= CreateTestPalette();
45 RTEST(NtGdiDoPalette(hPal
, 0, 5, palEntries
, GdiPalAnimate
, TRUE
) == 2);
48 hPal
= CreateTestPalette();
49 RTEST(NtGdiDoPalette(hPal
, 1, 5, palEntries
, GdiPalAnimate
, TRUE
) == 2);
52 hPal
= CreateTestPalette();
53 RTEST(NtGdiDoPalette(hPal
, 2, 5, palEntries
, GdiPalAnimate
, TRUE
) == 1);
56 hPal
= CreateTestPalette();
57 RTEST(NtGdiDoPalette(hPal
, 3, 5, palEntries
, GdiPalAnimate
, TRUE
) == 1);
60 hPal
= CreateTestPalette();
61 RTEST(NtGdiDoPalette(hPal
, 4, 5, palEntries
, GdiPalAnimate
, TRUE
) == 0);
64 hPal
= CreateTestPalette();
65 RTEST(NtGdiDoPalette(hPal
, 5, 5, palEntries
, GdiPalAnimate
, TRUE
) == 0);
68 hPal
= CreateTestPalette();
69 RTEST(NtGdiDoPalette(hPal
, 0, 5, palEntries
, GdiPalAnimate
, FALSE
) == 2);
72 hPal
= CreateTestPalette();
73 RTEST(NtGdiDoPalette(hPal
, 3, 5, palEntries
, GdiPalAnimate
, FALSE
) == 1);
76 /* Test if entries are set correctly */
77 hPal
= CreateTestPalette();
78 NtGdiDoPalette(hPal
, 0, 5, palEntries
, GdiPalAnimate
, TRUE
);
79 NtGdiDoPalette(hPal
, 0, 5, palEntries2
, GdiPalGetEntries
, FALSE
);
80 RTEST(palEntries2
[0].peRed
== 1);
81 RTEST(palEntries2
[0].peGreen
== 2);
82 RTEST(palEntries2
[0].peBlue
== 3);
83 RTEST(palEntries2
[0].peFlags
== 0);
84 RTEST(palEntries2
[1].peRed
== palEntries
[1].peRed
);
85 RTEST(palEntries2
[1].peGreen
== palEntries
[1].peGreen
);
86 RTEST(palEntries2
[1].peBlue
== palEntries
[1].peBlue
);
87 RTEST(palEntries2
[1].peFlags
== palEntries
[1].peFlags
);
88 RTEST(palEntries2
[2].peRed
== 11);
89 RTEST(palEntries2
[2].peGreen
== 55);
90 RTEST(palEntries2
[2].peBlue
== 77);
91 TEST(palEntries2
[2].peFlags
== PC_EXPLICIT
);
92 RTEST(palEntries2
[3].peRed
== palEntries
[3].peRed
);
93 RTEST(palEntries2
[3].peGreen
== palEntries
[3].peGreen
);
94 RTEST(palEntries2
[3].peBlue
== palEntries
[3].peBlue
);
95 RTEST(palEntries2
[3].peFlags
== palEntries
[3].peFlags
);
99 return APISTATUS_NORMAL
;
103 Test_NtGdiDoPalette_GdiPalSetEntries(PTESTINFO pti
)
106 HPALETTE hPal
, hOldPal
;
107 PALETTEENTRY palEntries
[5] = {
112 {0x12,0x34,0x56,0x11}};
113 PALETTEENTRY palEntries2
[5];
115 hPal
= CreateTestPalette();
117 /* Test invalid handle */
118 SetLastError(ERROR_SUCCESS
);
119 RTEST(NtGdiDoPalette((HPALETTE
)23, 0, 1, palEntries
, GdiPalSetEntries
, TRUE
) == 0);
120 RTEST(GetLastError() == ERROR_SUCCESS
);
122 /* Test system palette */
123 RTEST(NtGdiDoPalette(GetStockObject(DEFAULT_PALETTE
), 0, 1, palEntries
, GdiPalSetEntries
, TRUE
) == 0);
124 RTEST(GetLastError() == ERROR_SUCCESS
);
126 RTEST(NtGdiDoPalette(hPal
, 0, 1, palEntries
, GdiPalSetEntries
, TRUE
) == 1);
127 RTEST(NtGdiDoPalette(hPal
, 0, 2, palEntries
, GdiPalSetEntries
, TRUE
) == 2);
128 RTEST(NtGdiDoPalette(hPal
, 0, 3, palEntries
, GdiPalSetEntries
, TRUE
) == 3);
129 RTEST(NtGdiDoPalette(hPal
, 0, 5, palEntries
, GdiPalSetEntries
, TRUE
) == 5);
130 RTEST(NtGdiDoPalette(hPal
, 0, 6, palEntries
, GdiPalSetEntries
, TRUE
) == 5);
131 RTEST(NtGdiDoPalette(hPal
, 3, 6, palEntries
, GdiPalSetEntries
, TRUE
) == 2);
132 // TEST(NtGdiDoPalette(hPal, 4, 23247, palEntries, GdiPalSetEntries, TRUE) == 0);
134 /* Test bInbound == FALSE */
135 NtGdiDoPalette(hPal
, 0, 5, palEntries
, GdiPalSetEntries
, TRUE
);
136 ZeroMemory(palEntries2
, sizeof(palEntries2
));
137 RTEST(NtGdiDoPalette(hPal
, 0, 5, palEntries2
, GdiPalSetEntries
, FALSE
) == 5);
138 /* we should get the old values returned in our buffer! */
139 TEST(memcmp(palEntries2
, palEntries
, sizeof(palEntries
)) == 0);
141 /* check what we have in our palette now */
142 ZeroMemory(palEntries2
, sizeof(palEntries2
));
143 RTEST(NtGdiDoPalette(hPal
, 0, 5, palEntries2
, GdiPalGetEntries
, FALSE
) == 5);
144 TEST(memcmp(palEntries2
, palEntries
, sizeof(palEntries
)) == 0);
146 RTEST(NtGdiDoPalette(hPal
, 0, 4, palEntries2
, GdiPalSetEntries
, TRUE
) == 4);
147 RTEST(GetLastError() == ERROR_SUCCESS
);
149 /* Test if entries are set correctly */
150 hPal
= CreateTestPalette();
151 NtGdiDoPalette(hPal
, 0, 5, palEntries
, GdiPalSetEntries
, TRUE
);
152 NtGdiDoPalette(hPal
, 0, 5, palEntries2
, GdiPalGetEntries
, FALSE
);
153 RTEST(palEntries2
[0].peRed
== 0);
154 RTEST(palEntries2
[0].peGreen
== 0);
155 RTEST(palEntries2
[0].peBlue
== 0);
156 RTEST(palEntries2
[0].peFlags
== 0);
158 /* Test that the buffer was not changed */
161 /* Test with palette selected into dc */
162 hDC
= CreateCompatibleDC(NULL
);
163 hOldPal
= SelectPalette(hDC
, hPal
, 0);
164 RTEST(NtGdiDoPalette(hPal
, 0, 4, palEntries
, GdiPalSetEntries
, TRUE
) == 4);
165 SelectPalette(hDC
, hOldPal
, 0);
167 /* Test pEntries = NULL */
168 RTEST(NtGdiDoPalette(hPal
, 0, 1, NULL
, GdiPalGetEntries
, TRUE
) == 0);
170 return APISTATUS_NORMAL
;
174 Test_NtGdiDoPalette_GdiPalGetEntries(PTESTINFO pti
)
178 hPal
= CreateTestPalette();
180 /* Test pEntries = NULL */
181 RTEST(NtGdiDoPalette(hPal
, 0, 1, NULL
, GdiPalGetEntries
, TRUE
) == 0);
182 RTEST(NtGdiDoPalette(hPal
, 0, 1, NULL
, GdiPalGetEntries
, FALSE
) == 5);
183 RTEST(NtGdiDoPalette(hPal
, 2, 1, NULL
, GdiPalGetEntries
, FALSE
) == 5);
184 RTEST(NtGdiDoPalette(hPal
, 20, 1, NULL
, GdiPalGetEntries
, FALSE
) == 5);
185 RTEST(NtGdiDoPalette(hPal
, -20, 1, NULL
, GdiPalGetEntries
, FALSE
) == 5);
186 RTEST(NtGdiDoPalette(hPal
, 2, 0, NULL
, GdiPalGetEntries
, FALSE
) == 5);
191 return APISTATUS_NORMAL
;
195 Test_NtGdiDoPalette_GetSystemPalette(PTESTINFO pti
)
197 return APISTATUS_NORMAL
;
201 Test_NtGdiDoPalette_GetBIBColorTable(PTESTINFO pti
)
203 return APISTATUS_NORMAL
;
207 Test_NtGdiDoPalette_SetDIBColorTable(PTESTINFO pti
)
215 BITMAPINFOHEADER bmiHeader
;
219 hdc
= CreateCompatibleDC(0);
222 bmi
.bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
223 bmi
.bmiHeader
.biWidth
= 10;
224 bmi
.bmiHeader
.biHeight
= 10;
225 bmi
.bmiHeader
.biPlanes
= 1;
226 bmi
.bmiHeader
.biBitCount
= 8;
227 bmi
.bmiHeader
.biCompression
= BI_RGB
;
228 bmi
.bmiHeader
.biSizeImage
= 0;
229 bmi
.bmiHeader
.biXPelsPerMeter
= 1;
230 bmi
.bmiHeader
.biYPelsPerMeter
= 1;
231 bmi
.bmiHeader
.biClrUsed
= 9;
232 bmi
.bmiHeader
.biClrImportant
= 9;
233 bmi
.bmiColors
[0] = 0x000000;
234 bmi
.bmiColors
[1] = 0x202020;
235 bmi
.bmiColors
[2] = 0x404040;
236 bmi
.bmiColors
[3] = 0x606060;
237 bmi
.bmiColors
[4] = 0x808080;
238 bmi
.bmiColors
[5] = 0xA0A0A0;
239 bmi
.bmiColors
[6] = 0xC0C0C0;
240 bmi
.bmiColors
[7] = 0xE0E0E0;
241 bmi
.bmiColors
[8] = 0xffffff;
242 hbmp
= CreateDIBSection(hdc
, (BITMAPINFO
*)&bmi
, DIB_PAL_COLORS
, (PVOID
*)&pjBits
, NULL
, 0);
246 SelectObject(hdc
, hbmp
);
254 bmi
.bmiColors
[8] = 0x000000;
255 bmi
.bmiColors
[7] = 0x202020;
256 bmi
.bmiColors
[6] = 0x404040;
257 bmi
.bmiColors
[5] = 0x606060;
258 bmi
.bmiColors
[4] = 0x808080;
259 bmi
.bmiColors
[3] = 0xA0A0A0;
260 bmi
.bmiColors
[2] = 0xC0C0C0;
261 bmi
.bmiColors
[1] = 0xE0E0E0;
262 bmi
.bmiColors
[0] = 0xffffff;
263 TEST(NtGdiDoPalette(hdc
, 0, 9, &bmi
.bmiColors
, GdiPalSetColorTable
, FALSE
) == 9);
265 SetDCPenColor(hdc
, 0xE0E0E0);
266 SetDCBrushColor(hdc
, 0x202020);
267 Rectangle(hdc
, 0, 0, 10, 10);
272 return APISTATUS_NORMAL
;
277 Test_NtGdiDoPalette(PTESTINFO pti
)
281 ret
= Test_NtGdiDoPalette_GdiPalAnimate(pti
);
282 if (ret
!= APISTATUS_NORMAL
)
287 ret
= Test_NtGdiDoPalette_GdiPalSetEntries(pti
);
288 if (ret
!= APISTATUS_NORMAL
)
293 ret
= Test_NtGdiDoPalette_GdiPalGetEntries(pti
);
294 if (ret
!= APISTATUS_NORMAL
)
299 ret
= Test_NtGdiDoPalette_GetSystemPalette(pti
);
300 if (ret
!= APISTATUS_NORMAL
)
305 ret
= Test_NtGdiDoPalette_GetBIBColorTable(pti
);
306 if (ret
!= APISTATUS_NORMAL
)
311 ret
= Test_NtGdiDoPalette_SetDIBColorTable(pti
);
312 if (ret
!= APISTATUS_NORMAL
)
317 return APISTATUS_NORMAL
;