Core  3.2
PHP API documentation
 All Data Structures Namespaces Files Functions Variables Pages
Lib.Color.php
Go to the documentation of this file.
1 <?php
2 /*
3  * @author Anakeen
4  * @package FDL
5 */
6 /**
7  * Color utilities
8  *
9  * @author Anakeen
10  * @version $Id: Lib.Color.php,v 1.1 2007/02/21 11:04:26 eric Exp $
11  * @package FDL
12  * @subpackage
13  */
14 /**
15  */
16 // JScript source code
17 //Red : 0..255
18 //Green : 0..255
19 //Blue : 0..255
20 //Hue : 0,0..360,
21 //Lum : 0,0..1,0
22 //Sat : 0,0..1,0
23 
24 /**
25  * return hue, saturation, luminace
26  */
27 function srgb2hsl($rgb)
28 {
29  if ($rgb[0] == '#') {
30  $r = hexdec(substr($rgb, 1, 2));
31  $g = hexdec(substr($rgb, 3, 2));
32  $b = hexdec(substr($rgb, 5, 2));
33  return RGB2HSL($r, $g, $b);
34  }
35  return array(
36  0,
37  0,
38  0
39  );
40 }
41 //Retourne un tableau de 3 valeurs : H,S,L
42 function RGB2HSL($r, $g, $b)
43 {
44  $red = round($r);
45  $green = round($g);
46  $blue = round($b);
47  $minval = min($red, min($green, $blue));
48  $maxval = max($red, max($green, $blue));
49  $mdiff = $maxval - $minval + 0.0;
50  $msum = $maxval + $minval + 0.0;
51  $luminance = $msum / 510.0;
52 
53  $hue = 0.0;
54  if ($maxval == $minval) {
55  $saturation = 0.0;
56  } else {
57  $rnorm = ($maxval - $red) / $mdiff;
58  $gnorm = ($maxval - $green) / $mdiff;
59  $bnorm = ($maxval - $blue) / $mdiff;
60  $saturation = ($luminance <= 0.5) ? ($mdiff / $msum) : ($mdiff / (510.0 - $msum));
61  if ($red == $maxval) $hue = 60.0 * (6.0 + $bnorm - $gnorm);
62  if ($green == $maxval) $hue = 60.0 * (2.0 + $rnorm - $bnorm);
63  if ($blue == $maxval) $hue = 60.0 * (4.0 + $gnorm - $rnorm);
64  if ($hue > 360.0) $hue-= 360.0;
65  }
66  // return array (round ($hue * 255.0 / 360.0), round ($saturation * 255.0), round ($luminance * 255.0));
67  return array(
68  $hue,
69  $saturation,
70  $luminance
71  );
72 }
73 
74 function Magic($rm1, $rm2, $rh)
75 {
76  $retval = $rm1;
77  if ($rh > 360.0) $rh-= 360.0;
78  if ($rh < 0.0) $rh+= 360.0;
79  if ($rh < 60.0) $retval = $rm1 + ($rm2 - $rm1) * $rh / 60.0;
80  else if ($rh < 180.0) $retval = $rm2;
81  else if ($rh < 240.0) $retval = $rm1 + ($rm2 - $rm1) * (240.0 - $rh) / 60.0;
82  return round($retval * 255);
83 }
84 /**
85  * Retourne une chaine: #RRGGBB
86  * @param float $h hue
87  * @param float $s saturation
88  * @param float $l luminance
89  * @return string
90  */
91 
92 function HSL2RGB($h, $s, $l)
93 {
94  $hue = $h;
95  $saturation = $s;
96  $luminance = $l;
97  if ($saturation == 0.0) {
98  $red = $green = $blue = round($luminance * 255.0);
99  } else {
100  if ($luminance <= 0.5) $rm2 = $luminance + $luminance * $saturation;
101  else $rm2 = $luminance + $saturation - $luminance * $saturation;
102  $rm1 = 2.0 * $luminance - $rm2;
103  $red = Magic($rm1, $rm2, $hue + 120.0);
104  $green = Magic($rm1, $rm2, $hue);
105  $blue = Magic($rm1, $rm2, $hue - 120.0);
106  }
107  return sprintf("#%02X%02X%02X", $red, $green, $blue);
108  //return new Array ($red, $green, $blue);
109 
110 }
if($famId) $s
Magic($rm1, $rm2, $rh)
Definition: Lib.Color.php:74
HSL2RGB($h, $s, $l)
Definition: Lib.Color.php:92
srgb2hsl($rgb)
Definition: Lib.Color.php:27
RGB2HSL($r, $g, $b)
Definition: Lib.Color.php:42
← centre documentaire © anakeen