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 <bugaevc@gmail.com>
This commit is contained in:
Sergey Bugaev 2023-08-15 11:28:43 +03:00
parent 082fdfdb24
commit 246a7cfeab
2 changed files with 11 additions and 3 deletions

View File

@ -3841,11 +3841,12 @@ gsk_color_matrix_node_class_init (gpointer g_class,
* Creates a `GskRenderNode` that will drawn the @child with * Creates a `GskRenderNode` that will drawn the @child with
* @color_matrix. * @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` * Returns: (transfer full) (type GskColorMatrixNode): A new `GskRenderNode`
*/ */

View File

@ -656,6 +656,13 @@ gtk_snapshot_collect_color_matrix (GtkSnapshot *snapshot,
* Modifies the colors of an image by applying an affine transformation * Modifies the colors of an image by applying an affine transformation
* in RGB space. * 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]. * The image is recorded until the next call to [method@Gtk.Snapshot.pop].
*/ */
void void