From: Sergey Bugaev Date: Tue, 15 Aug 2023 08:28:43 +0000 (+0300) Subject: rendernode, snapshot: Slightly expand color matrix docs X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2^2~22 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e069a8053f9ada2ba070e557307a7b1c3892ff51;p=gtk4.git rendernode, snapshot: Slightly expand color matrix docs Based on reverse engineering the color node and contrary to my expectations, the matrix/offset is expressed in, and applied to, unpremultiplied colors. The colors are being explicitly unpremultiplied, transformed according to the matrix/offset, and premultiplied back (see color_matrix.glsl). The matrix is getting transposed. Also, copy the same blurb to the corresponding GtkSnapshot function. Signed-off-by: Sergey Bugaev --- diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c index 54234992f9..2758dff2a6 100644 --- a/gsk/gskrendernodeimpl.c +++ b/gsk/gskrendernodeimpl.c @@ -3838,11 +3838,12 @@ gsk_color_matrix_node_class_init (gpointer g_class, * Creates a `GskRenderNode` that will drawn the @child with * @color_matrix. * - * In particular, the node will transform the operation + * In particular, the node will transform colors by applying * - * pixel = color_matrix * pixel + color_offset + * pixel = transpose(color_matrix) * pixel + color_offset * - * for every pixel. + * for every pixel. The transformation operates on unpremultiplied + * colors, with color components ordered R, G, B, A. * * Returns: (transfer full) (type GskColorMatrixNode): A new `GskRenderNode` */ diff --git a/gtk/gtksnapshot.c b/gtk/gtksnapshot.c index 23da5d6218..4e16b6cb95 100644 --- a/gtk/gtksnapshot.c +++ b/gtk/gtksnapshot.c @@ -647,6 +647,13 @@ gtk_snapshot_collect_color_matrix (GtkSnapshot *snapshot, * Modifies the colors of an image by applying an affine transformation * in RGB space. * + * In particular, the colors will be transformed by applying + * + * pixel = transpose(color_matrix) * pixel + color_offset + * + * for every pixel. The transformation operates on unpremultiplied + * colors, with color components ordered R, G, B, A. + * * The image is recorded until the next call to [method@Gtk.Snapshot.pop]. */ void