1 /*
2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for ...
5 * PROGRAMMERS: Timo Kreuzer
6 */
7
8 #include "precomp.h"
9
Test_GetDIBColorTable()10 void Test_GetDIBColorTable()
11 {
12 struct
13 {
14 BITMAPINFOHEADER bmiHeader;
15 ULONG bmiColors[8];
16 } bmibuffer;
17 BITMAPINFO *pbmi = (PVOID)&bmibuffer;
18 HBITMAP hbmp, hbmpOld;
19 HDC hdc;
20 PBYTE pjBits;
21 UINT cColors;
22 ULONG aulColors[257];
23
24 hdc = CreateCompatibleDC(0);
25 ok(hdc != 0, "failed\n");
26
27 SetLastError(0);
28 cColors = GetDIBColorTable(hdc, 0, 257, (RGBQUAD*)aulColors);
29 ok_long(cColors, 2);
30 ok_err(0);
31 ok_long(aulColors[0], 0x000000);
32 ok_long(aulColors[1], 0xffffff);
33
34 hbmp = CreateBitmap(1, 1, 1, 1, NULL);
35 ok(hbmp != 0, "\n");
36 hbmpOld = SelectObject(hdc, hbmp);
37 ok(hbmpOld != 0, "Failed to select bitmap\n");
38 cColors = GetDIBColorTable(hdc, 0, 257, (RGBQUAD*)aulColors);
39 ok_long(cColors, 2);
40 ok_err(0);
41 ok_long(aulColors[0], 0x000000);
42 ok_long(aulColors[1], 0xffffff);
43 SelectObject(hdc, hbmpOld);
44 DeleteObject(hbmp);
45
46 /* Initialize a BITMAPINFO */
47 pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
48 pbmi->bmiHeader.biWidth = 2;
49 pbmi->bmiHeader.biHeight = 2;
50 pbmi->bmiHeader.biPlanes = 1;
51 pbmi->bmiHeader.biBitCount = 8;
52 pbmi->bmiHeader.biCompression = BI_RGB;
53 pbmi->bmiHeader.biSizeImage = 0;
54 pbmi->bmiHeader.biXPelsPerMeter = 1;
55 pbmi->bmiHeader.biYPelsPerMeter = 1;
56 pbmi->bmiHeader.biClrUsed = 3;
57 pbmi->bmiHeader.biClrImportant = 0;
58 bmibuffer.bmiColors[0] = 0xff0000;
59 bmibuffer.bmiColors[1] = 0x00ff00;
60 bmibuffer.bmiColors[2] = 0x0000ff;
61
62 hbmp = CreateDIBSection(hdc, pbmi, DIB_RGB_COLORS, (PVOID*)&pjBits, 0, 0 );
63 ok( hbmp != NULL, "error=%ld\n", GetLastError() );
64 SelectObject(hdc, hbmp);
65
66 cColors = GetDIBColorTable(hdc, 0, 257, (RGBQUAD*)aulColors);
67 ok_long(cColors, 256);
68 ok_long(aulColors[0], 0xff0000);
69 ok_long(aulColors[1], 0x00ff00);
70 ok_long(aulColors[2], 0x0000ff);
71 ok_long(aulColors[3], 0x000000);
72
73
74 cColors = SetDIBColorTable(hdc, 0, 4, (RGBQUAD*)aulColors);
75 ok_long(cColors, 4);
76
77 aulColors[3] = 0x000F0F;
78 cColors = SetDIBColorTable(hdc, 0, 4, (RGBQUAD*)aulColors);
79 ok_long(cColors, 4);
80
81 cColors = GetDIBColorTable(hdc, 0, 257, (RGBQUAD*)aulColors);
82 ok_long(cColors, 256);
83 ok_long(aulColors[0], 0xff0000);
84 ok_long(aulColors[1], 0x00ff00);
85 ok_long(aulColors[2], 0x0000ff);
86 ok_long(aulColors[3], 0x000F0F);
87
88
89 SelectObject(hdc, GetStockObject(21));
90 DeleteObject(hbmp);
91
92 bmibuffer.bmiColors[0] = 1;
93 bmibuffer.bmiColors[1] = 2;
94 bmibuffer.bmiColors[2] = 3;
95
96 hbmp = CreateDIBSection(hdc, pbmi, DIB_PAL_COLORS, (PVOID*)&pjBits, 0, 0 );
97 ok( hbmp != NULL, "error=%ld\n", GetLastError() );
98 SelectObject(hdc, hbmp);
99
100
101 }
102
START_TEST(GetDIBColorTable)103 START_TEST(GetDIBColorTable)
104 {
105 Test_GetDIBColorTable();
106 }
107
108