2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for SetPixel
5 * PROGRAMMERS: Timo Kreuzer
16 PALETTEENTRY logpalettedata
[8];
21 { 0x10, 0x20, 0x30, PC_NOCOLLAPSE
},
22 { 0x20, 0x30, 0x40, PC_NOCOLLAPSE
},
23 { 0x30, 0x40, 0x50, PC_NOCOLLAPSE
},
24 { 0x40, 0x50, 0x60, PC_NOCOLLAPSE
},
25 { 0x50, 0x60, 0x70, PC_NOCOLLAPSE
},
26 { 0x60, 0x70, 0x80, PC_NOCOLLAPSE
},
27 { 0x70, 0x80, 0x90, PC_NOCOLLAPSE
},
28 { 0x80, 0x90, 0xA0, PC_NOCOLLAPSE
},
32 void Test_SetPixel_Params()
37 ok_long(SetPixel(0, 0, 0, RGB(255,255,255)), -1);
38 ok_err(ERROR_INVALID_HANDLE
);
41 hdc
= CreateICA("DISPLAY", NULL
, NULL
, NULL
);
44 ok_long(SetPixel(hdc
, 0, 0, 0), -1);
45 ok_long(SetPixel(hdc
, 0, 0, RGB(255,255,255)), -1);
49 /* Test a mem DC without selecting a bitmap */
50 hdc
= CreateCompatibleDC(NULL
);
53 ok_long(SetPixel(hdc
, 0, 0, 0), -1);
58 ok_long(SetPixel(hdc
, 0, 0, 0), -1);
62 void Test_SetPixel_PAL()
66 BITMAPINFOHEADER bmiHeader
;
69 BITMAPINFO
*pbmi
= (PVOID
)&bmibuffer
;
72 HPALETTE hpal
, hpalOld
;
76 /* Initialize the BITMAPINFO */
77 pbmi
->bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
78 pbmi
->bmiHeader
.biWidth
= 1;
79 pbmi
->bmiHeader
.biHeight
= 1;
80 pbmi
->bmiHeader
.biPlanes
= 1;
81 pbmi
->bmiHeader
.biBitCount
= 8;
82 pbmi
->bmiHeader
.biCompression
= BI_RGB
;
83 pbmi
->bmiHeader
.biSizeImage
= 0;
84 pbmi
->bmiHeader
.biXPelsPerMeter
= 1;
85 pbmi
->bmiHeader
.biYPelsPerMeter
= 1;
86 pbmi
->bmiHeader
.biClrUsed
= 8;
87 pbmi
->bmiHeader
.biClrImportant
= 0;
88 for( i
= 0; i
< 8; i
++ )
90 bmibuffer
.bmiColors
[i
] = i
+ 1;
93 /* Create a memory DC */
94 hdc
= CreateCompatibleDC(0);
95 ok(hdc
!= 0, "failed\n");
97 /* Create a DIB section and select it */
98 hbmp
= CreateDIBSection(hdc
, pbmi
, DIB_PAL_COLORS
, (PVOID
*)&pulBits
, 0, 0 );
99 ok(hbmp
!= NULL
, "CreateDIBSection failed with error %ld\n", GetLastError());
100 ok(SelectObject(hdc
, hbmp
) != 0, "SelectObject failed\n");
102 ok_long(SetPixel(hdc
, 0, 0, 0), 0);
103 ok_long(pulBits
[0], 8);
104 ok_long(SetPixel(hdc
, 0, 0, 1), 0);
105 ok_long(pulBits
[0], 8);
106 ok_long(SetPixel(hdc
, 0, 0, RGB(255,255,255)), 0xc0dcc0);
107 ok_long(pulBits
[0], 7);
109 ok_long(SetPixel(hdc
, 0, 0, RGB(255,0,0)), 0x80);
110 ok_long(pulBits
[0], 0);
113 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(0)), 0x80);
114 ok_long(pulBits
[0], 0);
115 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(1)), 0x8000);
116 ok_long(pulBits
[0], 1);
117 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(7)), 0xc0dcc0);
118 ok_long(pulBits
[0], 7);
119 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(8)), 0);
120 ok_long(pulBits
[0], 8);
121 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(126)), 0);
122 ok_long(pulBits
[0], 126);
123 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(0x123456)), 0);
124 ok_long(pulBits
[0], 0x56);
126 /* Test PALETTEINDEX */
127 ok_long(SetPixel(hdc
, 0, 0, PALETTEINDEX(0)), 0);
128 ok_long(pulBits
[0], 8);
129 ok_long(SetPixel(hdc
, 0, 0, PALETTEINDEX(1)), 0x80);
130 ok_long(pulBits
[0], 0);
131 ok_long(SetPixel(hdc
, 0, 0, PALETTEINDEX(2)), 0x8000);
132 ok_long(pulBits
[0], 1);
134 /* Delete the DIB section */
138 /* Initialize the logical palette and select it */
139 hpal
= CreatePalette((LOGPALETTE
*)&gpal
);
140 hpalOld
= SelectPalette(hdc
, hpal
, FALSE
);
141 ok(hpalOld
!= NULL
, "error=%ld\n", GetLastError());
144 /* Create a DIB section and select it */
145 hbmp
= CreateDIBSection(hdc
, pbmi
, DIB_PAL_COLORS
, (PVOID
*)&pulBits
, 0, 0 );
146 ok(hbmp
!= NULL
, "CreateDIBSection failed with error %ld\n", GetLastError());
147 ok(SelectObject(hdc
, hbmp
) != 0, "SelectObject failed\n");
149 ok_long(SetPixel(hdc
, 0, 0, 0), 0);
150 ok_long(pulBits
[0], 8);
152 ok_long(SetPixel(hdc
, 0, 0, RGB(255,0,0)), 0x605040);
153 ok_long(pulBits
[0], 2);
156 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(0)), 0x403020);
157 ok_long(pulBits
[0], 0);
158 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(1)), 0x504030);
159 ok_long(pulBits
[0], 1);
160 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(7)), 0x302010);
161 ok_long(pulBits
[0], 7);
162 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(8)), 0);
163 ok_long(pulBits
[0], 8);
164 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(126)), 0);
165 ok_long(pulBits
[0], 126);
166 ok_long(SetPixel(hdc
, 0, 0, DIBINDEX(0x123456)), 0);
167 ok_long(pulBits
[0], 0x56);
169 /* Test PALETTEINDEX */
170 ok_long(SetPixel(hdc
, 0, 0, PALETTEINDEX(0)), 0x302010);
171 ok_long(pulBits
[0], 7);
172 ok_long(SetPixel(hdc
, 0, 0, PALETTEINDEX(1)), 0x403020);
173 ok_long(pulBits
[0], 0);
174 ok_long(SetPixel(hdc
, 0, 0, PALETTEINDEX(253)), 0x302010);
175 ok_long(pulBits
[0], 7);
176 ok_long(SetPixel(hdc
, 0, 0, PALETTEINDEX(254)), 0x302010);
177 ok_long(pulBits
[0], 7);
184 Test_SetPixel_Params();