gdi32: Overlapping rectangles are not allowed in GdiAlphaBlend.
This commit is contained in:
parent
6fd9d77426
commit
b7a15ae7fa
|
@ -774,6 +774,14 @@ BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heig
|
|||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
ret = FALSE;
|
||||
}
|
||||
else if (dcSrc == dcDst && src.x + src.width > dst.x && src.x < dst.x + dst.width &&
|
||||
src.y + src.height > dst.y && src.y < dst.y + dst.height)
|
||||
{
|
||||
WARN( "Overlapping coords: (%d,%d), %dx%d and (%d,%d), %dx%d\n",
|
||||
src.x, src.y, src.width, src.height, dst.x, dst.y, dst.width, dst.height );
|
||||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
ret = FALSE;
|
||||
}
|
||||
else if (!ret) ret = dst_dev->funcs->pAlphaBlend( dst_dev, &dst, src_dev, &src, blendFunction );
|
||||
|
||||
release_dc_ptr( dcDst );
|
||||
|
|
|
@ -3279,6 +3279,25 @@ static void test_GdiAlphaBlend(void)
|
|||
ok( !ret, "GdiAlphaBlend succeeded\n" );
|
||||
ok( GetLastError() == 0xdeadbeef, "wrong error %u\n", GetLastError() );
|
||||
|
||||
/* overlapping source and dest not allowed */
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcDst, 19, 19, 20, 20, blend);
|
||||
ok( !ret, "GdiAlphaBlend succeeded\n" );
|
||||
ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() );
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pGdiAlphaBlend(hdcDst, 20, 20, 20, 20, hdcDst, 1, 1, 20, 20, blend);
|
||||
ok( !ret, "GdiAlphaBlend succeeded\n" );
|
||||
ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() );
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcDst, 20, 10, 20, 20, blend);
|
||||
ok( ret, "GdiAlphaBlend succeeded\n" );
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = pGdiAlphaBlend(hdcDst, 0, 0, 20, 20, hdcDst, 10, 20, 20, 20, blend);
|
||||
ok( ret, "GdiAlphaBlend succeeded\n" );
|
||||
|
||||
/* AC_SRC_ALPHA requires 32-bpp BI_RGB format */
|
||||
|
||||
blend.AlphaFormat = AC_SRC_ALPHA;
|
||||
|
|
Loading…
Reference in New Issue