Commit 40df5801 authored by Michael Natterer's avatar Michael Natterer 😴
Browse files

libgimpcolor: remove gimp_rgb_to_hsv_int() and gimp_hsv_to_rgb_int() cruft

parent befe80bd
......@@ -67,7 +67,6 @@ EXPORTS
gimp_hsv_get_type
gimp_hsv_set
gimp_hsv_to_rgb
gimp_hsv_to_rgb_int
gimp_hsva_set
gimp_param_rgb_get_type
gimp_param_spec_rgb
......@@ -101,7 +100,6 @@ EXPORTS
gimp_rgb_to_hsl
gimp_rgb_to_hsl_int
gimp_rgb_to_hsv
gimp_rgb_to_hsv_int
gimp_rgb_to_l_int
gimp_rgba_add
gimp_rgba_distance
......
......@@ -44,7 +44,6 @@
**/
#define GIMP_HSV_UNDEFINED -1.0
#define GIMP_HSL_UNDEFINED -1.0
/*********************************
......@@ -404,178 +403,8 @@ gimp_cmyk_to_rgb (const GimpCMYK *cmyk,
}
#define GIMP_RETURN_RGB(x, y, z) { rgb->r = x; rgb->g = y; rgb->b = z; return; }
/****************************************************************************
* Theoretically, hue 0 (pure red) is identical to hue 6 in these transforms.
* Pure red always maps to 6 in this implementation. Therefore UNDEFINED can
* be defined as 0 in situations where only unsigned numbers are desired.
****************************************************************************/
/* gint functions */
/**
* gimp_rgb_to_hsv_int:
* @red: The red channel value, returns the Hue channel
* @green: The green channel value, returns the Saturation channel
* @blue: The blue channel value, returns the Value channel
*
* The arguments are pointers to int representing channel values in
* the RGB colorspace, and the values pointed to are all in the range
* [0, 255].
*
* The function changes the arguments to point to the HSV value
* corresponding, with the returned values in the following
* ranges: H [0, 359], S [0, 255], V [0, 255].
**/
void
gimp_rgb_to_hsv_int (gint *red,
gint *green,
gint *blue)
{
gdouble r, g, b;
gdouble h, s, v;
gint min;
gdouble delta;
r = *red;
g = *green;
b = *blue;
if (r > g)
{
v = MAX (r, b);
min = MIN (g, b);
}
else
{
v = MAX (g, b);
min = MIN (r, b);
}
delta = v - min;
if (v == 0.0)
s = 0.0;
else
s = delta / v;
if (s == 0.0)
{
h = 0.0;
}
else
{
if (r == v)
h = 60.0 * (g - b) / delta;
else if (g == v)
h = 120 + 60.0 * (b - r) / delta;
else
h = 240 + 60.0 * (r - g) / delta;
if (h < 0.0)
h += 360.0;
if (h > 360.0)
h -= 360.0;
}
*red = ROUND (h);
*green = ROUND (s * 255.0);
*blue = ROUND (v);
/* avoid the ambiguity of returning different values for the same color */
if (*red == 360)
*red = 0;
}
/**
* gimp_hsv_to_rgb_int:
* @hue: The hue channel, returns the red channel
* @saturation: The saturation channel, returns the green channel
* @value: The value channel, returns the blue channel
*
* The arguments are pointers to int, with the values pointed to in the
* following ranges: H [0, 360], S [0, 255], V [0, 255].
*
* The function changes the arguments to point to the RGB value
* corresponding, with the returned values all in the range [0, 255].
**/
void
gimp_hsv_to_rgb_int (gint *hue,
gint *saturation,
gint *value)
{
gdouble h, s, v, h_temp;
gdouble f, p, q, t;
gint i;
if (*saturation == 0)
{
*hue = *value;
*saturation = *value;
*value = *value;
}
else
{
h = *hue;
s = *saturation / 255.0;
v = *value / 255.0;
if (h == 360)
h_temp = 0;
else
h_temp = h;
h_temp = h_temp / 60.0;
i = floor (h_temp);
f = h_temp - i;
p = v * (1.0 - s);
q = v * (1.0 - (s * f));
t = v * (1.0 - (s * (1.0 - f)));
switch (i)
{
case 0:
*hue = ROUND (v * 255.0);
*saturation = ROUND (t * 255.0);
*value = ROUND (p * 255.0);
break;
case 1:
*hue = ROUND (q * 255.0);
*saturation = ROUND (v * 255.0);
*value = ROUND (p * 255.0);
break;
case 2:
*hue = ROUND (p * 255.0);
*saturation = ROUND (v * 255.0);
*value = ROUND (t * 255.0);
break;
case 3:
*hue = ROUND (p * 255.0);
*saturation = ROUND (q * 255.0);
*value = ROUND (v * 255.0);
break;
case 4:
*hue = ROUND (t * 255.0);
*saturation = ROUND (p * 255.0);
*value = ROUND (v * 255.0);
break;
case 5:
*hue = ROUND (v * 255.0);
*saturation = ROUND (p * 255.0);
*value = ROUND (q * 255.0);
break;
}
}
}
/**
* gimp_rgb_to_hsl_int:
* @red: Red channel, returns Hue channel
......
......@@ -51,16 +51,6 @@ void gimp_cmyk_to_rgb (const GimpCMYK *cmyk,
/* gint functions */
GIMP_DEPRECATED_FOR (gimp_rgb_to_hsv)
void gimp_rgb_to_hsv_int (gint *red /* returns hue */,
gint *green /* returns saturation */,
gint *blue /* returns value */);
GIMP_DEPRECATED_FOR (gimp_hsv_to_rgb)
void gimp_hsv_to_rgb_int (gint *hue /* returns red */,
gint *saturation /* returns green */,
gint *value /* returns blue */);
GIMP_DEPRECATED_FOR (gimp_rgb_to_hsl)
void gimp_rgb_to_hsl_int (gint *red /* returns hue */,
gint *green /* returns saturation */,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment