winex11: BitBlt returns TRUE when drawing outside of the clipping or visible region.
This commit is contained in:
parent
e21cbfe7e8
commit
11d17fafc4
|
@ -2189,6 +2189,51 @@ void test_GdiAlphaBlend()
|
|||
|
||||
}
|
||||
|
||||
static void test_clipping(void)
|
||||
{
|
||||
HBITMAP bmpDst;
|
||||
HBITMAP oldDst;
|
||||
HBITMAP bmpSrc;
|
||||
HBITMAP oldSrc;
|
||||
HRGN hRgn;
|
||||
LPVOID bits;
|
||||
BOOL result;
|
||||
|
||||
HDC hdcDst = CreateCompatibleDC( NULL );
|
||||
HDC hdcSrc = CreateCompatibleDC( NULL );
|
||||
|
||||
BITMAPINFO bmpinfo={{0}};
|
||||
bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmpinfo.bmiHeader.biWidth = 100;
|
||||
bmpinfo.bmiHeader.biHeight = 100;
|
||||
bmpinfo.bmiHeader.biPlanes = 1;
|
||||
bmpinfo.bmiHeader.biBitCount = GetDeviceCaps( hdcDst, BITSPIXEL );
|
||||
bmpinfo.bmiHeader.biCompression = BI_RGB;
|
||||
|
||||
bmpDst = CreateDIBSection( hdcDst, &bmpinfo, DIB_RGB_COLORS, &bits, NULL, 0 );
|
||||
ok(bmpDst != NULL, "Couldn't create destination bitmap\n");
|
||||
oldDst = (HBITMAP)SelectObject( hdcDst, bmpDst );
|
||||
|
||||
bmpSrc = CreateDIBSection( hdcSrc, &bmpinfo, DIB_RGB_COLORS, &bits, NULL, 0 );
|
||||
ok(bmpSrc != NULL, "Couldn't create source bitmap\n");
|
||||
oldSrc = (HBITMAP)SelectObject( hdcSrc, bmpSrc );
|
||||
|
||||
result = BitBlt( hdcDst, 0, 0, 100, 100, hdcSrc, 100, 100, SRCCOPY );
|
||||
ok(result, "BitBlt failed\n");
|
||||
|
||||
hRgn = CreateRectRgn( 0,0,0,0 );
|
||||
SelectClipRgn( hdcDst, hRgn );
|
||||
|
||||
result = BitBlt( hdcDst, 0, 0, 100, 100, hdcSrc, 0, 0, SRCCOPY );
|
||||
ok(result, "BitBlt failed\n");
|
||||
|
||||
DeleteObject( bmpDst );
|
||||
DeleteObject( bmpSrc );
|
||||
DeleteObject( hRgn );
|
||||
DeleteDC( hdcDst );
|
||||
DeleteDC( hdcSrc );
|
||||
}
|
||||
|
||||
START_TEST(bitmap)
|
||||
{
|
||||
HMODULE hdll;
|
||||
|
@ -2214,4 +2259,5 @@ START_TEST(bitmap)
|
|||
test_GdiAlphaBlend();
|
||||
test_bitmapinfoheadersize();
|
||||
test_get16dibits();
|
||||
test_clipping();
|
||||
}
|
||||
|
|
|
@ -1686,7 +1686,10 @@ BOOL X11DRV_BitBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT yDst,
|
|||
if (!BITBLT_GetVisRectangles( physDevDst, xDst, yDst, width, height,
|
||||
physDevSrc, xSrc, ySrc, width, height,
|
||||
&visRectSrc, &visRectDst ))
|
||||
{
|
||||
result = TRUE;
|
||||
goto END;
|
||||
}
|
||||
|
||||
xSrc = visRectSrc.left;
|
||||
ySrc = visRectSrc.top;
|
||||
|
|
Loading…
Reference in New Issue