/incidentReport/dompdf/include/css_color.cls.php

https://github.com/mimie/incidentReport · PHP · 257 lines · 216 code · 24 blank · 17 comment · 27 complexity · 88988f9d6e7a23f3ba75caa77c9482c2 MD5 · raw file

  1. <?php
  2. /**
  3. * @package dompdf
  4. * @link http://www.dompdf.com/
  5. * @author Benj Carson <benjcarson@digitaljunkies.ca>
  6. * @author Fabien Ménager <fabien.menager@gmail.com>
  7. * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  8. * @version $Id: css_color.cls.php 448 2011-11-13 13:00:03Z fabien.menager $
  9. */
  10. class CSS_Color {
  11. static $cssColorNames = array(
  12. "aliceblue" => "F0F8FF",
  13. "antiquewhite" => "FAEBD7",
  14. "aqua" => "00FFFF",
  15. "aquamarine" => "7FFFD4",
  16. "azure" => "F0FFFF",
  17. "beige" => "F5F5DC",
  18. "bisque" => "FFE4C4",
  19. "black" => "000000",
  20. "blanchedalmond" => "FFEBCD",
  21. "blue" => "0000FF",
  22. "blueviolet" => "8A2BE2",
  23. "brown" => "A52A2A",
  24. "burlywood" => "DEB887",
  25. "cadetblue" => "5F9EA0",
  26. "chartreuse" => "7FFF00",
  27. "chocolate" => "D2691E",
  28. "coral" => "FF7F50",
  29. "cornflowerblue" => "6495ED",
  30. "cornsilk" => "FFF8DC",
  31. "crimson" => "DC143C",
  32. "cyan" => "00FFFF",
  33. "darkblue" => "00008B",
  34. "darkcyan" => "008B8B",
  35. "darkgoldenrod" => "B8860B",
  36. "darkgray" => "A9A9A9",
  37. "darkgreen" => "006400",
  38. "darkgrey" => "A9A9A9",
  39. "darkkhaki" => "BDB76B",
  40. "darkmagenta" => "8B008B",
  41. "darkolivegreen" => "556B2F",
  42. "darkorange" => "FF8C00",
  43. "darkorchid" => "9932CC",
  44. "darkred" => "8B0000",
  45. "darksalmon" => "E9967A",
  46. "darkseagreen" => "8FBC8F",
  47. "darkslateblue" => "483D8B",
  48. "darkslategray" => "2F4F4F",
  49. "darkslategrey" => "2F4F4F",
  50. "darkturquoise" => "00CED1",
  51. "darkviolet" => "9400D3",
  52. "deeppink" => "FF1493",
  53. "deepskyblue" => "00BFFF",
  54. "dimgray" => "696969",
  55. "dimgrey" => "696969",
  56. "dodgerblue" => "1E90FF",
  57. "firebrick" => "B22222",
  58. "floralwhite" => "FFFAF0",
  59. "forestgreen" => "228B22",
  60. "fuchsia" => "FF00FF",
  61. "gainsboro" => "DCDCDC",
  62. "ghostwhite" => "F8F8FF",
  63. "gold" => "FFD700",
  64. "goldenrod" => "DAA520",
  65. "gray" => "808080",
  66. "green" => "008000",
  67. "greenyellow" => "ADFF2F",
  68. "grey" => "808080",
  69. "honeydew" => "F0FFF0",
  70. "hotpink" => "FF69B4",
  71. "indianred" => "CD5C5C",
  72. "indigo" => "4B0082",
  73. "ivory" => "FFFFF0",
  74. "khaki" => "F0E68C",
  75. "lavender" => "E6E6FA",
  76. "lavenderblush" => "FFF0F5",
  77. "lawngreen" => "7CFC00",
  78. "lemonchiffon" => "FFFACD",
  79. "lightblue" => "ADD8E6",
  80. "lightcoral" => "F08080",
  81. "lightcyan" => "E0FFFF",
  82. "lightgoldenrodyellow" => "FAFAD2",
  83. "lightgray" => "D3D3D3",
  84. "lightgreen" => "90EE90",
  85. "lightgrey" => "D3D3D3",
  86. "lightpink" => "FFB6C1",
  87. "lightsalmon" => "FFA07A",
  88. "lightseagreen" => "20B2AA",
  89. "lightskyblue" => "87CEFA",
  90. "lightslategray" => "778899",
  91. "lightslategrey" => "778899",
  92. "lightsteelblue" => "B0C4DE",
  93. "lightyellow" => "FFFFE0",
  94. "lime" => "00FF00",
  95. "limegreen" => "32CD32",
  96. "linen" => "FAF0E6",
  97. "magenta" => "FF00FF",
  98. "maroon" => "800000",
  99. "mediumaquamarine" => "66CDAA",
  100. "mediumblue" => "0000CD",
  101. "mediumorchid" => "BA55D3",
  102. "mediumpurple" => "9370DB",
  103. "mediumseagreen" => "3CB371",
  104. "mediumslateblue" => "7B68EE",
  105. "mediumspringgreen" => "00FA9A",
  106. "mediumturquoise" => "48D1CC",
  107. "mediumvioletred" => "C71585",
  108. "midnightblue" => "191970",
  109. "mintcream" => "F5FFFA",
  110. "mistyrose" => "FFE4E1",
  111. "moccasin" => "FFE4B5",
  112. "navajowhite" => "FFDEAD",
  113. "navy" => "000080",
  114. "oldlace" => "FDF5E6",
  115. "olive" => "808000",
  116. "olivedrab" => "6B8E23",
  117. "orange" => "FFA500",
  118. "orangered" => "FF4500",
  119. "orchid" => "DA70D6",
  120. "palegoldenrod" => "EEE8AA",
  121. "palegreen" => "98FB98",
  122. "paleturquoise" => "AFEEEE",
  123. "palevioletred" => "DB7093",
  124. "papayawhip" => "FFEFD5",
  125. "peachpuff" => "FFDAB9",
  126. "peru" => "CD853F",
  127. "pink" => "FFC0CB",
  128. "plum" => "DDA0DD",
  129. "powderblue" => "B0E0E6",
  130. "purple" => "800080",
  131. "red" => "FF0000",
  132. "rosybrown" => "BC8F8F",
  133. "royalblue" => "4169E1",
  134. "saddlebrown" => "8B4513",
  135. "salmon" => "FA8072",
  136. "sandybrown" => "F4A460",
  137. "seagreen" => "2E8B57",
  138. "seashell" => "FFF5EE",
  139. "sienna" => "A0522D",
  140. "silver" => "C0C0C0",
  141. "skyblue" => "87CEEB",
  142. "slateblue" => "6A5ACD",
  143. "slategray" => "708090",
  144. "slategrey" => "708090",
  145. "snow" => "FFFAFA",
  146. "springgreen" => "00FF7F",
  147. "steelblue" => "4682B4",
  148. "tan" => "D2B48C",
  149. "teal" => "008080",
  150. "thistle" => "D8BFD8",
  151. "tomato" => "FF6347",
  152. "turquoise" => "40E0D0",
  153. "violet" => "EE82EE",
  154. "wheat" => "F5DEB3",
  155. "white" => "FFFFFF",
  156. "whitesmoke" => "F5F5F5",
  157. "yellow" => "FFFF00",
  158. "yellowgreen" => "9ACD32",
  159. );
  160. static function parse($colour) {
  161. if ( is_array($colour) )
  162. // Assume the array has the right format...
  163. // FIXME: should/could verify this.
  164. return $colour;
  165. $colour = strtolower($colour);
  166. if ( in_array($colour, array("transparent", "inherit")) )
  167. return $colour;
  168. if (isset(self::$cssColorNames[$colour]))
  169. return self::getArray(self::$cssColorNames[$colour]);
  170. $length = mb_strlen($colour);
  171. // #rgb format
  172. if ( $length == 4 && $colour[0] === "#" ) {
  173. return self::getArray($colour[1].$colour[1].$colour[2].$colour[2].$colour[3].$colour[3]);
  174. // #rrggbb format
  175. } else if ( $length == 7 && $colour[0] === "#" ) {
  176. return self::getArray(mb_substr($colour, 1, 6));
  177. // rgb( r,g,b ) format
  178. } else if ( mb_strpos($colour, "rgb") !== false ) {
  179. $i = mb_strpos($colour, "(");
  180. $j = mb_strpos($colour, ")");
  181. // Bad colour value
  182. if ($i === false || $j === false)
  183. return null;
  184. $triplet = explode(",", mb_substr($colour, $i+1, $j-$i-1));
  185. if (count($triplet) != 3)
  186. return null;
  187. foreach (array_keys($triplet) as $c) {
  188. $triplet[$c] = trim($triplet[$c]);
  189. if ( $triplet[$c][mb_strlen($triplet[$c]) - 1] === "%" )
  190. $triplet[$c] = round($triplet[$c] * 2.55);
  191. }
  192. return self::getArray(vsprintf("%02X%02X%02X", $triplet));
  193. // cmyk( c,m,y,k ) format
  194. // http://www.w3.org/TR/css3-gcpm/#cmyk-colors
  195. } else if ( mb_strpos($colour, "cmyk") !== false ) {
  196. $i = mb_strpos($colour, "(");
  197. $j = mb_strpos($colour, ")");
  198. // Bad colour value
  199. if ($i === false || $j === false)
  200. return null;
  201. $values = explode(",", mb_substr($colour, $i+1, $j-$i-1));
  202. if (count($values) != 4)
  203. return null;
  204. foreach ($values as &$c) {
  205. $c = floatval(trim($c));
  206. if ($c > 1.0) $c = 1.0;
  207. if ($c < 0.0) $c = 0.0;
  208. }
  209. return self::getArray($values);
  210. }
  211. }
  212. static function getArray($colour) {
  213. $c = array(null, null, null, null, "hex" => null);
  214. if (is_array($colour)) {
  215. $c = $colour;
  216. $c["c"] = $c[0];
  217. $c["m"] = $c[1];
  218. $c["y"] = $c[2];
  219. $c["k"] = $c[3];
  220. $c["hex"] = "cmyk($c[0],$c[1],$c[2],$c[3])";
  221. }
  222. else {
  223. $c[0] = hexdec(mb_substr($colour, 0, 2)) / 0xff;
  224. $c[1] = hexdec(mb_substr($colour, 2, 2)) / 0xff;
  225. $c[2] = hexdec(mb_substr($colour, 4, 2)) / 0xff;
  226. $c["r"] = $c[0];
  227. $c["g"] = $c[1];
  228. $c["b"] = $c[2];
  229. $c["hex"] = "#$colour";
  230. }
  231. return $c;
  232. }
  233. }