From 360eef9663332ed4e05d2e30ab78fb9a49079660 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Tue, 23 Sep 2025 14:44:29 +0300 Subject: [PATCH] color: add weston_color_profile_param_builder_set_target_primaries_named() The protocol does not carry target primaries by enumeration, but in weston.ini I want to be able to use a name rather than raw values. Adding this API makes that possible. main.c cannot look up the enumeration itself, because color-properties.h is private. As it should be. Signed-off-by: Pekka Paalanen --- include/libweston/colorimetry.h | 4 ++++ libweston/color-profile-param-builder.c | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/libweston/colorimetry.h b/include/libweston/colorimetry.h index c361823dd..edf88e4a4 100644 --- a/include/libweston/colorimetry.h +++ b/include/libweston/colorimetry.h @@ -234,6 +234,10 @@ bool weston_color_profile_param_builder_set_target_primaries(struct weston_color_profile_param_builder *builder, const struct weston_color_gamut *target_primaries); +bool +weston_color_profile_param_builder_set_target_primaries_named(struct weston_color_profile_param_builder *builder, + enum weston_color_primaries target_primaries); + bool weston_color_profile_param_builder_set_target_luminance(struct weston_color_profile_param_builder *builder, float min_lum, float max_lum); diff --git a/libweston/color-profile-param-builder.c b/libweston/color-profile-param-builder.c index 48ff61564..de991f1c0 100644 --- a/libweston/color-profile-param-builder.c +++ b/libweston/color-profile-param-builder.c @@ -576,6 +576,31 @@ weston_color_profile_param_builder_set_target_primaries(struct weston_color_prof return true; } +/** + * Sets target primaries for struct weston_color_profile_param_builder object + * from the given enumerated primaries. + * + * If the target primaries are already set, this should fail. Setting a + * parameter twice is forbidden. + * + * If this fails, users can call weston_color_profile_param_builder_get_error() + * to get the error details. + * + * \param builder The builder object whose parameters will be set. + * \param target_primaries The entry from the enumeration to use. + * \return true on success, false otherwise. + */ +WL_EXPORT bool +weston_color_profile_param_builder_set_target_primaries_named(struct weston_color_profile_param_builder *builder, + enum weston_color_primaries target_primaries) +{ + const struct weston_color_primaries_info *info; + + info = weston_color_primaries_info_from(builder->compositor, target_primaries); + + return weston_color_profile_param_builder_set_target_primaries(builder, &info->color_gamut); +} + /** * Sets target luminance for struct weston_color_profile_param_builder object. *