+static guint
+scale_round (gdouble value, gdouble scale)
+{
+ value = floor (value * scale + 0.5);
+ value = MAX (value, 0);
+ value = MIN (value, scale);
+ return (guint)value;
+}
+
+gchar *
+accessible_color_name (GdkRGBA *color)
+{
+ if (color->alpha < 1.0)
+ return g_strdup_printf (_("Red %d%%, Green %d%%, Blue %d%%, Alpha %d%%"),
+ scale_round (color->red, 100),
+ scale_round (color->green, 100),
+ scale_round (color->blue, 100),
+ scale_round (color->alpha, 100));
+ else
+ return g_strdup_printf (_("Red %d%%, Green %d%%, Blue %d%%"),
+ scale_round (color->red, 100),
+ scale_round (color->green, 100),
+ scale_round (color->blue, 100));
+}
+
+