[librsvg: 2/4] Set cairo operator from MixBlendMode property prior to painting




commit 78bebb35636e5319a4cf195513698208772b0a52
Author: John Ledbetter <john ledbetter gmail com>
Date:   Mon Aug 24 17:54:52 2020 -0400

    Set cairo operator from MixBlendMode property prior to painting

 rsvg_internals/src/drawing_ctx.rs | 2 ++
 1 file changed, 2 insertions(+)
---
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index b96cad89..83cde5bf 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -515,6 +515,7 @@ impl DrawingCtx {
                 let needs_temporary_surface = !(is_opaque
                     && filter.is_none()
                     && mask.is_none()
+                    && values.mix_blend_mode() == MixBlendMode::Normal
                     && clip_in_object_space.is_none());
 
                 if needs_temporary_surface {
@@ -633,6 +634,7 @@ impl DrawingCtx {
                         // No mask, so composite the temporary surface
 
                         dc.cr.set_matrix(affines.compositing.into());
+                        dc.cr.set_operator(values.mix_blend_mode().into());
 
                         if opacity < 1.0 {
                             dc.cr.paint_with_alpha(opacity);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]