]>
git.wh0rd.org - tt-rss.git/blob - include/colors.php
3 function _color_rgb2hsl($rgb) {
4 $r = $rgb[0]; $g = $rgb[1]; $b = $rgb[2];
5 $min = min($r, min($g, $b)); $max = max($r, max($g, $b));
6 $delta = $max - $min; $l = ($min +
$max) / 2; $s = 0;
7 if ($l > 0 && $l < 1) {
8 $s = $delta / ($l < 0.5 ?
(2 * $l) : (2 - 2 * $l));
12 if ($max == $r && $max != $g) $h +
= ($g - $b) / $delta;
13 if ($max == $g && $max != $b) $h +
= (2 +
($b - $r) / $delta);
14 if ($max == $b && $max != $r) $h +
= (4 +
($r - $g) / $delta);
16 } return array($h, $s, $l);
20 function _color_hsl2rgb($hsl) {
21 $h = $hsl[0]; $s = $hsl[1]; $l = $hsl[2];
22 $m2 = ($l <= 0.5) ?
$l * ($s +
1) : $l +
$s - $l*$s;
24 return array(_color_hue2rgb($m1, $m2, $h +
0.33333),
25 _color_hue2rgb($m1, $m2, $h),
26 _color_hue2rgb($m1, $m2, $h - 0.33333));
29 ### Helper function for _color_hsl2rgb().
30 function _color_hue2rgb($m1, $m2, $h) {
31 $h = ($h < 0) ?
$h +
1 : (($h > 1) ?
$h - 1 : $h);
32 if ($h * 6 < 1) return $m1 +
($m2 - $m1) * $h * 6;
33 if ($h * 2 < 1) return $m2;
34 if ($h * 3 < 2) return $m1 +
($m2 - $m1) * (0.66666 - $h) * 6;
38 ### Convert a hex color into an RGB triplet.
39 function _color_unpack($hex, $normalize = false) {
40 if (strlen($hex) == 4) {
41 $hex = $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3];
43 for ($i = 16; $i >= 0; $i -= 8) {
44 $out[] = (($c >> $i) & 0xFF) / ($normalize ?
255 : 1);
48 ### Convert an RGB triplet to a hex color.
49 function _color_pack($rgb, $normalize = false) {
50 foreach ($rgb as $k => $v) {
51 $out |
= (($v * ($normalize ?
255 : 1)) << (16 - $k * 8));
52 }return '#'. str_pad(dechex($out), 6, 0, STR_PAD_LEFT
);
55 function rgb2hsl($arr) {
64 $var_Min = min($var_R, $var_G, $var_B);
65 $var_Max = max($var_R, $var_G, $var_B);
66 $del_Max = $var_Max - $var_Min;
74 $s = $del_Max / $var_Max;
76 $del_R = ( ( ( $max - $var_R ) / 6 ) +
( $del_Max / 2 ) ) / $del_Max;
77 $del_G = ( ( ( $max - $var_G ) / 6 ) +
( $del_Max / 2 ) ) / $del_Max;
78 $del_B = ( ( ( $max - $var_B ) / 6 ) +
( $del_Max / 2 ) ) / $del_Max;
80 if ($var_R == $var_Max) $h = $del_B - $del_G;
81 else if ($var_G == $var_Max) $h = ( 1 / 3 ) +
$del_R - $del_B;
82 else if ($var_B == $var_Max) $h = ( 2 / 3 ) +
$del_G - $del_R;
88 return array($h, $s, $v);
91 function hsl2rgb($arr) {
97 $r = $g = $B = $v * 255;
100 $var_i = floor( $var_H );
101 $var_1 = $v * ( 1 - $s );
102 $var_2 = $v * ( 1 - $s * ( $var_H - $var_i ) );
103 $var_3 = $v * ( 1 - $s * (1 - ( $var_H - $var_i ) ) );
105 if ($var_i == 0) { $var_R = $v ; $var_G = $var_3 ; $var_B = $var_1 ; }
106 else if ($var_i == 1) { $var_R = $var_2 ; $var_G = $v ; $var_B = $var_1 ; }
107 else if ($var_i == 2) { $var_R = $var_1 ; $var_G = $v ; $var_B = $var_3 ; }
108 else if ($var_i == 3) { $var_R = $var_1 ; $var_G = $var_2 ; $var_B = $v ; }
109 else if ($var_i == 4) { $var_R = $var_3 ; $var_G = $var_1 ; $var_B = $v ; }
110 else { $var_R = $v ; $var_G = $var_1 ; $var_B = $var_2 ; }
116 return array($r, $g, $B);