From 434134454527f604e5993f1661720e3536d8c7a3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 2 Jun 2024 11:04:09 -0400 Subject: [PATCH] css: Add a utility for color space coords --- gtk/gtkcsscolor.c | 55 ++++++++++++++++++++++++++++++++++++++++ gtk/gtkcsscolorprivate.h | 3 +++ 2 files changed, 58 insertions(+) diff --git a/gtk/gtkcsscolor.c b/gtk/gtkcsscolor.c index 66830ad5fd..63907d67bc 100644 --- a/gtk/gtkcsscolor.c +++ b/gtk/gtkcsscolor.c @@ -157,6 +157,61 @@ gtk_css_color_to_string (const GtkCssColor *color) return g_string_free (gtk_css_color_print (color, FALSE, g_string_new ("")), FALSE); } +const char * +gtk_css_color_space_get_coord_name (GtkCssColorSpace color_space, + guint coord) +{ + if (coord == 3) + return "alpha"; + + switch (color_space) + { + case GTK_CSS_COLOR_SPACE_SRGB: + case GTK_CSS_COLOR_SPACE_SRGB_LINEAR: + switch (coord) + { + case 0: return "r"; + case 1: return "g"; + case 2: return "b"; + default: g_assert_not_reached (); + } + case GTK_CSS_COLOR_SPACE_HSL: + switch (coord) + { + case 0: return "h"; + case 1: return "s"; + case 2: return "l"; + default: g_assert_not_reached (); + } + case GTK_CSS_COLOR_SPACE_HWB: + switch (coord) + { + case 0: return "h"; + case 1: return "w"; + case 2: return "b"; + default: g_assert_not_reached (); + } + case GTK_CSS_COLOR_SPACE_OKLAB: + switch (coord) + { + case 0: return "l"; + case 1: return "a"; + case 2: return "b"; + default: g_assert_not_reached (); + } + case GTK_CSS_COLOR_SPACE_OKLCH: + switch (coord) + { + case 0: return "l"; + case 1: return "c"; + case 2: return "h"; + default: g_assert_not_reached (); + } + default: + g_assert_not_reached (); + } +} + /* }}} */ /* {{{ Color conversion */ diff --git a/gtk/gtkcsscolorprivate.h b/gtk/gtkcsscolorprivate.h index 5ed457d224..f48764f410 100644 --- a/gtk/gtkcsscolorprivate.h +++ b/gtk/gtkcsscolorprivate.h @@ -109,4 +109,7 @@ void gtk_css_color_interpolate (const GtkCssColor *from, GtkCssHueInterpolation interp, GtkCssColor *output); +const char * gtk_css_color_space_get_coord_name (GtkCssColorSpace color_space, + guint coord); + G_END_DECLS