colors.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. define("dojo/colors", ["./_base/kernel", "./_base/lang", "./_base/Color", "./_base/array"], function(dojo, lang, Color, ArrayUtil) {
  2. // module:
  3. // dojo/colors
  4. // summary:
  5. // TODOC
  6. var ColorExt = lang.getObject("dojo.colors", true);
  7. //TODO: this module appears to break naming conventions
  8. /*=====
  9. lang.mixin(dojo, {
  10. colors: {
  11. // summary: Color utilities, extending Base dojo.Color
  12. }
  13. });
  14. =====*/
  15. // this is a standard conversion prescribed by the CSS3 Color Module
  16. var hue2rgb = function(m1, m2, h){
  17. if(h < 0){ ++h; }
  18. if(h > 1){ --h; }
  19. var h6 = 6 * h;
  20. if(h6 < 1){ return m1 + (m2 - m1) * h6; }
  21. if(2 * h < 1){ return m2; }
  22. if(3 * h < 2){ return m1 + (m2 - m1) * (2 / 3 - h) * 6; }
  23. return m1;
  24. };
  25. // Override base Color.fromRgb with the impl in this module
  26. dojo.colorFromRgb = Color.fromRgb = function(/*String*/ color, /*dojo.Color?*/ obj){
  27. // summary:
  28. // get rgb(a) array from css-style color declarations
  29. // description:
  30. // this function can handle all 4 CSS3 Color Module formats: rgb,
  31. // rgba, hsl, hsla, including rgb(a) with percentage values.
  32. var m = color.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);
  33. if(m){
  34. var c = m[2].split(/\s*,\s*/), l = c.length, t = m[1], a;
  35. if((t == "rgb" && l == 3) || (t == "rgba" && l == 4)){
  36. var r = c[0];
  37. if(r.charAt(r.length - 1) == "%"){
  38. // 3 rgb percentage values
  39. a = ArrayUtil.map(c, function(x){
  40. return parseFloat(x) * 2.56;
  41. });
  42. if(l == 4){ a[3] = c[3]; }
  43. return Color.fromArray(a, obj); // dojo.Color
  44. }
  45. return Color.fromArray(c, obj); // dojo.Color
  46. }
  47. if((t == "hsl" && l == 3) || (t == "hsla" && l == 4)){
  48. // normalize hsl values
  49. var H = ((parseFloat(c[0]) % 360) + 360) % 360 / 360,
  50. S = parseFloat(c[1]) / 100,
  51. L = parseFloat(c[2]) / 100,
  52. // calculate rgb according to the algorithm
  53. // recommended by the CSS3 Color Module
  54. m2 = L <= 0.5 ? L * (S + 1) : L + S - L * S,
  55. m1 = 2 * L - m2;
  56. a = [
  57. hue2rgb(m1, m2, H + 1 / 3) * 256,
  58. hue2rgb(m1, m2, H) * 256,
  59. hue2rgb(m1, m2, H - 1 / 3) * 256,
  60. 1
  61. ];
  62. if(l == 4){ a[3] = c[3]; }
  63. return Color.fromArray(a, obj); // dojo.Color
  64. }
  65. }
  66. return null; // dojo.Color
  67. };
  68. var confine = function(c, low, high){
  69. // summary:
  70. // sanitize a color component by making sure it is a number,
  71. // and clamping it to valid values
  72. c = Number(c);
  73. return isNaN(c) ? high : c < low ? low : c > high ? high : c; // Number
  74. };
  75. Color.prototype.sanitize = function(){
  76. // summary: makes sure that the object has correct attributes
  77. var t = this;
  78. t.r = Math.round(confine(t.r, 0, 255));
  79. t.g = Math.round(confine(t.g, 0, 255));
  80. t.b = Math.round(confine(t.b, 0, 255));
  81. t.a = confine(t.a, 0, 1);
  82. return this; // dojo.Color
  83. };
  84. ColorExt.makeGrey = Color.makeGrey = function(/*Number*/ g, /*Number?*/ a){
  85. // summary: creates a greyscale color with an optional alpha
  86. return Color.fromArray([g, g, g, a]); // dojo.Color
  87. };
  88. // mixin all CSS3 named colors not already in _base, along with SVG 1.0 variant spellings
  89. lang.mixin(Color.named, {
  90. "aliceblue": [240,248,255],
  91. "antiquewhite": [250,235,215],
  92. "aquamarine": [127,255,212],
  93. "azure": [240,255,255],
  94. "beige": [245,245,220],
  95. "bisque": [255,228,196],
  96. "blanchedalmond": [255,235,205],
  97. "blueviolet": [138,43,226],
  98. "brown": [165,42,42],
  99. "burlywood": [222,184,135],
  100. "cadetblue": [95,158,160],
  101. "chartreuse": [127,255,0],
  102. "chocolate": [210,105,30],
  103. "coral": [255,127,80],
  104. "cornflowerblue": [100,149,237],
  105. "cornsilk": [255,248,220],
  106. "crimson": [220,20,60],
  107. "cyan": [0,255,255],
  108. "darkblue": [0,0,139],
  109. "darkcyan": [0,139,139],
  110. "darkgoldenrod": [184,134,11],
  111. "darkgray": [169,169,169],
  112. "darkgreen": [0,100,0],
  113. "darkgrey": [169,169,169],
  114. "darkkhaki": [189,183,107],
  115. "darkmagenta": [139,0,139],
  116. "darkolivegreen": [85,107,47],
  117. "darkorange": [255,140,0],
  118. "darkorchid": [153,50,204],
  119. "darkred": [139,0,0],
  120. "darksalmon": [233,150,122],
  121. "darkseagreen": [143,188,143],
  122. "darkslateblue": [72,61,139],
  123. "darkslategray": [47,79,79],
  124. "darkslategrey": [47,79,79],
  125. "darkturquoise": [0,206,209],
  126. "darkviolet": [148,0,211],
  127. "deeppink": [255,20,147],
  128. "deepskyblue": [0,191,255],
  129. "dimgray": [105,105,105],
  130. "dimgrey": [105,105,105],
  131. "dodgerblue": [30,144,255],
  132. "firebrick": [178,34,34],
  133. "floralwhite": [255,250,240],
  134. "forestgreen": [34,139,34],
  135. "gainsboro": [220,220,220],
  136. "ghostwhite": [248,248,255],
  137. "gold": [255,215,0],
  138. "goldenrod": [218,165,32],
  139. "greenyellow": [173,255,47],
  140. "grey": [128,128,128],
  141. "honeydew": [240,255,240],
  142. "hotpink": [255,105,180],
  143. "indianred": [205,92,92],
  144. "indigo": [75,0,130],
  145. "ivory": [255,255,240],
  146. "khaki": [240,230,140],
  147. "lavender": [230,230,250],
  148. "lavenderblush": [255,240,245],
  149. "lawngreen": [124,252,0],
  150. "lemonchiffon": [255,250,205],
  151. "lightblue": [173,216,230],
  152. "lightcoral": [240,128,128],
  153. "lightcyan": [224,255,255],
  154. "lightgoldenrodyellow": [250,250,210],
  155. "lightgray": [211,211,211],
  156. "lightgreen": [144,238,144],
  157. "lightgrey": [211,211,211],
  158. "lightpink": [255,182,193],
  159. "lightsalmon": [255,160,122],
  160. "lightseagreen": [32,178,170],
  161. "lightskyblue": [135,206,250],
  162. "lightslategray": [119,136,153],
  163. "lightslategrey": [119,136,153],
  164. "lightsteelblue": [176,196,222],
  165. "lightyellow": [255,255,224],
  166. "limegreen": [50,205,50],
  167. "linen": [250,240,230],
  168. "magenta": [255,0,255],
  169. "mediumaquamarine": [102,205,170],
  170. "mediumblue": [0,0,205],
  171. "mediumorchid": [186,85,211],
  172. "mediumpurple": [147,112,219],
  173. "mediumseagreen": [60,179,113],
  174. "mediumslateblue": [123,104,238],
  175. "mediumspringgreen": [0,250,154],
  176. "mediumturquoise": [72,209,204],
  177. "mediumvioletred": [199,21,133],
  178. "midnightblue": [25,25,112],
  179. "mintcream": [245,255,250],
  180. "mistyrose": [255,228,225],
  181. "moccasin": [255,228,181],
  182. "navajowhite": [255,222,173],
  183. "oldlace": [253,245,230],
  184. "olivedrab": [107,142,35],
  185. "orange": [255,165,0],
  186. "orangered": [255,69,0],
  187. "orchid": [218,112,214],
  188. "palegoldenrod": [238,232,170],
  189. "palegreen": [152,251,152],
  190. "paleturquoise": [175,238,238],
  191. "palevioletred": [219,112,147],
  192. "papayawhip": [255,239,213],
  193. "peachpuff": [255,218,185],
  194. "peru": [205,133,63],
  195. "pink": [255,192,203],
  196. "plum": [221,160,221],
  197. "powderblue": [176,224,230],
  198. "rosybrown": [188,143,143],
  199. "royalblue": [65,105,225],
  200. "saddlebrown": [139,69,19],
  201. "salmon": [250,128,114],
  202. "sandybrown": [244,164,96],
  203. "seagreen": [46,139,87],
  204. "seashell": [255,245,238],
  205. "sienna": [160,82,45],
  206. "skyblue": [135,206,235],
  207. "slateblue": [106,90,205],
  208. "slategray": [112,128,144],
  209. "slategrey": [112,128,144],
  210. "snow": [255,250,250],
  211. "springgreen": [0,255,127],
  212. "steelblue": [70,130,180],
  213. "tan": [210,180,140],
  214. "thistle": [216,191,216],
  215. "tomato": [255,99,71],
  216. "turquoise": [64,224,208],
  217. "violet": [238,130,238],
  218. "wheat": [245,222,179],
  219. "whitesmoke": [245,245,245],
  220. "yellowgreen": [154,205,50]
  221. });
  222. return Color;
  223. });