image tool: Better color state support

Show cicp color states with their tuple.
This commit is contained in:
Matthias Clasen 2024-08-08 08:08:23 -04:00
parent b0acf2a7a8
commit 28817b4bb2
3 changed files with 34 additions and 1 deletions

View File

@ -48,12 +48,23 @@ static void
file_info (const char *filename) file_info (const char *filename)
{ {
GdkTexture *texture; GdkTexture *texture;
char *name;
char *cicp;
texture = load_image_file (filename); texture = load_image_file (filename);
g_print ("%s %dx%d\n", _("Size:"), gdk_texture_get_width (texture), gdk_texture_get_height (texture)); g_print ("%s %dx%d\n", _("Size:"), gdk_texture_get_width (texture), gdk_texture_get_height (texture));
g_print ("%s %s\n", _("Format:"), get_format_name (gdk_texture_get_format (texture))); g_print ("%s %s\n", _("Format:"), get_format_name (gdk_texture_get_format (texture)));
g_print ("%s %s\n", _("Color state:"), get_color_state_name (gdk_texture_get_color_state (texture)));
name = get_color_state_name (gdk_texture_get_color_state (texture));
cicp = get_color_state_cicp (gdk_texture_get_color_state (texture));
if (name && cicp)
g_print ("%s %s (cicp %s)\n", _("Color state:"), name, cicp);
else if (cicp)
g_print ("%s cicp %s\n", _("Color state:"), cicp);
else
g_print ("%s %s\n", _("Color state:"), _("unknown"));
g_object_unref (texture); g_object_unref (texture);
} }

View File

@ -188,6 +188,27 @@ get_color_state_names (void)
return g_strdupv ((char **) names); return g_strdupv ((char **) names);
} }
char *
get_color_state_cicp (GdkColorState *color_state)
{
GdkCicpParams *params;
char *str = NULL;
params = gdk_color_state_create_cicp_params (color_state);
if (params)
{
str = g_strdup_printf ("%u/%u/%u/%u",
gdk_cicp_params_get_color_primaries (params),
gdk_cicp_params_get_transfer_function (params),
gdk_cicp_params_get_matrix_coefficients (params),
gdk_cicp_params_get_range (params));
g_object_unref (params);
}
return str;
}
char * char *
get_color_state_name (GdkColorState *color_state) get_color_state_name (GdkColorState *color_state)
{ {

View File

@ -18,6 +18,7 @@ GdkColorState * find_color_state_by_name (const char *name);
char ** get_color_state_names (void); char ** get_color_state_names (void);
char * get_color_state_name (GdkColorState *color_state); char * get_color_state_name (GdkColorState *color_state);
char * get_color_state_cicp (GdkColorState *color_state);
GdkColorState *parse_cicp_tuple (const char *cicp_tuple, GdkColorState *parse_cicp_tuple (const char *cicp_tuple,
GError **error); GError **error);