render/color: add wlr_color_primaries_transform_absolute_colorimetric

This commit is contained in:
Félix Poisot 2025-11-01 15:15:51 +00:00 committed by Simon Ser
parent 9b9d7d845d
commit 17f3f28865
3 changed files with 22 additions and 16 deletions

View file

@ -311,6 +311,18 @@ void wlr_color_primaries_to_xyz(const struct wlr_color_primaries *primaries, flo
memcpy(matrix, result, sizeof(result));
}
void wlr_color_primaries_transform_absolute_colorimetric(
const struct wlr_color_primaries *source,
const struct wlr_color_primaries *destination, float matrix[static 9]) {
float source_to_xyz[9];
wlr_color_primaries_to_xyz(source, source_to_xyz);
float destination_to_xyz[9];
wlr_color_primaries_to_xyz(destination, destination_to_xyz);
float xyz_to_destination[9];
matrix_invert(xyz_to_destination, destination_to_xyz);
wlr_matrix_multiply(matrix, xyz_to_destination, source_to_xyz);
}
void wlr_color_transfer_function_get_default_luminance(enum wlr_color_transfer_function tf,
struct wlr_color_luminances *lum) {
switch (tf) {