2025-04-27 07:49:33 -04:00

1327 lines
55 KiB
C

/******************************Module*Header*******************************\
* Module Name: ftbm.c
*
* This is a test of the genblt functions
*
* Created: 8-NOV-1990 12:52:00
* Author: Patrick Haluptzok patrickh
*
* Copyright (c) 1990 Microsoft Corporation
*
\**************************************************************************/
#include "precomp.h"
#pragma hdrstop
// This is to create a bitmapinfo structure
typedef struct _BITMAPINFOPAT2
{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[20];
} BITMAPINFOPAT2;
typedef struct _BITMAPINFOPAT
{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[16];
} BITMAPINFOPAT;
BITMAPINFOPAT bmiPat =
{
{
sizeof(BITMAPINFOHEADER),
32,
32,
1,
1,
BI_RGB,
(32 * 32),
0,
0,
2,
2
},
{ // B G R
{ 0, 0, 0x80,0 }, // 1
{ 0, 0x80,0, 0 }, // 2
{ 0, 0, 0, 0 }, // 0
{ 0, 0x80,0x80,0 }, // 3
{ 0x80,0, 0, 0 }, // 4
{ 0x80,0, 0x80,0 }, // 5
{ 0x80,0x80,0, 0 }, // 6
{ 0x80,0x80,0x80,0 }, // 7
{ 0xC0,0xC0,0xC0,0 }, // 8
{ 0, 0, 0xFF,0 }, // 9
{ 0, 0xFF,0, 0 }, // 10
{ 0, 0xFF,0xFF,0 }, // 11
{ 0xFF,0, 0, 0 }, // 12
{ 0xFF,0, 0xFF,0 }, // 13
{ 0xFF,0xFF,0, 0 }, // 14
{ 0xFF,0xFF,0xFF,0 } // 15
}
};
BYTE abColorLines[64 * 64 / 2] =
{
// 0
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
// 8
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
// 16
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
// 24
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
// 32
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
// 40
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
// 48
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
// 56
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF,
0x00,0x00,0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88,0x99,0x99,0xAA,0xAA,0xBB,0xBB,0xCC,0xCC,0xDD,0xDD,0xEE,0xEE,0xFF,0xFF
// 64
};
BITMAPINFOPAT bmiPat1 =
{
{
sizeof(BITMAPINFOHEADER),
64,
64,
1,
4,
BI_RGB,
(64 * 64 / 2),
0,
0,
16,
16
},
{ // B G R
{ 0xFF,0xFF,0xFF,0 }, // 15
{ 0xFF,0xFF,0, 0 }, // 14
{ 0xFF,0, 0xFF,0 }, // 13
{ 0xFF,0, 0, 0 }, // 12
{ 0, 0xFF,0xFF,0 }, // 11
{ 0, 0xFF,0, 0 }, // 10
{ 0, 0, 0xFF,0 }, // 9
{ 0x80,0x80,0x80,0 }, // 8
{ 0xC0,0xC0,0xC0,0 }, // 7
{ 0x80,0x80,0, 0 }, // 6
{ 0x80,0, 0x80,0 }, // 5
{ 0x80,0, 0, 0 }, // 4
{ 0, 0x80,0x80,0 }, // 3
{ 0, 0x80,0, 0 }, // 2
{ 0, 0, 0x80,0 }, // 1
{ 0, 0, 0, 0 } // 0
}
};
BITMAPINFOPAT2 bmiPat2 =
{
{
sizeof(BITMAPINFOHEADER),
32,
32,
1,
8,
BI_RGB,
32*32,
0,
0,
20,
20
},
{ // B G R
{ 0xFF,0xFF,0xFF,0 }, // 15
{ 0xFF,0xFF,0, 0 }, // 14
{ 0xFF,0, 0xFF,0 }, // 13
{ 0xFF,0, 0, 0 }, // 12
{ 0, 0xFF,0xFF,0 }, // 11
{ 0, 0xFF,0, 0 }, // 10
{ 0, 0, 0xFF,0 }, // 9
{ 0x80,0x80,0x80,0 }, // 8
{ 0xC0,0xC0,0xC0,0 }, // 7
{ 0x80,0x80,0, 0 }, // 6
{ 0x80,0, 0x80,0 }, // 5
{ 0x80,0, 0, 0 }, // 4
{ 0, 0x80,0x80,0 }, // 3
{ 0, 0x80,0, 0 }, // 2
{ 0, 0, 0x80,0 }, // 1
{ 0, 0, 0, 0 }, // 0
{ 0, 0, 0x80,0 }, // 1
{ 0x80,0, 0x80,0 }, // 5
{ 0, 0, 0xFF,0 }, // 9
{ 0xFF,0, 0xFF,0 } // 13
}
};
BYTE abColorLines2[32 * 32] =
{
16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16, 16,16,16,16,16,16,16,16,
17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,
17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,
17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,
17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,
17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,
17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,
17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,
17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,
18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18,
18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18,
18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18,
18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18,
18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18,
18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18,
18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18,
18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18,
19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19,
19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19,
19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19,
19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19,
19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19,
19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19,
19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19,
19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19, 19,19,19,19,19,19,19,19
};
BYTE abBitCat[] = {0xFF, 0xFF, 0xFF, 0xFF,
0x80, 0xA2, 0x45, 0x01,
0x80, 0xA2, 0x45, 0x01,
0x80, 0xA2, 0x45, 0xE1,
0x80, 0xA2, 0x45, 0x11,
0x80, 0xA2, 0x45, 0x09,
0x80, 0x9C, 0x39, 0x09,
0x80, 0xC0, 0x03, 0x05,
0x80, 0x40, 0x02, 0x05,
0x80, 0x40, 0x02, 0x05,
0x80, 0x40, 0x02, 0x05,
0x80, 0x20, 0x04, 0x05,
0x80, 0x20, 0x04, 0x05,
0x80, 0x20, 0x04, 0x05,
0x80, 0x10, 0x08, 0x05,
0x80, 0x10, 0x08, 0x09,
0x80, 0x10, 0x08, 0x11,
0x80, 0x08, 0x10, 0x21,
0x80, 0x08, 0x10, 0xC1,
0x80, 0x08, 0x10, 0x09,
0x80, 0x07, 0xE0, 0x09,
0x80, 0x08, 0x10, 0x09,
0x80, 0xFC, 0x3F, 0x09,
0x80, 0x09, 0x90, 0x09,
0x80, 0xFC, 0x3F, 0x01,
0x80, 0x08, 0x10, 0x01,
0x80, 0x1A, 0x58, 0x01,
0x80, 0x28, 0x14, 0x01,
0x80, 0x48, 0x12, 0x01,
0x80, 0x8F, 0xF1, 0x01,
0x81, 0x04, 0x20, 0x81,
0xFF, 0xFF, 0xFF, 0xFF } ;
static BYTE abBigCat[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
typedef struct _VGALOGPALETTE
{
USHORT ident;
USHORT NumEntries;
PALETTEENTRY palPalEntry[16];
} VGALOGPALETTE;
VGALOGPALETTE logPalVGA =
{
0x300, // driver version
16, // num entries
{
{ 0, 0, 0, 0 }, // 0
{ 0x80,0, 0, 0 }, // 1
{ 0, 0x80,0, 0 }, // 2
{ 0x80,0x80,0, 0 }, // 3
{ 0, 0, 0x80,0 }, // 4
{ 0x80,0, 0x80,0 }, // 5
{ 0, 0x80,0x80,0 }, // 6
{ 0x80,0x80,0x80,0 }, // 7
{ 0xC0,0xC0,0xC0,0 }, // 8
{ 0xFF,0, 0, 0 }, // 9
{ 0, 0xFF,0, 0 }, // 10
{ 0xFF,0xFF,0, 0 }, // 11
{ 0, 0, 0xFF,0 }, // 12
{ 0xFF,0, 0xFF,0 }, // 13
{ 0, 0xFF,0xFF,0 }, // 14
{ 0xFF,0xFF,0xFF,0 } // 15
}
};
VOID vTestBitmap(HWND hwnd, HDC hdcScreen, RECT* prcl)
{
HDC hdcClone;
HBITMAP hbm1Cat, hbm1Cat0, hbm4Lines, hbm4Lines0, hbm8Lines, hbm8Lines0;
HBITMAP hbm1BigCat, hbm1BigCat0, hbmClone, hbmDefault;
HDC hdc1Cat, hdc1Cat0, hdc4Lines, hdc4Lines0, hdc8Lines, hdc8Lines0;
HDC hdc1BigCat, hdc1BigCat0;
HBRUSH hbrushGreen, hbrDefault, hbrNull;
HBRUSH hbr1, hbr4, hbr8, hbrHatch, hbrOld;
HPEN hPen, hPenOld, hPenDefault;
ULONG ScreenWidth, ScreenHeight;
HPALETTE hpalVGA, hpalOld;
ULONG x,ulTemp;
LOGBRUSH logbrush;
LOGPEN logpen;
hwnd = hwnd;
prcl = prcl;
hpalVGA = CreatePalette((LOGPALETTE *) &logPalVGA);
if (hpalVGA == (HPALETTE) 0)
DbgPrint("ERROR in CreatePalette\n");
hpalOld = SelectPalette(hdcScreen, hpalVGA, 0);
if (hpalOld == (HPALETTE) 0)
DbgPrint("ERROR in CreatePalette1\n");
RealizePalette(hdcScreen);
hbrushGreen = CreateSolidBrush(RGB(0x00,0xff,0x00));
ScreenWidth = GetDeviceCaps(hdcScreen, HORZRES);
ScreenHeight = GetDeviceCaps(hdcScreen, VERTRES);
// We create 6 formats of bitmaps for testing. 2 of each. 1 backup
// so we can refresh after every draw. The ****0 is the backup.
hdc1BigCat = CreateCompatibleDC(hdcScreen);
hdc1BigCat0 = CreateCompatibleDC(hdcScreen);
hdc1Cat = CreateCompatibleDC(hdcScreen);
hdc1Cat0 = CreateCompatibleDC(hdcScreen);
hdc4Lines = CreateCompatibleDC(hdcScreen);
hdc4Lines0 = CreateCompatibleDC(hdcScreen);
hdc8Lines = CreateCompatibleDC(hdcScreen);
hdc8Lines0 = CreateCompatibleDC(hdcScreen);
hdcClone = CreateCompatibleDC(hdcScreen);
if ((hdc1Cat == 0) || (hdcClone == 0) || (hdcScreen == 0))
DbgPrint("ERROR hdc creation %lu %lu %lu \n", hdcScreen, hdc8Lines0, hdc1Cat);
// Clear the screen
BitBlt(hdcScreen, 0, 0, ScreenWidth, ScreenHeight, (HDC) 0, 0, 0, WHITENESS);
bmiPat.bmiHeader.biWidth = 32;
hbm1Cat = CreateDIBitmap((HDC) 0,
(BITMAPINFOHEADER *) &bmiPat,
CBM_INIT,
abBitCat,
(BITMAPINFO *) &bmiPat,
DIB_RGB_COLORS);
if (hbm1Cat == (HBITMAP) 0)
DbgPrint("Bitmap creation failed\n");
bmiPat.bmiHeader.biWidth = 128;
hbm1BigCat = CreateDIBitmap((HDC) 0,
(BITMAPINFOHEADER *) &bmiPat,
CBM_INIT,
abBigCat,
(BITMAPINFO *) &bmiPat,
DIB_RGB_COLORS);
if (hbm1BigCat == 0)
DbgPrint("hbm1BitCat failed\n");
hbm4Lines = CreateDIBitmap(hdcScreen,
(BITMAPINFOHEADER *) &bmiPat1,
CBM_INIT | CBM_CREATEDIB,
abColorLines,
(BITMAPINFO *) &bmiPat1,
DIB_RGB_COLORS);
if (hbm4Lines == 0)
DbgPrint("hbm4Lines failed\n");
hbm8Lines = CreateDIBitmap(hdcScreen,
(BITMAPINFOHEADER *) &bmiPat2,
CBM_INIT | CBM_CREATEDIB,
abColorLines2,
(BITMAPINFO *) &bmiPat2,
DIB_RGB_COLORS);
if (hbm8Lines == 0)
DbgPrint("hbm8Lines failed\n");
hbmDefault = SelectObject(hdc1Cat, hbm1Cat);
if (hbmDefault == (HBITMAP) 0)
DbgPrint("hbm Old is invalid\n");
if (hbmDefault != SelectObject(hdc1BigCat, hbm1BigCat))
DbgPrint("hbmDefault wrong1\n");
if (hbmDefault != SelectObject(hdc4Lines, hbm4Lines))
DbgPrint("hbmDefault wrong2\n");
if (hbmDefault != SelectObject(hdc8Lines, hbm8Lines))
DbgPrint("hbmDefault wrong3\n");
if(!BitBlt(hdcScreen, 0, 200, 32, 32, hdc1Cat, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 64, 200, 64, 64, hdc4Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 196, 200, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 0, 264, 128, 32, hdc1BigCat, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
// Ok let's throw in some CreateCompatible calls.
hbm1Cat0 = CreateCompatibleBitmap(hdc1Cat, 32, 32);
hbm1BigCat0 = CreateCompatibleBitmap(hdc1BigCat, 128, 32);
hbm4Lines0 = CreateCompatibleBitmap(hdc4Lines, 64, 64);
hbm8Lines0 = CreateCompatibleBitmap(hdc8Lines, 32, 32);
hbmClone = CreateCompatibleBitmap(hdc8Lines, 320, 320);
if (hbmDefault != SelectObject(hdc1Cat0, hbm1Cat0))
DbgPrint("hbmDefault wrong4\n");
if (hbmDefault != SelectObject(hdc1BigCat0, hbm1BigCat0))
DbgPrint("hbmDefault wrong5\n");
if (hbmDefault != SelectObject(hdc4Lines0, hbm4Lines0))
DbgPrint("hbmDefault wrong6\n");
if (hbmDefault != SelectObject(hdc8Lines0, hbm8Lines0))
DbgPrint("hbmDefault wrong7\n");
if (hbmDefault != SelectObject(hdcClone, hbmClone))
DbgPrint("hbmDefault wrong8\n");
hbrDefault = SelectObject(hdcClone, hbrushGreen);
SelectObject(hdcScreen, hbrushGreen);
if (hbrDefault == (HBRUSH) 0)
DbgPrint("ERROR: hbrDefault is invalid\n");
// Really it is blackness.
PatBlt(hdcClone, 0, 0, 320, 320, WHITENESS);
if(!BitBlt(hdc1Cat0, 0, 0, 32, 32, hdc1Cat, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc1BigCat0, 0, 0, 128, 32, hdc1BigCat, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc4Lines0, 0, 0, 64, 64, hdc4Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines0, 0, 0, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
BitBlt(hdcClone, 100,100, 64, 64, hdc4Lines, 0, 0, SRCCOPY);
PatBlt(hdcClone, 0, 0, 100, 100, PATCOPY);
// Ok real quick here let's test if CreateCompatible Bitmap does an
// identity blt to the screen.
if(!BitBlt(hdcScreen, 32, 200, 32, 32, hdc1Cat0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 128, 200, 64, 64, hdc4Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 228, 200, 32, 32, hdc8Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 128, 264, 128, 32, hdc1BigCat0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
BitBlt(hdcScreen, 0, 0, 300, 150, hdcClone, 0, 0, SRCCOPY);
hbr1 = CreatePatternBrush(hbm1Cat);
hbr4 = CreatePatternBrush(hbm4Lines);
hbr8 = CreatePatternBrush(hbm8Lines);
if ((hbr1 == (HBRUSH) NULL) ||
(hbr4 == (HBRUSH) NULL) ||
(hbr8 == (HBRUSH) NULL))
{
DbgPrint("ERROR hbr1 %lu hbr4 %lu hbr8 %lu \n", hbr1, hbr4, hbr8);
DbgBreakPoint();
}
// Test the VGA brushes.
// Test 1 BPP brush
hbrOld = SelectObject(hdcScreen, hbr1);
if (hbrOld != hbrushGreen)
DbgPrint("Error on select of hbr1 for VGA\n");
PatBlt(hdcScreen, 0, 300, 300, 150, PATCOPY);
// Test 4 BPP brush
hbrOld = SelectObject(hdcScreen, hbr4);
if (hbrOld != hbr1)
DbgPrint("Error on select of hbr4\n");
PatBlt(hdcScreen, 0, 150, 300, 150, PATCOPY);
// Test 8 BPP brush
hbrOld = SelectObject(hdcScreen, hbr8);
if (hbrOld != hbr4)
DbgPrint("Error on select of hbr8\n");
PatBlt(hdcScreen, 0, 0, 300, 150, PATCOPY);
// Now test the hatch brush, brush/pen selection, brush/pen deletion.
SelectObject(hdcScreen, hbrDefault);
for (x = 0; x < 6; x++)
{
// First test brush creation and selection.
hbrHatch = CreateHatchBrush(x, RGB(0xFF, 0, 0));
if (hbrHatch == (HBRUSH) NULL)
{
DbgPrint("ERROR hbrHatch loop %lu\n",x);
}
hbrOld = SelectObject(hdcScreen, hbrHatch);
if (hbrOld != hbrDefault)
DbgPrint("Error on select of hbrHatch in loop0\n");
hbrOld = SelectObject(hdcScreen, hbrHatch);
if (hbrOld != hbrHatch)
DbgPrint("Error on select of hbrHatch in loop1\n");
// Now do some brush output to a bitmap
PatBlt(hdcScreen, x * 32, x * 20, 50, 50, PATCOPY);
// Now delete the brush and pen, try to delete the defaults also.
hbrOld = SelectObject(hdcScreen, hbrDefault);
if (hbrOld != hbrHatch)
DbgPrint("Error on select of hbrDefault in loop11\n");
if (!DeleteObject(hbrHatch))
DbgPrint("Error in loop brush delete\n");
}
// End of Tests for VGA
// Test 1 BPP brush
PatBlt(hdcClone, 0, 0, 320, 320, WHITENESS);
hbrOld = SelectObject(hdcClone, hbr1);
if (hbrOld != hbrushGreen)
DbgPrint("Error on select of hbr1 for bitmap\n");
PatBlt(hdcClone, 0, 0, 300, 150, PATCOPY);
BitBlt(hdcScreen, 0, 0, 300, 150, hdcClone, 0, 0, SRCCOPY);
PatBlt(hdcClone, 0, 0, 320, 320, WHITENESS);
MaskBlt(hdcClone, 0,0,300,150, (HDC) 0, 0, 0, hbm1Cat, 0, 0,
0xAAF00000);
BitBlt(hdcScreen, 300, 0, 300, 150, hdcClone, 0, 0, SRCCOPY);
// Test 4 BPP brush
PatBlt(hdcClone, 0, 0, 320, 320, WHITENESS);
hbrOld = SelectObject(hdcClone, hbr4);
if (hbrOld != hbr1)
DbgPrint("Error on select of hbr4\n");
PatBlt(hdcClone, 0, 0, 300, 150, PATCOPY);
BitBlt(hdcScreen,0, 150, 300, 150, hdcClone, 0, 0, SRCCOPY);
PatBlt(hdcClone, 0, 0, 320, 320, WHITENESS);
MaskBlt(hdcClone, 0,0,300,150, (HDC) 0, 0, 0, hbm1Cat, 0, 0,
0xAAF00000);
BitBlt(hdcScreen, 300, 150, 300, 150, hdcClone, 0, 0, SRCCOPY);
// Test 8 BPP brush
PatBlt(hdcClone, 0, 0, 320, 320, WHITENESS);
hbrOld = SelectObject(hdcClone, hbr8);
if (hbrOld != hbr4)
DbgPrint("Error on select of hbr8\n");
PatBlt(hdcClone, 0, 0, 300, 150, PATCOPY);
BitBlt(hdcScreen, 0, 300, 300, 150, hdcClone, 0, 0, SRCCOPY);
PatBlt(hdcClone, 0, 0, 320, 320, WHITENESS);
MaskBlt(hdcClone, 0,0,300,150, (HDC) 0, 0, 0, hbm1Cat, 0, 0,
0xAAF00000);
BitBlt(hdcScreen, 300, 300, 300, 150, hdcClone, 0, 0, SRCCOPY);
// Now test the hatch brush, brush/pen selection, brush/pen deletion.
hPen = CreatePen(PS_NULL, 2, RGB(0, 0xFF, 0));
if (hPen == (HPEN) NULL)
{
DbgPrint("ERROR hpen creation\n");
}
hPenDefault = SelectObject(hdcClone, hPen);
hPenOld = SelectObject(hdcClone, hPenDefault);
if (hPenOld != hPen)
DbgPrint("Error on select of hpen in loop1\n");
if (!DeleteObject(hPen))
DbgPrint("Failed to delete the hPen 134\n");
SelectObject(hdcClone, hbrDefault);
for (x = 0; x < 6; x++)
{
// First test brush creation and selection.
hbrHatch = CreateHatchBrush(x, RGB(0xFF, 0, 0));
if (hbrHatch == (HBRUSH) NULL)
{
DbgPrint("ERROR hbrHatch loop %lu\n",x);
}
hbrOld = SelectObject(hdcClone, hbrHatch);
if (hbrOld != hbrDefault)
DbgPrint("Error on select of hbrHatch in loop0\n");
hbrOld = SelectObject(hdcClone, hbrHatch);
if (hbrOld != hbrHatch)
DbgPrint("Error on select of hbrHatch in loop1\n");
// Next test pen creation and selection.
hPen = CreatePen(PS_SOLID, 2, RGB(0, 0xFF, 0));
if (hPen == (HPEN) NULL)
{
DbgPrint("ERROR hpen loop %lu\n", x);
}
hPenOld = SelectObject(hdcClone, hPen);
if (hPenOld != hPenDefault)
DbgPrint("Error on select of hpen in loop0\n");
hPenOld = SelectObject(hdcClone, hPen);
if (hPenOld != hPen)
DbgPrint("Error on select of hpen in loop1\n");
// Make sure GetObject works.
logbrush.lbStyle = 0;
logbrush.lbColor = 0;
logbrush.lbHatch = 0;
logpen.lopnStyle = 0;
logpen.lopnWidth.x = 0;
logpen.lopnColor = 0;
if (sizeof(LOGBRUSH) != GetObject(hbrHatch, sizeof(LOGBRUSH), &logbrush))
DbgPrint("Error return GetObject brush");
if (logbrush.lbStyle != BS_HATCHED)
DbgPrint("ERROR hatched !\n");
if (logbrush.lbColor != RGB(0xFF, 0, 0))
DbgPrint("ERROR color brush\n");
if (logbrush.lbHatch != x)
DbgPrint("ERROR color brush\n");
ulTemp = GetObject(hPen, sizeof(LOGPEN), &logpen);
if (sizeof(LOGPEN) != ulTemp)
DbgPrint("Error GetObject Pen failed %lu %lu \n", ulTemp, sizeof(LOGPEN));
if (logpen.lopnStyle != PS_SOLID)
DbgPrint("ERROR pen styleadsfd\n");
if (logpen.lopnWidth.x != 2)
DbgPrint("ERROR pen width\n");
if (logpen.lopnColor != RGB(0, 0xFF, 0))
DbgPrint("ERROR wrong pen color\n");
// Now do some brush output to a bitmap
PatBlt(hdcClone, 0, 0, 50, 50, PATCOPY);
BitBlt(hdcScreen, x * 32, x*20, 50, 50, hdcClone, 0, 0, SRCCOPY);
// Now delete the brush and pen, try to delete the defaults also.
hbrOld = SelectObject(hdcClone, hbrDefault);
if (hbrOld != hbrHatch)
DbgPrint("Error on select of hbrDefault in loop11\n");
hPenOld = SelectObject(hdcClone, hPenDefault);
if (hPenOld != hPen)
DbgPrint("Error on select of hpen in loop11\n");
if (!DeleteObject(hbrHatch))
DbgPrint("Error in loop brush delete\n");
if (!DeleteObject(hbrDefault))
DbgPrint("Error in loop brush delete default\n");
if (!DeleteObject(hPen))
DbgPrint("Error in loop pen delete\n");
if (!DeleteObject(hPenDefault))
DbgPrint("Error in loop pen delete default\n");
}
hbrNull = GetStockObject(HOLLOW_BRUSH);
if (hbrNull == (HBRUSH) 0)
DbgPrint("hbrNull is 0\n");
logbrush.lbStyle = BS_HOLLOW;
SelectObject(hdcScreen, hbrNull);
#if 0
// This is what I really want but for now batching always returns TRUE.
if (FALSE != PatBlt(hdcScreen, 0, 0, 100, 100, PATCOPY))
DbgPrint("Failed to not fail on Null brush\n");
#endif
PatBlt(hdcScreen, 0, 0, 400, 400, PATCOPY);
// test for valid brushes.
if (((HBRUSH) 0) == GetStockObject(BLACK_BRUSH))
DbgPrint("ERROR GetStockObject brush/pen 1\n");
SelectObject(hdcScreen, GetStockObject(BLACK_BRUSH));
PatBlt(hdcScreen, 200, 0, 32, 32, PATCOPY);
if (((HBRUSH) 0) == GetStockObject(GRAY_BRUSH))
DbgPrint("ERROR GetStockObject brush/pen 3\n");
if (GetStockObject(BLACK_BRUSH) != SelectObject(hdcScreen, GetStockObject(GRAY_BRUSH)))
DbgPrint("Select on Stock object failed\n");
PatBlt(hdcScreen, 232, 0, 32, 32, PATCOPY);
if (((HBRUSH) 0) == GetStockObject(LTGRAY_BRUSH))
DbgPrint("ERROR GetStockObject brush/pen 4\n");
if (GetStockObject(GRAY_BRUSH) != SelectObject(hdcScreen, GetStockObject(LTGRAY_BRUSH)))
DbgPrint("Select on Stock object failed\n");
PatBlt(hdcScreen, 264, 0, 32, 32, PATCOPY);
if (((HBRUSH) 0) == GetStockObject(WHITE_BRUSH))
DbgPrint("ERROR GetStockObject brush/pen 2\n");
if (GetStockObject(LTGRAY_BRUSH) != SelectObject(hdcScreen, GetStockObject(WHITE_BRUSH)))
DbgPrint("Select on Stock object failed\n");
PatBlt(hdcScreen, 296, 0, 32, 32, PATCOPY);
if (((HBRUSH) 0) == GetStockObject(HOLLOW_BRUSH))
DbgPrint("ERROR GetStockObject brush/pen 5\n");
if (((HBRUSH) 0) == GetStockObject(NULL_BRUSH))
DbgPrint("ERROR GetStockObject brush/pen 6\n");
// test for valid pens
if (((HBRUSH) 0) == GetStockObject(BLACK_PEN))
DbgPrint("ERROR GetStockObject brush/pen 7\n");
if (((HBRUSH) 0) == GetStockObject(WHITE_PEN))
DbgPrint("ERROR GetStockObject brush/pen 8\n");
if (((HBRUSH) 0) == GetStockObject(NULL_PEN))
DbgPrint("ERROR GetStockObject brush/pen 9\n");
/*
DbgPrint("These are the handles %lu %lu %lu\n",
GetStockObject(BLACK_PEN),
GetStockObject(WHITE_PEN),
GetStockObject(NULL_PEN));
*/
SelectObject(hdcScreen, GetStockObject(BLACK_PEN));
hPenOld = SelectObject(hdcScreen, GetStockObject(WHITE_PEN));
if (GetStockObject(BLACK_PEN) != hPenOld)
DbgPrint("ERROR of select white pen %lu %lu\n",
hPenOld, GetStockObject(BLACK_PEN));
hPenOld = SelectObject(hdcScreen, GetStockObject(NULL_PEN));
if (GetStockObject(WHITE_PEN) != hPenOld)
DbgPrint("ERROR of select NULL pen %lu %lu\n",
hPenOld, GetStockObject(NULL_PEN));
/*************************************************************************
Test Solid Brush Output to 8
**************************************************************************/
SelectObject(hdcScreen, hbrushGreen);
SelectObject(hdc8Lines, hbrushGreen);
PatBlt(hdcScreen, 0, 300, 100, 99, PATCOPY);
PatBlt(hdc8Lines, 0, 0, 9, 8, PATCOPY);
if(!BitBlt(hdcScreen, 0, 320, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
PatBlt(hdc8Lines, 0, 8, 4, 8, PATCOPY);
if(!BitBlt(hdcScreen, 32, 320, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
PatBlt(hdc8Lines, 1, 16, 2, 8, PATCOPY);
if(!BitBlt(hdcScreen, 64, 320, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
PatBlt(hdc8Lines, 2, 24, 4, 8, PATCOPY);
if(!BitBlt(hdcScreen, 96, 320, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 0, 32, 32, hdc8Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 128, 320, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
/*************************************************************************
Test Solid Brush Output to 8 generally
**************************************************************************/
PatBlt(hdc8Lines, 0, 0, 9, 8, 0x00020000);
if(!BitBlt(hdcScreen, 0, 352, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
PatBlt(hdc8Lines, 0, 8, 4, 8, 0x00020000);
if(!BitBlt(hdcScreen, 32, 352, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
PatBlt(hdc8Lines, 1, 16, 2, 8, 0x00020000);
if(!BitBlt(hdcScreen, 64, 352, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
PatBlt(hdc8Lines, 2, 24, 4, 8, 0x00020000);
if(!BitBlt(hdcScreen, 96, 352, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 0, 32, 32, hdc8Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 128, 352, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
/*********************************************************************
8 on 8 tests
***********************************************************************/
if(!BitBlt(hdc8Lines, 8, 16, 8, 8, hdc8Lines0, 16, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 0, 256, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 24, 24, 8, 8, hdc8Lines, 16, 16, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 32, 256, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 24, 8, 8, hdc8Lines, 16, 16, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 64, 256, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 24, 0, 8, 8, hdc8Lines, 16, 16, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 96, 256, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 0, 8, 8, hdc8Lines, 16, 16, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 16, 16, 8, 8, hdc8Lines, 16, 16, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 128, 256, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 0, 32, 32, hdc8Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 160, 256, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
/*********************************************************************
8 on 8 generally
***********************************************************************/
if(!BitBlt(hdc8Lines, 8, 16, 8, 8, hdc8Lines0, 16, 0, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 0, 288, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 24, 24, 8, 8, hdc8Lines, 16, 16, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 32, 288, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 24, 8, 8, hdc8Lines, 16, 16, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 64, 288, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 24, 0, 8, 8, hdc8Lines, 16, 16, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 96, 288, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 0, 8, 8, hdc8Lines, 16, 16, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 16, 16, 8, 8, hdc8Lines, 16, 16, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 128, 288, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 0, 32, 32, hdc8Lines0, 0, 0, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 160, 288, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
/************************************************************************
Test 1 to 8 blting
*************************************************************************/
if(!BitBlt(hdc8Lines, 4,4, 16, 16, hdc1Cat, 4, 4, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 0, 0, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 4, 4, 17, 17, hdc1Cat, 4, 4, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 32, 0, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 3, 3, 25, 25, hdc1Cat, 3, 3, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 64, 0, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 3, 3, 26, 26, hdc1Cat, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 96, 0, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 0, 32, 32, hdc8Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 128, 0, 32, 32, hdc8Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
/************************************************************************
Test 1 to 8 blting generally
*************************************************************************/
if(!BitBlt(hdc8Lines, 4,4, 16, 16, hdc1Cat, 4, 4, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 0, 32, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 4, 4, 17, 17, hdc1Cat, 4, 4, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 32, 32, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 3, 3, 25, 25, hdc1Cat, 3, 3, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 64, 32, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 3, 3, 26, 26, hdc1Cat, 0, 0, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 96, 32, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 0, 32, 32, hdc8Lines0, 0, 0, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 128, 32, 32, 32, hdc8Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
/*************************************************************************
Test 4 to 8 blting
**************************************************************************/
if(!BitBlt(hdc8Lines, 4,4, 16, 16, hdc4Lines, 4, 4, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 0, 288, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 4, 4, 17, 17, hdc4Lines, 4, 4, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 32, 288, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 3, 3, 25, 25, hdc4Lines, 3, 3, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 64, 288, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 3, 3, 26, 26, hdc4Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 96, 288, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 0, 32, 32, hdc8Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 128, 288, 32, 32, hdc8Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
/*************************************************************************
Test 4 to 8 blting generally.
**************************************************************************/
if(!BitBlt(hdc8Lines, 4,4, 16, 16, hdc4Lines, 4, 4, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 0, 320, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 4, 4, 17, 17, hdc4Lines, 4, 4, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 32, 320, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 3, 3, 25, 25, hdc4Lines, 3, 3, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 64, 320, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 3, 3, 26, 26, hdc4Lines, 0, 0, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 96, 320, 32, 32, hdc8Lines, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdc8Lines, 0, 0, 32, 32, hdc8Lines0, 0, 0, 0x00010000))
DbgPrint("ERROR: BitBlt returned FALSE\n");
if(!BitBlt(hdcScreen, 128, 320, 32, 32, hdc8Lines0, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
/*********************************************************************
MaskBlt solid brush on 8 tests
***********************************************************************/
PatBlt(hdcClone, 0, 0, 320, 320, WHITENESS);
MaskBlt(hdcClone, 32, 32, 32, 32, hdc8Lines, 0, 0, hbm1Cat, 0, 0,
0xAACC0000);
BitBlt(hdcScreen, 0, 0, 66, 66, hdcClone, 0, 0, SRCCOPY);
if(!BitBlt(hdcScreen, 0, 400, 32, 32, hdc1Cat, 0, 0, SRCCOPY))
DbgPrint("ERROR: BitBlt returned FALSE\n");
// Clean up time, delete it all.
if (SelectPalette(hdcScreen, hpalOld, 0) != hpalVGA)
DbgPrint("hpalVGA not given back\n");
if (!DeleteObject(hpalVGA))
DbgPrint("failed to delete hpalVGA\n");
if (hbmClone != SelectObject(hdcClone, hbmDefault))
DbgPrint("Cleanup hbm 1 wrong\n");
if (hbm1Cat != SelectObject(hdc1Cat, hbmDefault))
DbgPrint("Cleanup hbm 2 wrong\n");
if (hbm1Cat0 != SelectObject(hdc1Cat0, hbmDefault))
DbgPrint("Cleanup hbm 3 wrong\n");
if (hbm4Lines != SelectObject(hdc4Lines, hbmDefault))
DbgPrint("Cleanup hbm 4 wrong\n");
if (hbm4Lines0 != SelectObject(hdc4Lines0, hbmDefault))
DbgPrint("Cleanup hbm 5 wrong\n");
if (hbm8Lines != SelectObject(hdc8Lines, hbmDefault))
DbgPrint("Cleanup hbm 6 wrong\n");
if (hbm8Lines0 != SelectObject(hdc8Lines0, hbmDefault))
DbgPrint("Cleanup hbm 7 wrong\n");
if (hbm1BigCat != SelectObject(hdc1BigCat, hbmDefault))
DbgPrint("Cleanup hbm 8 wrong\n");
if (hbm1BigCat0 != SelectObject(hdc1BigCat0, hbmDefault))
DbgPrint("Cleanup hbm 9 wrong\n");
SelectObject(hdc1Cat,hbrDefault);
SelectObject(hdc1Cat0,hbrDefault);
SelectObject(hdc4Lines,hbrDefault);
SelectObject(hdc4Lines0,hbrDefault);
SelectObject(hdc8Lines,hbrDefault);
SelectObject(hdc8Lines0,hbrDefault);
SelectObject(hdc1BigCat,hbrDefault);
SelectObject(hdc1BigCat0,hbrDefault);
SelectObject(hdcClone,hbrDefault);
SelectObject(hdcScreen,hbrDefault);
// Delete DC's
if (!DeleteDC(hdc1BigCat))
DbgPrint("Failed to delete hdc 1\n");
if (!DeleteDC(hdc1BigCat0))
DbgPrint("Failed to delete hdc 2\n");
if (!DeleteDC(hdc1Cat))
DbgPrint("Failed to delete hdc 3\n");
if (!DeleteDC(hdc1Cat0))
DbgPrint("Failed to delete hdc 4\n");
if (!DeleteDC(hdc4Lines))
DbgPrint("Failed to delete hdc 5\n");
if (!DeleteDC(hdc4Lines0))
DbgPrint("Failed to delete hdc 6\n");
if (!DeleteDC(hdc8Lines))
DbgPrint("Failed to delete hdc 7\n");
if (!DeleteDC(hdc8Lines0))
DbgPrint("Failed to delete hdc 8\n");
if (!DeleteDC(hdcClone))
DbgPrint("Failed to delete hdc 9\n");
// Delete Bitmaps
if (!DeleteObject(hbm1Cat))
DbgPrint("ERROR failed to delete 1\n");
if (!DeleteObject(hbm1Cat0))
DbgPrint("ERROR failed to delete 2\n");
if (!DeleteObject(hbm4Lines))
DbgPrint("ERROR failed to delete 3\n");
if (!DeleteObject(hbm4Lines0))
DbgPrint("ERROR failed to delete 4\n");
if (!DeleteObject(hbm8Lines))
DbgPrint("ERROR failed to delete 5\n");
if (!DeleteObject(hbm8Lines0))
DbgPrint("ERROR failed to delete 6\n");
if (!DeleteObject(hbm1BigCat))
DbgPrint("ERROR failed to delete 7\n");
if (!DeleteObject(hbm1BigCat0))
DbgPrint("ERROR failed to delete 8\n");
if (!DeleteObject(hbmClone))
DbgPrint("ERROR failed to delete 9\n");
if (!DeleteObject(hbmDefault))
DbgPrint("ERROR deleted default bitmap\n");
// Delete the brushes
if (!DeleteObject(hbr1))
DbgPrint("failed to delete pattern brush 1\n");
if (!DeleteObject(hbr4))
DbgPrint("failed to delete pattern brush 2\n");
if (!DeleteObject(hbr8))
DbgPrint("failed to delete pattern brush 3\n");
if (!DeleteObject(hbrushGreen))
DbgPrint("failed to delete pattern brush 4\n");
}