summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2019-05-20 03:24:24 +0200
committerBenjamin Otte <otte@redhat.com>2019-05-21 06:43:59 +0200
commit29cb9230bf0776e55262e712405e8c8c17fed6a7 (patch)
treed82028323dee2170c43bb22bfff2b9774a95dfef
parentb37c2216fc19319087d4ef543dcc71ce34bf4432 (diff)
downloadgtk+-29cb9230bf0776e55262e712405e8c8c17fed6a7.tar.gz
rendernode: Blur alpha channel for cairo blur node
The blur node still doesn't properly blur with a transform, but at least it now doesn't turn semi-transparent stuff black.
-rw-r--r--gsk/gskrendernodeimpl.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index 596e6da006..d0a24ed463 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -3666,6 +3666,7 @@ blur_once (cairo_surface_t *src,
r += c1[0];
g += c1[1];
b += c1[2];
+ a += c1[3];
}
p_dest_row = p_dest;
for (x = 0; x < width; x++)
@@ -3674,6 +3675,7 @@ blur_once (cairo_surface_t *src,
p_dest_row[0] = div_kernel_size[r];
p_dest_row[1] = div_kernel_size[g];
p_dest_row[2] = div_kernel_size[b];
+ p_dest_row[3] = div_kernel_size[a];
p_dest_row += n_channels;
/* the pixel to add to the kernel */
@@ -3692,6 +3694,7 @@ blur_once (cairo_surface_t *src,
r += c1[0] - c2[0];
g += c1[1] - c2[1];
b += c1[2] - c2[2];
+ a += c1[3] - c2[3];
}
p_src += src_rowstride;
@@ -3715,6 +3718,7 @@ blur_once (cairo_surface_t *src,
r += c1[0];
g += c1[1];
b += c1[2];
+ a += c1[3];
}
p_dest_col = p_dest;
@@ -3725,6 +3729,7 @@ blur_once (cairo_surface_t *src,
p_dest_col[0] = div_kernel_size[r];
p_dest_col[1] = div_kernel_size[g];
p_dest_col[2] = div_kernel_size[b];
+ p_dest_col[3] = div_kernel_size[a];
p_dest_col += dest_rowstride;
/* the pixel to add to the kernel */
@@ -3742,6 +3747,7 @@ blur_once (cairo_surface_t *src,
r += c1[0] - c2[0];
g += c1[1] - c2[1];
b += c1[2] - c2[2];
+ a += c1[3] - c2[3];
}
p_src += n_channels;