I went looking through Raphael.js
\'s source code to find out how he converted RGB values to HSB. I found out the function he did it in and I was in the process
The same logic can be written in a simpler way:
var H
if (C == 0)
H = null;
else if (V == r)
H = (g - b) / C;
else if (V == g)
H = (b - r) / C + 2;
else
H = (r - g) / C + 4;
It's possible to omit the curly braces because there's a single statement in each condition. And given that the conditions are mutually exclusive, using else if
is much clearer than nesting if
s.
As mentioned in MDN Docs:
function example(…) {
return condition1 ? value1
: condition2 ? value2
: condition3 ? value3
: value4;
}
// Equivalent to:
function example(…) {
if (condition1) { return value1; }
else if (condition2) { return value2; }
else if (condition3) { return value3; }
else { return value4; }
}
I think you can have this to avoid the deep nesting:
var H
if(C == 0){
H = null;
}
else if(V == r){
H = (g - b) / C;
}
else if (V == g){
H = (b - r) / C + 2;
}
else {
H = (r - g) / C + 4;
}