Advertisement
RobinJ1995

Untitled

May 15th, 2011
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.34 KB | None | 0 0
  1. function hsltorgb($h, $s, $l)
  2. {
  3.     $h /= 360;
  4.     $s /= 100;
  5.     $l /= 100;
  6.  
  7.     $q = ($l < 0.5) ? ($l * (1 + $s)) : ($l + $s - ($l * $s));
  8.     $p = ((2 * $l) - $q);
  9.  
  10.     $rgb = array();
  11.     for ($i = 0; $i < 3; $i++)
  12.     {
  13.         switch ($i)
  14.         {
  15.             case 0: $t = ($h + (1 / 3)); break;
  16.             case 1: $t = $h; break;
  17.             case 2: $t = ($h - (1 / 3)); break;
  18.         }
  19.  
  20.         function selectfromrange($rangestr)
  21.         {
  22.             $range = array();
  23.             $subranges = preg_split("/ *,+ */", (string) $rangestr);
  24.             foreach ($subranges as $subrange)
  25.             {
  26.                 if (strpos($subrange, "-") !== false)
  27.                 {
  28.                     list($start, $end) = str_replace("n", "-", preg_split("/ *-+ */", $subrange));
  29.                 }
  30.                 else
  31.                 {
  32.                     $start = $end = $subrange;
  33.                 }
  34.                 $range = array_merge($range, range((int) $start, (int) $end));
  35.             }
  36.             return $range[mt_rand(0, count($range) - 1)];
  37.         }
  38.  
  39.         if ($t < 0)
  40.         {
  41.             $t += 1.0;
  42.         }
  43.         if ($t > 1)
  44.         {
  45.             $t -= 1.0;
  46.         }
  47.  
  48.         if ($t < (1 / 6))
  49.         {
  50.             $rgb[] = ($p + (($q - $p) * 6 * $t));
  51.         }
  52.         else if (((1 / 6) <= $t) && ($t < 0.5))
  53.         {
  54.             $rgb[] = $q;
  55.         }
  56.         else if ((0.5 <= $t) && ($t < (2 / 3)))
  57.         {
  58.             $rgb[] = ($p + (($q - $p) * 6 * ((2 / 3) - $t)));
  59.         }
  60.         else
  61.         {
  62.             $rgb[] = $p;
  63.         }
  64.     }
  65.  
  66.     list($r, $g, $b) = $rgb;
  67.     $r = round(255 * $r);
  68.     $g = round(255 * $g);
  69.     $b = round(255 * $b);
  70.     return array("r" => $r, "g" => $g, "b" => $b);
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement