mirror of https://github.com/GNOME/gimp.git
libgimpcolor: more GimpRGB-based functions are now unused.
This commit is contained in:
parent
2914fd40ff
commit
0f9b08c37e
|
@ -102,7 +102,6 @@ EXPORTS
|
|||
gimp_rgb_max
|
||||
gimp_rgb_min
|
||||
gimp_rgb_multiply
|
||||
gimp_rgb_parse_css
|
||||
gimp_rgb_parse_name
|
||||
gimp_rgb_set
|
||||
gimp_rgb_set_alpha
|
||||
|
@ -114,6 +113,5 @@ EXPORTS
|
|||
gimp_rgba_distance
|
||||
gimp_rgba_get_uchar
|
||||
gimp_rgba_multiply
|
||||
gimp_rgba_parse_css
|
||||
gimp_rgba_set
|
||||
gimp_rgba_set_uchar
|
||||
|
|
|
@ -42,12 +42,6 @@ static gchar * gimp_rgb_parse_strip (const gchar *str,
|
|||
|
||||
static gboolean gimp_rgb_parse_name_internal (GimpRGB *rgb,
|
||||
const gchar *name);
|
||||
static gboolean gimp_rgb_parse_hex_internal (GimpRGB *rgb,
|
||||
const gchar *hex);
|
||||
static gboolean gimp_rgb_parse_css_internal (GimpRGB *rgb,
|
||||
const gchar *css);
|
||||
static gboolean gimp_rgba_parse_css_internal (GimpRGB *rgb,
|
||||
const gchar *css);
|
||||
|
||||
|
||||
typedef struct
|
||||
|
@ -247,96 +241,6 @@ gimp_rgb_parse_name (GimpRGB *rgb,
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* gimp_rgb_parse_css:
|
||||
* @rgb: a #GimpRGB struct used to return the parsed color
|
||||
* @css: (array length=len): a string describing a color in CSS notation
|
||||
* @len: the length of @css, in bytes. or -1 if @css is nul-terminated
|
||||
*
|
||||
* Attempts to parse a string describing an RGB color in CSS
|
||||
* notation. This can be either a numerical representation
|
||||
* (<code>rgb(255,0,0)</code> or <code>rgb(100%,0%,0%)</code>)
|
||||
* or a hexadecimal notation as parsed by gimp_rgb_parse_hex()
|
||||
* (<code>##ff0000</code>) or a color name as parsed by
|
||||
* gimp_rgb_parse_name() (<code>red</code>).
|
||||
*
|
||||
* This function does not touch the alpha component of @rgb.
|
||||
*
|
||||
* Returns: %TRUE if @css was parsed successfully and @rgb has been
|
||||
* set, %FALSE otherwise
|
||||
*
|
||||
* Since: 2.2
|
||||
**/
|
||||
gboolean
|
||||
gimp_rgb_parse_css (GimpRGB *rgb,
|
||||
const gchar *css,
|
||||
gint len)
|
||||
{
|
||||
gchar *tmp;
|
||||
gboolean result;
|
||||
|
||||
g_return_val_if_fail (rgb != NULL, FALSE);
|
||||
g_return_val_if_fail (css != NULL, FALSE);
|
||||
|
||||
tmp = gimp_rgb_parse_strip (css, len);
|
||||
|
||||
result = gimp_rgb_parse_css_internal (rgb, tmp);
|
||||
|
||||
g_free (tmp);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* gimp_rgba_parse_css:
|
||||
* @rgba: a #GimpRGB struct used to return the parsed color
|
||||
* @css: (array length=len): a string describing a color in CSS notation
|
||||
* @len: the length of @css, in bytes. or -1 if @css is nul-terminated
|
||||
*
|
||||
* Similar to gimp_rgb_parse_css() but handles RGB colors with alpha
|
||||
* channel in the numerical CSS notation (<code>rgba(255,0,0,255)</code>
|
||||
* or <code>rgba(100%,0%,0%,1000%)</code>).
|
||||
*
|
||||
* It doesn't handle the hexadecimal notation or color names because
|
||||
* they leave the alpha channel unspecified.
|
||||
*
|
||||
* Returns: %TRUE if @css was parsed successfully and @rgb has been
|
||||
* set, %FALSE otherwise
|
||||
*
|
||||
* Since: 2.2
|
||||
**/
|
||||
gboolean
|
||||
gimp_rgba_parse_css (GimpRGB *rgba,
|
||||
const gchar *css,
|
||||
gint len)
|
||||
{
|
||||
gchar *tmp;
|
||||
gboolean result;
|
||||
|
||||
g_return_val_if_fail (rgba != NULL, FALSE);
|
||||
g_return_val_if_fail (css != NULL, FALSE);
|
||||
|
||||
if (len < 0)
|
||||
len = strlen (css);
|
||||
|
||||
tmp = gimp_rgb_parse_strip (css, len);
|
||||
|
||||
if (strcmp (tmp, "transparent") == 0)
|
||||
{
|
||||
gimp_rgba_set (rgba, 0.0, 0.0, 0.0, 0.0);
|
||||
result = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = gimp_rgba_parse_css_internal (rgba, tmp);
|
||||
}
|
||||
|
||||
g_free (tmp);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* gimp_rgb_list_names:
|
||||
* @names: (out) (array length=n_colors) (transfer container): return location for an array of color names
|
||||
|
@ -438,176 +342,3 @@ gimp_rgb_parse_name_internal (GimpRGB *rgb,
|
|||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
gimp_rgb_parse_hex_component (const gchar *hex,
|
||||
gint len,
|
||||
gdouble *value)
|
||||
{
|
||||
gint i;
|
||||
guint c = 0;
|
||||
|
||||
for (i = 0; i < len; i++, hex++)
|
||||
{
|
||||
if (!*hex || !g_ascii_isxdigit (*hex))
|
||||
return FALSE;
|
||||
|
||||
c = (c << 4) | g_ascii_xdigit_value (*hex);
|
||||
}
|
||||
|
||||
switch (len)
|
||||
{
|
||||
case 1: *value = (gdouble) c / 15.0; break;
|
||||
case 2: *value = (gdouble) c / 255.0; break;
|
||||
case 3: *value = (gdouble) c / 4095.0; break;
|
||||
case 4: *value = (gdouble) c / 65535.0; break;
|
||||
default:
|
||||
g_return_val_if_reached (FALSE);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_rgb_parse_hex_internal (GimpRGB *rgb,
|
||||
const gchar *hex)
|
||||
{
|
||||
gint i;
|
||||
gsize len;
|
||||
gdouble val[3];
|
||||
|
||||
if (hex[0] == '#')
|
||||
hex++;
|
||||
|
||||
len = strlen (hex);
|
||||
if (len % 3 || len < 3 || len > 12)
|
||||
return FALSE;
|
||||
|
||||
len /= 3;
|
||||
|
||||
for (i = 0; i < 3; i++, hex += len)
|
||||
{
|
||||
if (! gimp_rgb_parse_hex_component (hex, len, val + i))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gimp_rgb_set (rgb, val[0], val[1], val[2]);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
gimp_rgb_parse_css_numeric (GimpRGB *rgb,
|
||||
const gchar *css)
|
||||
{
|
||||
gdouble values[4];
|
||||
gboolean alpha;
|
||||
gboolean hsl;
|
||||
gint i;
|
||||
|
||||
if (css[0] == 'r' && css[1] == 'g' && css[2] == 'b')
|
||||
hsl = FALSE;
|
||||
else if (css[0] == 'h' && css[1] == 's' && css[2] == 'l')
|
||||
hsl = TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
if (css[3] == 'a' && css[4] == '(')
|
||||
alpha = TRUE;
|
||||
else if (css[3] == '(')
|
||||
alpha = FALSE;
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
css += (alpha ? 5 : 4);
|
||||
|
||||
for (i = 0; i < (alpha ? 4 : 3); i++)
|
||||
{
|
||||
const gchar *end = css;
|
||||
|
||||
while (*end && *end != ',' && *end != '%' && *end != ')')
|
||||
end++;
|
||||
|
||||
if (i == 3 || *end == '%')
|
||||
{
|
||||
values[i] = g_ascii_strtod (css, (gchar **) &end);
|
||||
|
||||
if (errno == ERANGE)
|
||||
return FALSE;
|
||||
|
||||
if (*end == '%')
|
||||
{
|
||||
end++;
|
||||
values[i] /= 100.0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
glong value = strtol (css, (gchar **) &end, 10);
|
||||
|
||||
if (errno == ERANGE)
|
||||
return FALSE;
|
||||
|
||||
if (hsl)
|
||||
values[i] = value / (i == 0 ? 360.0 : 100.0);
|
||||
else
|
||||
values[i] = value / 255.0;
|
||||
}
|
||||
|
||||
while (*end == ',' || g_ascii_isspace (*end))
|
||||
end++;
|
||||
|
||||
css = end;
|
||||
}
|
||||
|
||||
if (*css != ')')
|
||||
return FALSE;
|
||||
|
||||
if (alpha)
|
||||
gimp_rgba_set (rgb, values[0], values[1], values[2], values[3]);
|
||||
else
|
||||
gimp_rgb_set (rgb, values[0], values[1], values[2]);
|
||||
|
||||
gimp_rgb_clamp (rgb);
|
||||
|
||||
if (hsl)
|
||||
{
|
||||
GimpHSL tmp = (*((GimpHSL *) rgb));
|
||||
|
||||
gimp_hsl_to_rgb (&tmp, rgb);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_rgb_parse_css_internal (GimpRGB *rgb,
|
||||
const gchar *css)
|
||||
{
|
||||
if (css[0] == '#')
|
||||
{
|
||||
return gimp_rgb_parse_hex_internal (rgb, css);
|
||||
}
|
||||
else if (strncmp (css, "rgb(", 4) == 0 ||
|
||||
strncmp (css, "hsl(", 4) == 0)
|
||||
{
|
||||
return gimp_rgb_parse_css_numeric (rgb, css);
|
||||
}
|
||||
else
|
||||
{
|
||||
return gimp_rgb_parse_name_internal (rgb, css);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_rgba_parse_css_internal (GimpRGB *rgba,
|
||||
const gchar *css)
|
||||
{
|
||||
if (strncmp (css, "rgba(", 5) != 0 &&
|
||||
strncmp (css, "hsla(", 5) != 0)
|
||||
return FALSE;
|
||||
|
||||
return gimp_rgb_parse_css_numeric (rgba, css);
|
||||
}
|
||||
|
|
|
@ -72,10 +72,6 @@ void gimp_rgb_get_uchar (const GimpRGB *rgb,
|
|||
gboolean gimp_rgb_parse_name (GimpRGB *rgb,
|
||||
const gchar *name,
|
||||
gint len);
|
||||
gboolean gimp_rgb_parse_css (GimpRGB *rgb,
|
||||
const gchar *css,
|
||||
gint len);
|
||||
|
||||
void gimp_rgb_add (GimpRGB *rgb1,
|
||||
const GimpRGB *rgb2);
|
||||
void gimp_rgb_multiply (GimpRGB *rgb1,
|
||||
|
@ -115,10 +111,6 @@ void gimp_rgba_get_uchar (const GimpRGB *rgba,
|
|||
guchar *blue,
|
||||
guchar *alpha);
|
||||
|
||||
gboolean gimp_rgba_parse_css (GimpRGB *rgba,
|
||||
const gchar *css,
|
||||
gint len);
|
||||
|
||||
void gimp_rgba_add (GimpRGB *rgba1,
|
||||
const GimpRGB *rgba2);
|
||||
void gimp_rgba_multiply (GimpRGB *rgba,
|
||||
|
|
Loading…
Reference in New Issue