Nikolay Sivov : d2d1: Implement setting primitive blend mode.

Alexandre Julliard julliard at winehq.org
Thu Aug 4 14:46:39 CDT 2022


Module: wine
Branch: master
Commit: 4674e051557856a98e5d0a55142969e1b4773dce
URL:    https://gitlab.winehq.org/wine/wine/-/commit/4674e051557856a98e5d0a55142969e1b4773dce

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Aug  3 23:36:25 2022 +0300

d2d1: Implement setting primitive blend mode.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>

---

 dlls/d2d1/device.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/dlls/d2d1/device.c b/dlls/d2d1/device.c
index d25ad3a9d78..0d08ddd4cb5 100644
--- a/dlls/d2d1/device.c
+++ b/dlls/d2d1/device.c
@@ -2414,14 +2414,29 @@ static void STDMETHODCALLTYPE d2d_device_context_GetRenderingControls(ID2D1Devic
 static void STDMETHODCALLTYPE d2d_device_context_SetPrimitiveBlend(ID2D1DeviceContext1 *iface,
         D2D1_PRIMITIVE_BLEND primitive_blend)
 {
-    FIXME("iface %p, primitive_blend %#x stub!\n", iface, primitive_blend);
+    struct d2d_device_context *context = impl_from_ID2D1DeviceContext(iface);
+
+    TRACE("iface %p, primitive_blend %u.\n", iface, primitive_blend);
+
+    if (primitive_blend > D2D1_PRIMITIVE_BLEND_MAX)
+    {
+        WARN("Unknown blend mode %u.\n", primitive_blend);
+        return;
+    }
+
+    if (context->target.type == D2D_TARGET_COMMAND_LIST)
+        d2d_command_list_set_primitive_blend(context->target.command_list, primitive_blend);
+
+    context->drawing_state.primitiveBlend = primitive_blend;
 }
 
 static D2D1_PRIMITIVE_BLEND STDMETHODCALLTYPE d2d_device_context_GetPrimitiveBlend(ID2D1DeviceContext1 *iface)
 {
-    FIXME("iface %p stub!\n", iface);
+    struct d2d_device_context *context = impl_from_ID2D1DeviceContext(iface);
+
+    TRACE("iface %p.\n", iface);
 
-    return D2D1_PRIMITIVE_BLEND_SOURCE_OVER;
+    return context->drawing_state.primitiveBlend;
 }
 
 static void STDMETHODCALLTYPE d2d_device_context_SetUnitMode(ID2D1DeviceContext1 *iface, D2D1_UNIT_MODE unit_mode)




More information about the wine-cvs mailing list