mirror of
https://github.com/reactos/reactos.git
synced 2024-10-30 11:35:58 +00:00
7ad21a4425
- Convert win32k native api test to actual wine style api-tests - Hack around a bit with the win32k dlls, some renaming, etc. - Delete old apitest stuff svn path=/trunk/; revision=70458
154 lines
4 KiB
C
154 lines
4 KiB
C
/*
|
|
* PROJECT: ReactOS api tests
|
|
* LICENSE: GPL - See COPYING in the top level directory
|
|
* PURPOSE: Test for NtUserSelectPalette
|
|
* PROGRAMMERS:
|
|
*/
|
|
|
|
#include <win32nt.h>
|
|
|
|
FORCEINLINE
|
|
PALETTEENTRY
|
|
PALENTRY(BYTE r, BYTE g, BYTE b)
|
|
{
|
|
PALETTEENTRY ret;
|
|
|
|
ret.peRed = r;
|
|
ret.peGreen = g;
|
|
ret.peBlue = b;
|
|
ret.peFlags = 0;
|
|
return ret;
|
|
}
|
|
|
|
START_TEST(NtUserSelectPalette)
|
|
{
|
|
HINSTANCE hinst = GetModuleHandle(NULL);
|
|
HPALETTE hPal, hOldPal;
|
|
HWND hWnd;
|
|
HDC hDC, hCompDC;
|
|
struct
|
|
{
|
|
LOGPALETTE logpal;
|
|
PALETTEENTRY entry[20];
|
|
} pal;
|
|
|
|
ZeroMemory(&pal, sizeof(pal));
|
|
|
|
pal.logpal.palVersion = 0x300;
|
|
pal.logpal.palNumEntries = 6;
|
|
pal.entry[0] = PALENTRY(0,0,0);
|
|
pal.entry[1] = PALENTRY(255,255,255);
|
|
pal.entry[2] = PALENTRY(128,128,128);
|
|
pal.entry[3] = PALENTRY(128,0,0);
|
|
pal.entry[4] = PALENTRY(0,128,0);
|
|
pal.entry[5] = PALENTRY(0,0,128);
|
|
|
|
hPal = CreatePalette(&pal.logpal);
|
|
ASSERT(hPal);
|
|
TEST(DeleteObject(hPal) == 1);
|
|
hPal = CreatePalette(&pal.logpal);
|
|
ASSERT(hPal);
|
|
|
|
/* Create a window */
|
|
hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
|
|
CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
|
|
NULL, NULL, hinst, 0);
|
|
hDC = GetDC(hWnd);
|
|
ASSERT(hDC);
|
|
hCompDC = CreateCompatibleDC(hDC);
|
|
ASSERT(hCompDC);
|
|
|
|
/* Test NULL DC */
|
|
SetLastError(ERROR_SUCCESS);
|
|
hOldPal = NtUserSelectPalette(NULL, hPal, 0);
|
|
TEST(hOldPal == 0);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
|
|
/* Test invalid DC */
|
|
SetLastError(ERROR_SUCCESS);
|
|
hOldPal = NtUserSelectPalette((HDC)-1, hPal, 0);
|
|
TEST(hOldPal == 0);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
|
|
/* Test NULL palette */
|
|
SetLastError(ERROR_SUCCESS);
|
|
hOldPal = NtUserSelectPalette(hDC, NULL, 0);
|
|
TEST(hOldPal == 0);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
|
|
/* Test invalid palette */
|
|
SetLastError(ERROR_SUCCESS);
|
|
hOldPal = NtUserSelectPalette(hDC, (HPALETTE)-1, 0);
|
|
TEST(hOldPal == 0);
|
|
TEST(GetLastError() == ERROR_SUCCESS);
|
|
|
|
/* Test valid palette */
|
|
hOldPal = NtUserSelectPalette(hDC, hPal, 0);
|
|
TEST(hOldPal != 0);
|
|
TEST(hOldPal == GetStockObject(DEFAULT_PALETTE));
|
|
|
|
/* We cannot Delete the palette */
|
|
TEST(DeleteObject(hPal) == 0);
|
|
|
|
/* We can still select the Palette into a compatible DC */
|
|
hOldPal = NtUserSelectPalette(hCompDC, hPal, 0);
|
|
TEST(hOldPal != 0);
|
|
|
|
|
|
|
|
#if 0
|
|
RealizePalette(hDC);
|
|
|
|
GetClientRect(hWnd, &rect);
|
|
FillRect(hDC, &rect, GetSysColorBrush(COLOR_BTNSHADOW));
|
|
|
|
TEST(GetNearestColor(hDC, RGB(0,0,0)) == RGB(0,0,0));
|
|
TEST(GetNearestColor(hDC, RGB(0,0,1)) == RGB(0,0,1));
|
|
|
|
ReleaseDC(hWnd, hDC);
|
|
DestroyWindow(hWnd);
|
|
RECT rect;
|
|
HBITMAP hBmp;
|
|
|
|
|
|
BITMAPINFOHEADER bmih = {sizeof(BITMAPINFOHEADER), // biSize
|
|
3, // biWidth
|
|
3, // biHeight
|
|
1, // biPlanes
|
|
8, // biBitCount
|
|
BI_RGB, // biCompression
|
|
0, // biSizeImage
|
|
92, // biXPelsPerMeter
|
|
92, // biYPelsPerMeter
|
|
6, // biClrUsed
|
|
6}; // biClrImportant
|
|
BYTE bits[3][3] = {{0,1,2},{3,4,5},{6,1,2}};
|
|
|
|
struct
|
|
{
|
|
BITMAPINFOHEADER bmih;
|
|
RGBQUAD colors[6];
|
|
} bmi = {{sizeof(BITMAPINFOHEADER),3,3,1,8,BI_RGB,0,92,92,6,6},
|
|
{{0,0,0,0},{255,255,255,0},{255,0,0,0},
|
|
{0,255,0,0},{0,0,255,0},{128,128,128,0}}};
|
|
|
|
hBmp = CreateDIBitmap(hCompDC, &bmih, CBM_INIT, &bits, (BITMAPINFO*)&bmi, DIB_RGB_COLORS);
|
|
ASSERT(hBmp);
|
|
|
|
SetLastError(0);
|
|
TEST(NtGdiSelectBitmap(hCompDC, hBmp));
|
|
hOldPal = NtUserSelectPalette(hCompDC, hPal, 0);
|
|
TEST(hOldPal != NULL);
|
|
RealizePalette(hCompDC);
|
|
|
|
TEST(GetNearestColor(hCompDC, RGB(0,0,0)) == RGB(0,0,0));
|
|
TEST(GetNearestColor(hCompDC, RGB(0,0,1)) == RGB(0,0,0));
|
|
TEST(GetNearestColor(hCompDC, RGB(100,0,0)) == RGB(0,0,0));
|
|
TEST(GetNearestColor(hCompDC, RGB(250,250,250)) == RGB(255,255,255));
|
|
TEST(GetNearestColor(hCompDC, RGB(120,100,110)) == RGB(128,128,128));
|
|
|
|
printf("nearest = 0x%x\n", GetNearestColor(hCompDC, RGB(120,100,110)));
|
|
#endif
|
|
|
|
}
|