Commit d5875e5e by Aaron Leung

Adding a helper rgb-to-hsl function. Gonna' use it real soon now.

parent 5107d2b7
...@@ -123,6 +123,33 @@ namespace Sass { ...@@ -123,6 +123,33 @@ namespace Sass {
} }
// HSL Functions /////////////////////////////////////////////////////// // HSL Functions ///////////////////////////////////////////////////////
// Utility rgb to hsl function so we can do hsl operations
Node rgb_to_hsl(double r, double g, double b, Node_Factory& new_Node) {
r = r/255.0;
g = g/255.0;
b = b/255.0;
double v, m, vm, r2, g2, b2;
double h = 0, s = 0, l = 0;
v = r > g ? r : g;
v = v > b ? v : b;
m = r < g ? r : g;
m = m < b ? m : b;
l = (m + v)/2.0;
if (l <= 0.0) return new_Node("", 0, h, s, l);
vm = v - m;
s = vm;
if (s > 0.0) s /= (l <= 0.5) ? (v + m) : (2.0 - v - m);
else return new_Node("", 0, h, s, l);
r2 = (v - r)/vm;
g2 = (v - g)/vm;
b2 = (v - b)/vm;
if (r == v) h = (g == m ? 5.0 + b2 : 1.0 - g2);
else if (g == v) h = (b == m ? 1.0 + r2 : 3.0 - b2);
else h = (r == m ? 3.0 + g2 : 5.0 - r2);
h /= 6.0;
return new_Node("", 0, h, s, l);
}
double h_to_rgb(double m1, double m2, double h) { double h_to_rgb(double m1, double m2, double h) {
if (h < 0) ++h; if (h < 0) ++h;
......
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