in sources/Google.Solutions.Mvvm/Drawing/HslColor.cs [89:127]
public static HslColor FromRgb(int pR, int pG, int pB)
{
var r = pR / 255f;
var g = pG / 255f;
var b = pB / 255f;
var max = (r > g && r > b) ? r : (g > b) ? g : b;
var min = (r < g && r < b) ? r : (g < b) ? g : b;
float h, s, l;
l = (max + min) / 2.0f;
if (max == min)
{
h = s = 0.0f;
}
else
{
var d = max - min;
s = (l > 0.5f) ? d / (2.0f - max - min) : d / (max + min);
if (r > g && r > b)
{
h = (g - b) / d + (g < b ? 6.0f : 0.0f);
}
else if (g > b)
{
h = (b - r) / d + 2.0f;
}
else
{
h = (r - g) / d + 4.0f;
}
h /= 6.0f;
}
return new HslColor(h, s, l);
}