0.5 ? $diff / (2 - $max - $min) : $diff / ($max + $min); switch($max) { case $rgb[0]: $h = ($rgb[1] - $rgb[2]) / $diff + ($rgb[1] < $rgb[2] ? 6 : 0); break; case $rgb[1]: $h = ($rgb[2] - $rgb[0]) / $diff + 2; break; case $rgb[2]: $h = ($rgb[0] - $rgb[1]) / $diff + 4; break; } $h /= 6; } //TODO: Maybe return values not changed? For now this seems easier like so return array($h*360, $s*100, $l*100); } function hslToHex($hsl) { list($h, $s, $l) = $hsl; if ($s == 0) $s = 0.000001; $q = $l < 0.5 ? $l * (1 + $s) : $l + $s - $l * $s; $p = 2 * $l - $q; $r = hue2rgb($p, $q, $h + 1/3); $g = hue2rgb($p, $q, $h); $b = hue2rgb($p, $q, $h - 1/3); return rgb2hex($r) . rgb2hex($g) . rgb2hex($b); } function hue2rgb($p, $q, $t) { if ($t < 0) $t += 1; if ($t > 1) $t -= 1; if ($t < 1/6) return $p + ($q - $p) * 6 * $t; if ($t < 1/2) return $q; if ($t < 2/3) return $p + ($q - $p) * (2/3 - $t) * 6; return $p; } function rgb2hex($rgb) { return str_pad(dechex($rgb * 255), 2, '0', STR_PAD_LEFT); } function getColor($name,$default){ //Get color from the Customizer in the form #rrggbb and delete the '#' $hex = substr( esc_attr( get_theme_mod($name, $default) ), 1 ); //Convert Value rrggbb to hsl. //Produces (HUE: in [0,1] of 360°, SAT: in [0,1], LIG: in [0,1]) // This is now done in hexToHsl() directly. //$hue = hexToHsl($hex); // $hue[0] *= 360; // $hue[1] *= 100; // $hue[2] *= 100; return hexToHsl($hex); }