Subversion Repositories cryptochat

Rev

Blame | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. // http://www.actionscript.org/forums/archive/index.php3/t-50746.html
  4. function HSV_TO_RGB ($H, $S, $V) // HSV Values:Number 0-1
  5. { // RGB Results:Number 0-255
  6. $RGB = array();
  7.  
  8. if($S == 0)
  9. {
  10. $R = $G = $B = $V * 255;
  11. }
  12. else
  13. {
  14. $var_H = $H * 6;
  15. $var_i = floor( $var_H );
  16. $var_1 = $V * ( 1 - $S );
  17. $var_2 = $V * ( 1 - $S * ( $var_H - $var_i ) );
  18. $var_3 = $V * ( 1 - $S * (1 - ( $var_H - $var_i ) ) );
  19.  
  20. if ($var_i == 0) { $var_R = $V ; $var_G = $var_3 ; $var_B = $var_1 ; }
  21. else if ($var_i == 1) { $var_R = $var_2 ; $var_G = $V ; $var_B = $var_1 ; }
  22. else if ($var_i == 2) { $var_R = $var_1 ; $var_G = $V ; $var_B = $var_3 ; }
  23. else if ($var_i == 3) { $var_R = $var_1 ; $var_G = $var_2 ; $var_B = $V ; }
  24. else if ($var_i == 4) { $var_R = $var_3 ; $var_G = $var_1 ; $var_B = $V ; }
  25. else { $var_R = $V ; $var_G = $var_1 ; $var_B = $var_2 ; }
  26.  
  27. $R = $var_R * 255;
  28. $G = $var_G * 255;
  29. $B = $var_B * 255;
  30. }
  31.  
  32. $RGB['R'] = $R;
  33. $RGB['G'] = $G;
  34. $RGB['B'] = $B;
  35.  
  36. return $RGB;
  37. }
  38.  
  39. function str_to_color($str) {
  40.         $str = md5(strtolower($str));
  41.  
  42.         $sum = 0;
  43.         for ($i=0; $i<strlen($str); $i++) {
  44.                 $c = substr($str,$i,1);
  45.                 $sum += ord($c);
  46.         }
  47.         $a = $sum % 255;
  48.  
  49.  
  50.         $r = HSV_TO_RGB($a/255, 1, 0.75);
  51.  
  52.         return '#'.str_pad(dechex($r['R']), 2, '0', STR_PAD_LEFT).
  53.                   str_pad(dechex($r['G']), 2, '0', STR_PAD_LEFT).
  54.                   str_pad(dechex($r['B']), 2, '0', STR_PAD_LEFT);
  55. }
  56.  
  57. ?>