CVS: rdesktop/tests brushtest.c, NONE, 1.1 brushtest.exe, NONE, 1.1 brushtestMakefile, NONE, 1.1

"Jay Sorg" <[email protected]> Sun, 2 Nov 2008 03:55:02 +0000
Newsgroups gmane.network.rdesktop.cvs
Message-ID <[email protected]>
Update of /cvsroot/rdesktop/rdesktop/tests
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv29192

Added Files:
	brushtest.c brushtest.exe brushtestMakefile 
Log Message:
added brushtest

--- NEW FILE: brushtest.c ---


/* by Jay Sorg, public domain

   for testing brush cache */



#include <windows.h>



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;

}


--- NEW FILE: brushtest.exe ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: brushtestMakefile ---


# 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



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/