mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 08:55:19 +00:00
[GDI32_APITEST]
- Add more tests for CreateDIBitmap and SetDIBitsToDevice svn path=/trunk/; revision=60787
This commit is contained in:
parent
39b0f9dba1
commit
5b8f6f48da
2 changed files with 333 additions and 66 deletions
|
@ -65,7 +65,7 @@ GetExpected(
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
if ((fdwInit & CBM_INIT))
|
||||
if (fdwInit & CBM_INIT)
|
||||
{
|
||||
if (!lpbInit || (lpbInit == (PVOID)0xC0000000)) return FALSE;
|
||||
}
|
||||
|
@ -74,27 +74,27 @@ GetExpected(
|
|||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ((lpbmih == NULL) ||
|
||||
(lpbmih == (PVOID)0xC0000000) ||
|
||||
(lpbmih->biSize == 0))
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
|
||||
if ((lpbmih == NULL) ||
|
||||
(lpbmih == (PVOID)0xC0000000) ||
|
||||
(lpbmih->biSize == 0))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (hdc == (HDC)-1)
|
||||
{
|
||||
*pdwError = ERROR_INVALID_PARAMETER;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
if (lpbmi == (PVOID)0xc0000000) return FALSE;
|
||||
}
|
||||
|
||||
if (hdc == (HDC)-1)
|
||||
{
|
||||
*pdwError = ERROR_INVALID_PARAMETER;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
if (lpbmi == (PVOID)0xc0000000) return FALSE;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -400,7 +400,7 @@ void Test_CreateDIBitmap_RLE8()
|
|||
|
||||
PackedDIB.bmiHeader.biSizeImage = 0;
|
||||
hbmp = CreateDIBitmap(hdc, &PackedDIB.bmiHeader, CBM_INIT, &PackedDIB.ajBuffer, (PVOID)&PackedDIB, DIB_PAL_COLORS);
|
||||
ok(hbmp == 0, "CreateDIBitmap succeeded, expeted failure\n");
|
||||
ok(hbmp == 0, "CreateDIBitmap succeeded, expected failure\n");
|
||||
ok_err(0xbadbad00);
|
||||
|
||||
/* Test a line that is too long */
|
||||
|
@ -420,14 +420,33 @@ Test_CreateDIBitmap_CBM_CREATDIB(void)
|
|||
HBITMAP hbmp, hbmpOld;
|
||||
HDC hdc;
|
||||
BITMAPINFO bmi =
|
||||
{{sizeof(BITMAPINFOHEADER), 4, 4, 1, 8, BI_RGB, 0, 1, 1, 1, 0}, {{0,0,0,0}}};
|
||||
BYTE ajBits[10];
|
||||
{{sizeof(BITMAPINFOHEADER), 4, 4, 1, 8, BI_RGB, 0, 1, 1, 1, 0}, {{0,1,2,3}}};
|
||||
BYTE ajBits[10] = {0,1,2,3,4,5,6,7,8,9};
|
||||
BITMAP bitmap;
|
||||
struct
|
||||
{
|
||||
BITMAPINFOHEADER bmiHeader;
|
||||
WORD wColors[4];
|
||||
} bmiRLE =
|
||||
{
|
||||
{sizeof(BITMAPINFOHEADER), 8, 2, 1, 8, BI_RLE8, 20, 1, 1, 4, 0},
|
||||
{0, 1, 2, 7}
|
||||
};
|
||||
BYTE ajBitsRLE[] = {4,0, 0,2,0,1,0,2,3,1, 2,1, 2,2, 1,3,1,0,1,2, };
|
||||
|
||||
hdc = CreateCompatibleDC(0);
|
||||
ok(hdc != 0, "failed\n");
|
||||
if (hdc == NULL)
|
||||
{
|
||||
ok(0, "CreateCompatibleDC failed. Skipping tests!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
hbmp = CreateDIBitmap(hdc, &bmi.bmiHeader, CBM_CREATDIB, ajBits, &bmi, DIB_PAL_COLORS);
|
||||
SetLastError(0xbadbad00);
|
||||
hbmp = CreateDIBitmap(hdc, NULL, CBM_CREATDIB, ajBits, NULL, DIB_RGB_COLORS);
|
||||
ok(hbmp == 0, "CreateDIBitmap should fail.\n");
|
||||
ok_int(GetLastError(), 0xbadbad00);
|
||||
|
||||
hbmp = CreateDIBitmap(hdc, NULL, CBM_CREATDIB, ajBits, &bmi, DIB_RGB_COLORS);
|
||||
ok(hbmp != 0, "CreateDIBitmap failed.\n");
|
||||
|
||||
ok_long(GetObject(hbmp, sizeof(DIBSECTION), &bitmap), sizeof(BITMAP));
|
||||
|
@ -441,8 +460,72 @@ Test_CreateDIBitmap_CBM_CREATDIB(void)
|
|||
|
||||
hbmpOld = SelectObject(hdc, hbmp);
|
||||
ok(hbmpOld != NULL, "Couldn't select the bitmap.\n");
|
||||
|
||||
/* Copy it on a dib section */
|
||||
memset(pulDIB32Bits, 0x77, 64);
|
||||
ok_long(BitBlt(ghdcDIB32, 0, 0, 4, 4, hdc, 0, 0, SRCCOPY), 1);
|
||||
ok_long(pulDIB32Bits[0], 0x20100);
|
||||
ok_long(pulDIB32Bits[1], 0x20100);
|
||||
ok_long(pulDIB32Bits[2], 0x20100);
|
||||
ok_long(pulDIB32Bits[3], 0x20100);
|
||||
|
||||
SelectObject(hdc, hbmpOld);
|
||||
DeleteObject(hbmp);
|
||||
|
||||
hbmp = CreateDIBitmap(hdc, NULL, CBM_CREATDIB | CBM_INIT, ajBits, &bmi, DIB_PAL_COLORS);
|
||||
ok(hbmp != 0, "CreateDIBitmap failed.\n");
|
||||
|
||||
ok_long(GetObject(hbmp, sizeof(DIBSECTION), &bitmap), sizeof(BITMAP));
|
||||
ok_int(bitmap.bmType, 0);
|
||||
ok_int(bitmap.bmWidth, 4);
|
||||
ok_int(bitmap.bmHeight, 4);
|
||||
ok_int(bitmap.bmWidthBytes, 4);
|
||||
ok_int(bitmap.bmPlanes, 1);
|
||||
ok_int(bitmap.bmBitsPixel, 8);
|
||||
ok_ptr(bitmap.bmBits, 0);
|
||||
|
||||
/* Even with CBM_INIT and lpbmih != 0, pbmi is used for the dimensions */
|
||||
hbmp = CreateDIBitmap(hdc, &bmiRLE.bmiHeader, CBM_CREATDIB | CBM_INIT, ajBits, &bmi, DIB_PAL_COLORS);
|
||||
ok(hbmp != 0, "CreateDIBitmap failed.\n");
|
||||
|
||||
ok_long(GetObject(hbmp, sizeof(DIBSECTION), &bitmap), sizeof(BITMAP));
|
||||
ok_int(bitmap.bmType, 0);
|
||||
ok_int(bitmap.bmWidth, 4);
|
||||
ok_int(bitmap.bmHeight, 4);
|
||||
ok_int(bitmap.bmWidthBytes, 4);
|
||||
ok_int(bitmap.bmPlanes, 1);
|
||||
ok_int(bitmap.bmBitsPixel, 8);
|
||||
ok_ptr(bitmap.bmBits, 0);
|
||||
|
||||
hbmpOld = SelectObject(hdc, hbmp);
|
||||
ok(hbmpOld != NULL, "Couldn't select the bitmap.\n");
|
||||
|
||||
/* Copy it on a dib section */
|
||||
memset(pulDIB32Bits, 0x77, 64);
|
||||
ok_long(BitBlt(ghdcDIB32, 0, 0, 4, 4, hdc, 0, 0, SRCCOPY), 1);
|
||||
ok_long(pulDIB32Bits[0], 0);
|
||||
ok_long(pulDIB32Bits[1], 0);
|
||||
ok_long(pulDIB32Bits[2], 0);
|
||||
ok_long(pulDIB32Bits[3], 0);
|
||||
|
||||
SelectObject(hdc, hbmpOld);
|
||||
DeleteObject(hbmp);
|
||||
|
||||
hbmp = CreateDIBitmap(hdc, NULL, CBM_CREATDIB, ajBitsRLE, (PVOID)&bmiRLE, DIB_PAL_COLORS);
|
||||
ok(hbmp == 0, "CreateDIBitmap should fail.\n");
|
||||
hbmp = CreateDIBitmap(hdc, NULL, CBM_INIT | CBM_CREATDIB, ajBitsRLE, (PVOID)&bmiRLE, DIB_PAL_COLORS);
|
||||
ok(hbmp == 0, "CreateDIBitmap should fail.\n");
|
||||
|
||||
/* Check if a 0 pixel bitmap results in the DEFAULT_BITMAP being returned */
|
||||
bmi.bmiHeader.biWidth = 0;
|
||||
bmi.bmiHeader.biHeight = 4;
|
||||
hbmp = CreateDIBitmap(hdc, &bmi.bmiHeader, CBM_CREATDIB, ajBits, &bmi, DIB_PAL_COLORS);
|
||||
ok(hbmp == GetStockObject(21), "CreateDIBitmap didn't return the default bitmap.\n");
|
||||
bmi.bmiHeader.biWidth = 23;
|
||||
bmi.bmiHeader.biHeight = 0;
|
||||
hbmp = CreateDIBitmap(hdc, &bmi.bmiHeader, CBM_CREATDIB, ajBits, &bmi, DIB_PAL_COLORS);
|
||||
ok(hbmp == GetStockObject(21), "CreateDIBitmap didn't return the default bitmap.\n");
|
||||
|
||||
DeleteDC(hdc);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Test_SetDIBitsToDevice_Params()
|
|||
/* Setup the bitmap info */
|
||||
pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
pbmi->bmiHeader.biWidth = 2;
|
||||
pbmi->bmiHeader.biHeight = -2;
|
||||
pbmi->bmiHeader.biHeight = -4;
|
||||
pbmi->bmiHeader.biPlanes = 1;
|
||||
pbmi->bmiHeader.biBitCount = 32;
|
||||
pbmi->bmiHeader.biCompression = BI_RGB;
|
||||
|
@ -31,6 +31,7 @@ Test_SetDIBitsToDevice_Params()
|
|||
pbmi->bmiHeader.biClrUsed = 0;
|
||||
pbmi->bmiHeader.biClrImportant = 0;
|
||||
|
||||
/* Test a normal operation */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
|
@ -47,6 +48,41 @@ Test_SetDIBitsToDevice_Params()
|
|||
ok_dec(ret, 2);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test hdc == NULL */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(NULL,
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
0, // uStartScan,
|
||||
2, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 0);
|
||||
ok_err(ERROR_INVALID_HANDLE);
|
||||
|
||||
/* Test truncated hdc */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice((HDC)((ULONG_PTR)ghdcDIB32 & 0xFFFF),
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
0, // uStartScan,
|
||||
2, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 0);
|
||||
ok_err(ERROR_INVALID_HANDLE);
|
||||
|
||||
/* Test invalid ColorUse */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
|
@ -57,9 +93,9 @@ Test_SetDIBitsToDevice_Params()
|
|||
0, // YSrc,
|
||||
0, // uStartScan,
|
||||
2, // cScanLines,
|
||||
NULL, // lpvBits,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
7);
|
||||
ok_dec(ret, 0);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
|
@ -90,11 +126,11 @@ Test_SetDIBitsToDevice_Params()
|
|||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
0, // uStartScan,
|
||||
2000000, // cScanLines,
|
||||
20000000, // cScanLines,
|
||||
(BYTE*)aulBits + 1, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 0);
|
||||
todo_ros ok_dec(ret, 0);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* test unaligned illegal buffer */
|
||||
|
@ -111,9 +147,10 @@ Test_SetDIBitsToDevice_Params()
|
|||
(BYTE*)0x7fffffff, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 0);
|
||||
todo_ros ok_dec(ret, 0);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test negative XDest */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
-100, // XDest,
|
||||
|
@ -130,6 +167,7 @@ Test_SetDIBitsToDevice_Params()
|
|||
ok_dec(ret, 2);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test huge XDest */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
LONG_MAX, // XDest,
|
||||
|
@ -146,6 +184,7 @@ Test_SetDIBitsToDevice_Params()
|
|||
ok_dec(ret, 2);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test XSrc outside of the DIB */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
|
@ -162,6 +201,7 @@ Test_SetDIBitsToDevice_Params()
|
|||
ok_dec(ret, 2);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test YSrc outside of the DIB */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
|
@ -178,6 +218,7 @@ Test_SetDIBitsToDevice_Params()
|
|||
ok_dec(ret, 2);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test uStartScan outside of the DIB */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
|
@ -186,14 +227,15 @@ Test_SetDIBitsToDevice_Params()
|
|||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
0, // uStartScan,
|
||||
66, // cScanLines,
|
||||
100, // uStartScan,
|
||||
5, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 66);
|
||||
ok_dec(ret, 5);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test cScanLines larger than the DIB */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
|
@ -203,29 +245,64 @@ Test_SetDIBitsToDevice_Params()
|
|||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
0, // uStartScan,
|
||||
200, // cScanLines,
|
||||
7, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
todo_ros ok_dec(ret, 7);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test large cScanlines */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
0, // uStartScan,
|
||||
2000, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
todo_ros ok_dec(ret, 0);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test uStartScan and cScanLines larger than the DIB */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
100, // uStartScan,
|
||||
7, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 7);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test lpvBits == NULL */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
0, // uStartScan,
|
||||
2, // cScanLines,
|
||||
NULL, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 0);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
2000, // uStartScan,
|
||||
66, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 66);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test pbmi == NULL */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
|
@ -243,7 +320,114 @@ Test_SetDIBitsToDevice_Params()
|
|||
ok_dec(ret, 0);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test illegal bitmap info */
|
||||
/* Test huge positive DIB height, result is limited to dwHeight */
|
||||
pbmi->bmiHeader.biHeight = 10000;
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
1, // YDest,
|
||||
2, // dwWidth,
|
||||
3, // dwHeight,
|
||||
0, // XSrc,
|
||||
1, // YSrc,
|
||||
0, // uStartScan,
|
||||
7, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 4);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test huge negative DIB height */
|
||||
pbmi->bmiHeader.biHeight = -10000;
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
0, // uStartScan,
|
||||
7, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 7);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test what happens when we cause an integer overflow */
|
||||
pbmi->bmiHeader.biHeight = LONG_MIN;
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
0, // uStartScan,
|
||||
2, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 2);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Now also test a huge value of uStartScan */
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
abs(pbmi->bmiHeader.biHeight) - 3, // uStartScan,
|
||||
9, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 3);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Now also test a huge value of uStartScan */
|
||||
pbmi->bmiHeader.biHeight = LONG_MIN + 1;
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
abs(pbmi->bmiHeader.biHeight) - 3, // uStartScan,
|
||||
9, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 5);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Now also test a huge value of uStartScan */
|
||||
pbmi->bmiHeader.biHeight = LONG_MIN + 7;
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
0, // XDest,
|
||||
0, // YDest,
|
||||
2, // dwWidth,
|
||||
2, // dwHeight,
|
||||
0, // XSrc,
|
||||
0, // YSrc,
|
||||
abs(pbmi->bmiHeader.biHeight) - 3, // uStartScan,
|
||||
32, // cScanLines,
|
||||
aulBits, // lpvBits,
|
||||
pbmi,
|
||||
DIB_RGB_COLORS);
|
||||
ok_dec(ret, 17);
|
||||
ok_err(0xdeadc0de);
|
||||
|
||||
/* Test invalid bitmap info header */
|
||||
pbmi->bmiHeader.biSize = 0;
|
||||
SetLastError(0xdeadc0de);
|
||||
ret = SetDIBitsToDevice(ghdcDIB32,
|
||||
|
@ -359,12 +543,12 @@ Test_SetDIBitsToDevice()
|
|||
DIB_RGB_COLORS);
|
||||
|
||||
ok_dec(ret, 1);
|
||||
ok_hex(pulDIB32Bits[0], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[1], 0x00000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[0], 0x00000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[1], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[2], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[3], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[4], 0x11000000);
|
||||
ok_hex(pulDIB32Bits[5], 0x00000011);
|
||||
todo_ros ok_hex(pulDIB32Bits[4], 0x11000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[5], 0x00000011);
|
||||
ok_hex(pulDIB32Bits[6], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[7], 0x00000000);
|
||||
|
||||
|
@ -384,12 +568,12 @@ Test_SetDIBitsToDevice()
|
|||
DIB_RGB_COLORS);
|
||||
|
||||
ok_dec(ret, 1);
|
||||
ok_hex(pulDIB32Bits[0], 0x11000000);
|
||||
ok_hex(pulDIB32Bits[1], 0x00000011);
|
||||
todo_ros ok_hex(pulDIB32Bits[0], 0x11000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[1], 0x00000011);
|
||||
ok_hex(pulDIB32Bits[2], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[3], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[4], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[5], 0x00000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[4], 0x00000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[5], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[6], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[7], 0x00000000);
|
||||
|
||||
|
@ -465,12 +649,12 @@ Test_SetDIBitsToDevice()
|
|||
DIB_RGB_COLORS);
|
||||
|
||||
ok_dec(ret, 1);
|
||||
ok_hex(pulDIB32Bits[0], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[1], 0x00000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[0], 0x00000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[1], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[2], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[3], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[4], 0x11000000);
|
||||
ok_hex(pulDIB32Bits[5], 0x00000011);
|
||||
todo_ros ok_hex(pulDIB32Bits[4], 0x11000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[5], 0x00000011);
|
||||
ok_hex(pulDIB32Bits[6], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[7], 0x00000000);
|
||||
|
||||
|
@ -490,12 +674,12 @@ Test_SetDIBitsToDevice()
|
|||
DIB_RGB_COLORS);
|
||||
|
||||
ok_dec(ret, 1);
|
||||
ok_hex(pulDIB32Bits[0], 0x11000000);
|
||||
ok_hex(pulDIB32Bits[1], 0x00000011);
|
||||
todo_ros ok_hex(pulDIB32Bits[0], 0x11000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[1], 0x00000011);
|
||||
ok_hex(pulDIB32Bits[2], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[3], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[4], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[5], 0x00000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[4], 0x00000000);
|
||||
todo_ros ok_hex(pulDIB32Bits[5], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[6], 0x00000000);
|
||||
ok_hex(pulDIB32Bits[7], 0x00000000);
|
||||
|
||||
|
|
Loading…
Reference in a new issue