d2d1/tests: Test d2d_device_context_SetTarget() with bitmaps of D2D1_ALPHA_MODE_IGNORE.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d0902b7c8e
commit
fe4c187a7c
|
@ -4341,18 +4341,22 @@ static void test_bitmap_formats(BOOL d3d11)
|
|||
static void test_alpha_mode(BOOL d3d11)
|
||||
{
|
||||
D2D1_RENDER_TARGET_PROPERTIES rt_desc;
|
||||
D2D1_BITMAP_PROPERTIES1 bitmap_desc1;
|
||||
D2D1_BITMAP_PROPERTIES bitmap_desc;
|
||||
ID2D1SolidColorBrush *color_brush;
|
||||
ID2D1BitmapBrush *bitmap_brush;
|
||||
struct d2d1_test_context ctx;
|
||||
ID2D1DeviceContext *context;
|
||||
ID2D1Bitmap1 *bitmap1;
|
||||
ID2D1RenderTarget *rt;
|
||||
IDXGISurface *surface;
|
||||
ID2D1Bitmap *bitmap;
|
||||
D2D1_COLOR_F color;
|
||||
BOOL match, match2;
|
||||
D2D1_RECT_F rect;
|
||||
D2D1_SIZE_U size;
|
||||
ULONG refcount;
|
||||
HRESULT hr;
|
||||
BOOL match;
|
||||
|
||||
static const DWORD bitmap_data[] =
|
||||
{
|
||||
|
@ -4546,8 +4550,50 @@ static void test_alpha_mode(BOOL d3d11)
|
|||
|
||||
refcount = ID2D1Bitmap_Release(bitmap);
|
||||
ok(refcount == 1, "Bitmap has %lu references left.\n", refcount);
|
||||
ID2D1SolidColorBrush_Release(color_brush);
|
||||
ID2D1BitmapBrush_Release(bitmap_brush);
|
||||
|
||||
hr = ID2D1RenderTarget_QueryInterface(rt, &IID_ID2D1DeviceContext, (void **)&context);
|
||||
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
||||
set_size_u(&size, 4, 4);
|
||||
memset(&bitmap_desc1, 0, sizeof(bitmap_desc1));
|
||||
bitmap_desc1.dpiX = 96.0f;
|
||||
bitmap_desc1.dpiY = 96.0f;
|
||||
bitmap_desc1.pixelFormat.format = DXGI_FORMAT_B8G8R8A8_UNORM;
|
||||
bitmap_desc1.pixelFormat.alphaMode = D2D1_ALPHA_MODE_IGNORE;
|
||||
bitmap_desc1.bitmapOptions = D2D1_BITMAP_OPTIONS_TARGET | D2D1_BITMAP_OPTIONS_CANNOT_DRAW;
|
||||
hr = ID2D1DeviceContext_CreateBitmap(context, size, bitmap_data, 4 * sizeof(*bitmap_data),
|
||||
&bitmap_desc1, &bitmap1);
|
||||
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
||||
ID2D1DeviceContext_BeginDraw(context);
|
||||
ID2D1DeviceContext_SetTarget(context, (ID2D1Image *)bitmap1);
|
||||
set_rect(&rect, 0.0f, 2.0f, 1.0f, 2.0f);
|
||||
ID2D1SolidColorBrush_SetOpacity(color_brush, 1.0f);
|
||||
ID2D1DeviceContext_FillRectangle(context, &rect, (ID2D1Brush *)color_brush);
|
||||
set_rect(&rect, 1.0f, 2.0f, 3.0f, 3.0f);
|
||||
ID2D1SolidColorBrush_SetOpacity(color_brush, 0.75f);
|
||||
ID2D1DeviceContext_FillRectangle(context, &rect, (ID2D1Brush *)color_brush);
|
||||
set_rect(&rect, 3.0f, 2.0f, 3.0f, 3.0f);
|
||||
ID2D1SolidColorBrush_SetOpacity(color_brush, 0.25f);
|
||||
ID2D1DeviceContext_FillRectangle(context, &rect, (ID2D1Brush *)color_brush);
|
||||
hr = ID2D1DeviceContext_EndDraw(context, NULL, NULL);
|
||||
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
||||
surface = ctx.surface;
|
||||
hr = ID2D1Bitmap1_GetSurface(bitmap1, &ctx.surface);
|
||||
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
match = compare_surface(&ctx, "e7ee77e89745fa5d195fd78bd398738330cfcde8");
|
||||
match2 = compare_surface(&ctx, "4855c7c082c8ede364cf6e2dcde83f95b88aecbe");
|
||||
todo_wine
|
||||
ok(match || broken(match2) /* Win7 TestBots */, "Surface does not match.\n");
|
||||
IDXGISurface_Release(ctx.surface);
|
||||
ctx.surface = surface;
|
||||
ID2D1DeviceContext_SetTarget(context, NULL);
|
||||
|
||||
ID2D1Bitmap1_Release(bitmap1);
|
||||
ID2D1DeviceContext_Release(context);
|
||||
ID2D1SolidColorBrush_Release(color_brush);
|
||||
ID2D1RenderTarget_Release(rt);
|
||||
release_test_context(&ctx);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue