From a42c5895f685799fd137a7ca691cbf4b0a55af95 Mon Sep 17 00:00:00 2001 From: Jay Sorg Date: Sun, 2 Nov 2008 03:55:00 +0000 Subject: [PATCH] added brushtest git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@1483 423420c4-83ab-492f-b58f-81f9feb106b5 --- tests/brushtest.c | 215 ++++++++++++++++++++++++++++++++++++++++ tests/brushtest.exe | Bin 0 -> 49152 bytes tests/brushtestMakefile | 16 +++ 3 files changed, 231 insertions(+) create mode 100644 tests/brushtest.c create mode 100755 tests/brushtest.exe create mode 100644 tests/brushtestMakefile diff --git a/tests/brushtest.c b/tests/brushtest.c new file mode 100644 index 0000000..29073ee --- /dev/null +++ b/tests/brushtest.c @@ -0,0 +1,215 @@ + +/* by Jay Sorg, public domain + for testing brush cache */ + +#include + +static HWND g_wnd; +static HWND g_button; +static HWND g_pulldown; + +/*****************************************************************************/ +static int WINAPI +brush_test(int selindex, int orgx, int orgy) +{ + HDC dc; + RECT rect; + HBRUSH br; + BITMAPINFO* bi; + RGBQUAD ce; + int bi_size; + int i; + int j; + UCHAR* d8; + + bi_size = sizeof(BITMAPINFO) + 15 * sizeof(RGBQUAD) + 4 * 8; + bi = malloc(bi_size); + memset(bi, 0, bi_size); + bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + bi->bmiHeader.biWidth = 8; + bi->bmiHeader.biHeight = 8; + bi->bmiHeader.biPlanes = 1; + bi->bmiHeader.biBitCount = 4; + bi->bmiHeader.biCompression = BI_RGB; + bi->bmiHeader.biSizeImage = 32; + ce.rgbBlue = 0xff; + ce.rgbGreen = 0; + ce.rgbRed = 0; + ce.rgbReserved = 0; + bi->bmiColors[0] = ce; + ce.rgbBlue = 0; + ce.rgbGreen = 0xff; + ce.rgbRed = 0; + ce.rgbReserved = 0; + bi->bmiColors[1] = ce; + ce.rgbBlue = 0; + ce.rgbGreen = 0; + ce.rgbRed = 0xff; + ce.rgbReserved = 0; + bi->bmiColors[2] = ce; + ce.rgbBlue = 0x0f; + ce.rgbGreen = 0; + ce.rgbRed = 0; + ce.rgbReserved = 0; + bi->bmiColors[3] = ce; + ce.rgbBlue = 0; + ce.rgbGreen = 0x0f; + ce.rgbRed = 0; + ce.rgbReserved = 0; + bi->bmiColors[4] = ce; + d8 = (UCHAR*)bi; + d8 = (d8 + bi_size) - 32; + if (selindex == 1) /* 2 color */ + { + d8[0] = 0x10; + } + else if (selindex == 2) /* 4 color */ + { + d8[0] = 0x12; + d8[1] = 0x33; + } + else if (selindex == 3) /* > 4 color */ + { + d8[0] = 0x12; + d8[1] = 0x34; + } + br = CreateDIBPatternBrushPt(bi, DIB_RGB_COLORS); + if (br == 0) + { + MessageBox(g_wnd, "error in CreateDIBPatternBrushPt", "error", MB_OK); + } + dc = GetDC(g_wnd); + rect.left = 100; + rect.top = 60; + rect.right = rect.left + 128; + rect.bottom = rect.top + 128; + for (j = 0; j < 128; j += 5) + { + for (i = 0; i < 128; i += 5) + { + SetBrushOrgEx(dc, orgx + i, orgy + j, 0); + FillRect(dc, &rect, br); + } + } + DeleteObject(br); + free(bi); + ReleaseDC(g_wnd, dc); + return 0; +} + +/*****************************************************************************/ +static LRESULT CALLBACK +WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + HWND hwndCtl; + int selindex; + + switch (message) + { + case WM_DESTROY: + PostQuitMessage(0); + break; + case WM_COMMAND: + hwndCtl = (HWND) lParam; + if (hwndCtl == g_button) + { + selindex = SendMessage(g_pulldown, CB_GETCURSEL, 0, 0); + if (selindex < 1) + { + MessageBox(g_wnd, "please select one", "info", MB_OK); + } + else + { + brush_test(selindex, 4, 4); + } + } + break; + } + return DefWindowProc(hWnd, message, wParam, lParam); +} + +/*****************************************************************************/ +static int WINAPI +create_window(void) +{ + WNDCLASS wc; + DWORD style; + int x; + int y; + int w; + int h; + + ZeroMemory(&wc, sizeof(wc)); + wc.lpfnWndProc = WndProc; /* points to window procedure */ + wc.lpszClassName = "brushtest"; + wc.hbrBackground = CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); + wc.hCursor = LoadCursor(0, IDC_ARROW); + /* Register the window class. */ + if (!RegisterClass(&wc)) + { + return 1; /* Failed to register window class */ + } + style = WS_OVERLAPPED | WS_CAPTION | WS_POPUP | WS_MINIMIZEBOX | + WS_SYSMENU | WS_SIZEBOX | WS_MAXIMIZEBOX; + x = CW_USEDEFAULT; + y = CW_USEDEFAULT; + w = 640; + h = 480; + g_wnd = CreateWindow(wc.lpszClassName, "brushtest", + style, x, y, w, h, 0, 0, 0, 0); + /* button */ + style = WS_CHILD | WS_VISIBLE; + g_button = CreateWindow("BUTTON", "Go", style, 300, 10, 80, 24, g_wnd, + 0, 0, 0); + /* pull down */ + style = WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST; + g_pulldown = CreateWindow("COMBOBOX", "", style, 100, 10, 160, 150, g_wnd, + 0, 0, 0); + ShowWindow(g_wnd, SW_SHOWNORMAL); + SendMessage(g_pulldown, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) ""); + SendMessage(g_pulldown, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) "2 color test"); + SendMessage(g_pulldown, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) "4 color test"); + SendMessage(g_pulldown, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) "> 4 color test"); + return 0; +} + +/*****************************************************************************/ +static int WINAPI +main_loop(void) +{ + BOOL cont; + BOOL gmcode; + MSG msg1; + + create_window(); + cont = TRUE; + while (cont) + { + MsgWaitForMultipleObjects(0, 0, 0, INFINITE, QS_ALLINPUT); + while (cont && PeekMessage(&msg1, 0, 0, 0, PM_NOREMOVE)) + { + gmcode = GetMessage(&msg1, 0, 0, 0); + if (gmcode && (gmcode != -1)) + { + TranslateMessage(&msg1); + DispatchMessage(&msg1); + } + else + { + cont = FALSE; + } + } + } + return 0; +} + +/*****************************************************************************/ +int WINAPI +WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, + LPSTR lpCmdLine, int nCmdShow) +{ + int rv; + + rv = main_loop(); + return rv; +} diff --git a/tests/brushtest.exe b/tests/brushtest.exe new file mode 100755 index 0000000000000000000000000000000000000000..08bca387849387eeded82d0e95e9365860cb6eac GIT binary patch literal 49152 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 Xtdk8A*XZ2;;7EH&GL>K`e|PwAa4qmG literal 0 HcmV?d00001 diff --git a/tests/brushtestMakefile b/tests/brushtestMakefile new file mode 100644 index 0000000..d27cb46 --- /dev/null +++ b/tests/brushtestMakefile @@ -0,0 +1,16 @@ + +# by Jay Sorg, public domain +# borland makefile + +OBJS = brushtest.obj + +CFLAGS = -O2 +LDFLAGS = -W + +all: brushtest.exe + +brushtest.exe: $(OBJS) + $(CC) -ebrushtest.exe $(LDFLAGS) $(OBJS) + +clean: + del /q $(OBJS) brushtest.exe *.tds