PageRenderTime 57ms CodeModel.GetById 27ms RepoModel.GetById 1ms app.codeStats 0ms

/include/colors.php

https://github.com/kpadilha/Tiny-Tiny-RSS
PHP | 281 lines | 252 code | 24 blank | 5 comment | 54 complexity | c7f1994c22b36cc18df131a03c1a2b3f MD5 | raw file
Possible License(s): GPL-2.0, BSD-3-Clause, LGPL-2.0, LGPL-3.0, GPL-3.0
  1. <?php
  2. function _resolve_htmlcolor($color) {
  3. $htmlcolors = array ("aliceblue" => "#f0f8ff",
  4. "antiquewhite" => "#faebd7",
  5. "aqua" => "#00ffff",
  6. "aquamarine" => "#7fffd4",
  7. "azure" => "#f0ffff",
  8. "beige" => "#f5f5dc",
  9. "bisque" => "#ffe4c4",
  10. "black" => "#000000",
  11. "blanchedalmond" => "#ffebcd",
  12. "blue" => "#0000ff",
  13. "blueviolet" => "#8a2be2",
  14. "brown" => "#a52a2a",
  15. "burlywood" => "#deb887",
  16. "cadetblue" => "#5f9ea0",
  17. "chartreuse" => "#7fff00",
  18. "chocolate" => "#d2691e",
  19. "coral" => "#ff7f50",
  20. "cornflowerblue" => "#6495ed",
  21. "cornsilk" => "#fff8dc",
  22. "crimson" => "#dc143c",
  23. "cyan" => "#00ffff",
  24. "darkblue" => "#00008b",
  25. "darkcyan" => "#008b8b",
  26. "darkgoldenrod" => "#b8860b",
  27. "darkgray" => "#a9a9a9",
  28. "darkgrey" => "#a9a9a9",
  29. "darkgreen" => "#006400",
  30. "darkkhaki" => "#bdb76b",
  31. "darkmagenta" => "#8b008b",
  32. "darkolivegreen" => "#556b2f",
  33. "darkorange" => "#ff8c00",
  34. "darkorchid" => "#9932cc",
  35. "darkred" => "#8b0000",
  36. "darksalmon" => "#e9967a",
  37. "darkseagreen" => "#8fbc8f",
  38. "darkslateblue" => "#483d8b",
  39. "darkslategray" => "#2f4f4f",
  40. "darkslategrey" => "#2f4f4f",
  41. "darkturquoise" => "#00ced1",
  42. "darkviolet" => "#9400d3",
  43. "deeppink" => "#ff1493",
  44. "deepskyblue" => "#00bfff",
  45. "dimgray" => "#696969",
  46. "dimgrey" => "#696969",
  47. "dodgerblue" => "#1e90ff",
  48. "firebrick" => "#b22222",
  49. "floralwhite" => "#fffaf0",
  50. "forestgreen" => "#228b22",
  51. "fuchsia" => "#ff00ff",
  52. "gainsboro" => "#dcdcdc",
  53. "ghostwhite" => "#f8f8ff",
  54. "gold" => "#ffd700",
  55. "goldenrod" => "#daa520",
  56. "gray" => "#808080",
  57. "grey" => "#808080",
  58. "green" => "#008000",
  59. "greenyellow" => "#adff2f",
  60. "honeydew" => "#f0fff0",
  61. "hotpink" => "#ff69b4",
  62. "indianred " => "#cd5c5c",
  63. "indigo " => "#4b0082",
  64. "ivory" => "#fffff0",
  65. "khaki" => "#f0e68c",
  66. "lavender" => "#e6e6fa",
  67. "lavenderblush" => "#fff0f5",
  68. "lawngreen" => "#7cfc00",
  69. "lemonchiffon" => "#fffacd",
  70. "lightblue" => "#add8e6",
  71. "lightcoral" => "#f08080",
  72. "lightcyan" => "#e0ffff",
  73. "lightgoldenrodyellow" => "#fafad2",
  74. "lightgray" => "#d3d3d3",
  75. "lightgrey" => "#d3d3d3",
  76. "lightgreen" => "#90ee90",
  77. "lightpink" => "#ffb6c1",
  78. "lightsalmon" => "#ffa07a",
  79. "lightseagreen" => "#20b2aa",
  80. "lightskyblue" => "#87cefa",
  81. "lightslategray" => "#778899",
  82. "lightslategrey" => "#778899",
  83. "lightsteelblue" => "#b0c4de",
  84. "lightyellow" => "#ffffe0",
  85. "lime" => "#00ff00",
  86. "limegreen" => "#32cd32",
  87. "linen" => "#faf0e6",
  88. "magenta" => "#ff00ff",
  89. "maroon" => "#800000",
  90. "mediumaquamarine" => "#66cdaa",
  91. "mediumblue" => "#0000cd",
  92. "mediumorchid" => "#ba55d3",
  93. "mediumpurple" => "#9370db",
  94. "mediumseagreen" => "#3cb371",
  95. "mediumslateblue" => "#7b68ee",
  96. "mediumspringgreen" => "#00fa9a",
  97. "mediumturquoise" => "#48d1cc",
  98. "mediumvioletred" => "#c71585",
  99. "midnightblue" => "#191970",
  100. "mintcream" => "#f5fffa",
  101. "mistyrose" => "#ffe4e1",
  102. "moccasin" => "#ffe4b5",
  103. "navajowhite" => "#ffdead",
  104. "navy" => "#000080",
  105. "oldlace" => "#fdf5e6",
  106. "olive" => "#808000",
  107. "olivedrab" => "#6b8e23",
  108. "orange" => "#ffa500",
  109. "orangered" => "#ff4500",
  110. "orchid" => "#da70d6",
  111. "palegoldenrod" => "#eee8aa",
  112. "palegreen" => "#98fb98",
  113. "paleturquoise" => "#afeeee",
  114. "palevioletred" => "#db7093",
  115. "papayawhip" => "#ffefd5",
  116. "peachpuff" => "#ffdab9",
  117. "peru" => "#cd853f",
  118. "pink" => "#ffc0cb",
  119. "plum" => "#dda0dd",
  120. "powderblue" => "#b0e0e6",
  121. "purple" => "#800080",
  122. "red" => "#ff0000",
  123. "rosybrown" => "#bc8f8f",
  124. "royalblue" => "#4169e1",
  125. "saddlebrown" => "#8b4513",
  126. "salmon" => "#fa8072",
  127. "sandybrown" => "#f4a460",
  128. "seagreen" => "#2e8b57",
  129. "seashell" => "#fff5ee",
  130. "sienna" => "#a0522d",
  131. "silver" => "#c0c0c0",
  132. "skyblue" => "#87ceeb",
  133. "slateblue" => "#6a5acd",
  134. "slategray" => "#708090",
  135. "slategrey" => "#708090",
  136. "snow" => "#fffafa",
  137. "springgreen" => "#00ff7f",
  138. "steelblue" => "#4682b4",
  139. "tan" => "#d2b48c",
  140. "teal" => "#008080",
  141. "thistle" => "#d8bfd8",
  142. "tomato" => "#ff6347",
  143. "turquoise" => "#40e0d0",
  144. "violet" => "#ee82ee",
  145. "wheat" => "#f5deb3",
  146. "white" => "#ffffff",
  147. "whitesmoke" => "#f5f5f5",
  148. "yellow" => "#ffff00",
  149. "yellowgreen" => "#9acd32");
  150. $color = strtolower($color);
  151. if (isset($htmlcolors[$color]))
  152. return $htmlcolors[$color];
  153. else
  154. return $color;
  155. }
  156. ### RGB >> HSL
  157. function _color_rgb2hsl($rgb) {
  158. $r = $rgb[0]; $g = $rgb[1]; $b = $rgb[2];
  159. $min = min($r, min($g, $b)); $max = max($r, max($g, $b));
  160. $delta = $max - $min; $l = ($min + $max) / 2; $s = 0;
  161. if ($l > 0 && $l < 1) {
  162. $s = $delta / ($l < 0.5 ? (2 * $l) : (2 - 2 * $l));
  163. }
  164. $h = 0;
  165. if ($delta > 0) {
  166. if ($max == $r && $max != $g) $h += ($g - $b) / $delta;
  167. if ($max == $g && $max != $b) $h += (2 + ($b - $r) / $delta);
  168. if ($max == $b && $max != $r) $h += (4 + ($r - $g) / $delta);
  169. $h /= 6;
  170. } return array($h, $s, $l);
  171. }
  172. ### HSL >> RGB
  173. function _color_hsl2rgb($hsl) {
  174. $h = $hsl[0]; $s = $hsl[1]; $l = $hsl[2];
  175. $m2 = ($l <= 0.5) ? $l * ($s + 1) : $l + $s - $l*$s;
  176. $m1 = $l * 2 - $m2;
  177. return array(_color_hue2rgb($m1, $m2, $h + 0.33333),
  178. _color_hue2rgb($m1, $m2, $h),
  179. _color_hue2rgb($m1, $m2, $h - 0.33333));
  180. }
  181. ### Helper function for _color_hsl2rgb().
  182. function _color_hue2rgb($m1, $m2, $h) {
  183. $h = ($h < 0) ? $h + 1 : (($h > 1) ? $h - 1 : $h);
  184. if ($h * 6 < 1) return $m1 + ($m2 - $m1) * $h * 6;
  185. if ($h * 2 < 1) return $m2;
  186. if ($h * 3 < 2) return $m1 + ($m2 - $m1) * (0.66666 - $h) * 6;
  187. return $m1;
  188. }
  189. ### Convert a hex color into an RGB triplet.
  190. function _color_unpack($hex, $normalize = false) {
  191. if (strpos($hex, '#') !== 0)
  192. $hex = _resolve_htmlcolor($hex);
  193. if (strlen($hex) == 4) {
  194. $hex = $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3];
  195. } $c = hexdec($hex);
  196. for ($i = 16; $i >= 0; $i -= 8) {
  197. $out[] = (($c >> $i) & 0xFF) / ($normalize ? 255 : 1);
  198. } return $out;
  199. }
  200. ### Convert an RGB triplet to a hex color.
  201. function _color_pack($rgb, $normalize = false) {
  202. foreach ($rgb as $k => $v) {
  203. $out |= (($v * ($normalize ? 255 : 1)) << (16 - $k * 8));
  204. }return '#'. str_pad(dechex($out), 6, 0, STR_PAD_LEFT);
  205. }
  206. function rgb2hsl($arr) {
  207. $r = $arr[0];
  208. $g = $arr[1];
  209. $b = $arr[2];
  210. $var_R = ($r / 255);
  211. $var_G = ($g / 255);
  212. $var_B = ($b / 255);
  213. $var_Min = min($var_R, $var_G, $var_B);
  214. $var_Max = max($var_R, $var_G, $var_B);
  215. $del_Max = $var_Max - $var_Min;
  216. $v = $var_Max;
  217. if ($del_Max == 0) {
  218. $h = 0;
  219. $s = 0;
  220. } else {
  221. $s = $del_Max / $var_Max;
  222. $del_R = ( ( ( $max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  223. $del_G = ( ( ( $max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  224. $del_B = ( ( ( $max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  225. if ($var_R == $var_Max) $h = $del_B - $del_G;
  226. else if ($var_G == $var_Max) $h = ( 1 / 3 ) + $del_R - $del_B;
  227. else if ($var_B == $var_Max) $h = ( 2 / 3 ) + $del_G - $del_R;
  228. if ($H < 0) $h++;
  229. if ($H > 1) $h--;
  230. }
  231. return array($h, $s, $v);
  232. }
  233. function hsl2rgb($arr) {
  234. $h = $arr[0];
  235. $s = $arr[1];
  236. $v = $arr[2];
  237. if($s == 0) {
  238. $r = $g = $B = $v * 255;
  239. } else {
  240. $var_H = $h * 6;
  241. $var_i = floor( $var_H );
  242. $var_1 = $v * ( 1 - $s );
  243. $var_2 = $v * ( 1 - $s * ( $var_H - $var_i ) );
  244. $var_3 = $v * ( 1 - $s * (1 - ( $var_H - $var_i ) ) );
  245. if ($var_i == 0) { $var_R = $v ; $var_G = $var_3 ; $var_B = $var_1 ; }
  246. else if ($var_i == 1) { $var_R = $var_2 ; $var_G = $v ; $var_B = $var_1 ; }
  247. else if ($var_i == 2) { $var_R = $var_1 ; $var_G = $v ; $var_B = $var_3 ; }
  248. else if ($var_i == 3) { $var_R = $var_1 ; $var_G = $var_2 ; $var_B = $v ; }
  249. else if ($var_i == 4) { $var_R = $var_3 ; $var_G = $var_1 ; $var_B = $v ; }
  250. else { $var_R = $v ; $var_G = $var_1 ; $var_B = $var_2 ; }
  251. $r = $var_R * 255;
  252. $g = $var_G * 255;
  253. $B = $var_B * 255;
  254. }
  255. return array($r, $g, $B);
  256. }
  257. ?>