Ziqing Hui : d2d1/tests: Test ID2D1BorderTransform.
Alexandre Julliard
julliard at winehq.org
Fri Jul 15 14:44:42 CDT 2022
Module: wine
Branch: master
Commit: c850336cdbb4e07e64b5a0d2ff771729aad69438
URL: https://gitlab.winehq.org/wine/wine/-/commit/c850336cdbb4e07e64b5a0d2ff771729aad69438
Author: Ziqing Hui <zhui at codeweavers.com>
Date: Thu Jul 7 12:53:37 2022 +0800
d2d1/tests: Test ID2D1BorderTransform.
Signed-off-by: Ziqing Hui <zhui at codeweavers.com>
---
dlls/d2d1/tests/d2d1.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 96 insertions(+)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index fbb35dd0e1b..bbca9139711 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -12328,6 +12328,101 @@ done:
release_test_context(&ctx);
}
+static void test_border_transform(BOOL d3d11)
+{
+ ID2D1BorderTransform *transform = NULL;
+ ID2D1EffectContext *effect_context;
+ D2D1_PROPERTY_BINDING binding;
+ struct d2d1_test_context ctx;
+ ID2D1Factory1 *factory;
+ D2D1_EXTEND_MODE mode;
+ ID2D1Effect *effect;
+ UINT input_count;
+ HRESULT hr;
+
+ if (!init_test_context(&ctx, d3d11))
+ return;
+
+ factory = ctx.factory1;
+ if (!factory)
+ {
+ win_skip("ID2D1Factory1 is not supported.\n");
+ release_test_context(&ctx);
+ return;
+ }
+
+ binding.propertyName = L"Context";
+ binding.setFunction = NULL;
+ binding.getFunction = effect_impl_get_context;
+ hr = ID2D1Factory1_RegisterEffectFromString(factory, &CLSID_TestEffect,
+ effect_xml_b, &binding, 1, effect_impl_create);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ hr = ID2D1DeviceContext_CreateEffect(ctx.context, &CLSID_TestEffect, &effect);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ hr = ID2D1Effect_GetValueByName(effect, L"Context",
+ D2D1_PROPERTY_TYPE_IUNKNOWN, (BYTE *)&effect_context, sizeof(effect_context));
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ /* Create transform with invalid extend mode */
+ hr = ID2D1EffectContext_CreateBorderTransform(effect_context, 0xdeadbeef, 0xdeadbeef, &transform);
+ todo_wine ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ if (hr != S_OK)
+ goto done;
+ mode = ID2D1BorderTransform_GetExtendModeX(transform);
+ ok(mode == 0xdeadbeef, "Got unexpected extend mode %u.\n", mode);
+ mode = ID2D1BorderTransform_GetExtendModeY(transform);
+ ok(mode == 0xdeadbeef, "Got unexpected extend mode %u.\n", mode);
+ ID2D1BorderTransform_Release(transform);
+
+ /* Create transform */
+ hr = ID2D1EffectContext_CreateBorderTransform(effect_context, D2D1_EXTEND_MODE_CLAMP, D2D1_EXTEND_MODE_WRAP, &transform);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ /* Get extend mode */
+ mode = ID2D1BorderTransform_GetExtendModeX(transform);
+ ok(mode == D2D1_EXTEND_MODE_CLAMP, "Got unexpected extend mode %u.\n", mode);
+ mode = ID2D1BorderTransform_GetExtendModeY(transform);
+ ok(mode == D2D1_EXTEND_MODE_WRAP, "Got unexpected extend mode %u.\n", mode);
+
+ /* Input count */
+ input_count = ID2D1BorderTransform_GetInputCount(transform);
+ ok(input_count == 1, "Got unexpected input count %u.\n", input_count);
+
+ /* Set output buffer */
+ hr = ID2D1BorderTransform_SetOutputBuffer(transform, 0xdeadbeef, D2D1_CHANNEL_DEPTH_DEFAULT);
+ ok(hr == E_INVALIDARG, "Got unexpected hr %#lx.\n", hr);
+ hr = ID2D1BorderTransform_SetOutputBuffer(transform, D2D1_BUFFER_PRECISION_UNKNOWN, 0xdeadbeef);
+ ok(hr == E_INVALIDARG, "Got unexpected hr %#lx.\n", hr);
+ hr = ID2D1BorderTransform_SetOutputBuffer(transform, D2D1_BUFFER_PRECISION_UNKNOWN, D2D1_CHANNEL_DEPTH_DEFAULT);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ /* Set extend mode */
+ ID2D1BorderTransform_SetExtendModeX(transform, D2D1_EXTEND_MODE_MIRROR);
+ mode = ID2D1BorderTransform_GetExtendModeX(transform);
+ ok(mode == D2D1_EXTEND_MODE_MIRROR, "Got unexpected extend mode %u.\n", mode);
+ ID2D1BorderTransform_SetExtendModeY(transform, D2D1_EXTEND_MODE_CLAMP);
+ mode = ID2D1BorderTransform_GetExtendModeY(transform);
+ ok(mode == D2D1_EXTEND_MODE_CLAMP, "Got unexpected extend mode %u.\n", mode);
+
+ /* Set extend mode with invalid value */
+ ID2D1BorderTransform_SetExtendModeX(transform, 0xdeadbeef);
+ mode = ID2D1BorderTransform_GetExtendModeX(transform);
+ ok(mode == D2D1_EXTEND_MODE_MIRROR, "Got unexpected extend mode %u.\n", mode);
+ ID2D1BorderTransform_SetExtendModeY(transform, 0xdeadbeef);
+ mode = ID2D1BorderTransform_GetExtendModeY(transform);
+ ok(mode == D2D1_EXTEND_MODE_CLAMP, "Got unexpected extend mode %u.\n", mode);
+
+done:
+ if (transform)
+ ID2D1BorderTransform_Release(transform);
+ ID2D1Effect_Release(effect);
+ hr = ID2D1Factory1_UnregisterEffect(factory, &CLSID_TestEffect);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ release_test_context(&ctx);
+}
+
static void test_stroke_contains_point(BOOL d3d11)
{
ID2D1TransformedGeometry *transformed_geometry;
@@ -13146,6 +13241,7 @@ START_TEST(d2d1)
queue_test(test_transform_graph);
queue_test(test_offset_transform);
queue_test(test_blend_transform);
+ queue_test(test_border_transform);
queue_d3d10_test(test_stroke_contains_point);
queue_test(test_image_bounds);
queue_test(test_bitmap_map);
More information about the wine-cvs
mailing list