define("dojo/colors", ["./_base/kernel", "./_base/lang", "./_base/Color", "./_base/array"], function(dojo, lang, Color, ArrayUtil){ // module: // dojo/colors /*===== return { // summary: // Color utilities, extending Base dojo.Color }; =====*/ var ColorExt = {}; lang.setObject("dojo.colors", ColorExt); //TODO: this module appears to break naming conventions // this is a standard conversion prescribed by the CSS3 Color Module var hue2rgb = function(m1, m2, h){ if(h < 0){ ++h; } if(h > 1){ --h; } var h6 = 6 * h; if(h6 < 1){ return m1 + (m2 - m1) * h6; } if(2 * h < 1){ return m2; } if(3 * h < 2){ return m1 + (m2 - m1) * (2 / 3 - h) * 6; } return m1; }; // Override base Color.fromRgb with the impl in this module dojo.colorFromRgb = Color.fromRgb = function(/*String*/ color, /*dojo/_base/Color?*/ obj){ // summary: // get rgb(a) array from css-style color declarations // description: // this function can handle all 4 CSS3 Color Module formats: rgb, // rgba, hsl, hsla, including rgb(a) with percentage values. var m = color.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/); if(m){ var c = m[2].split(/\s*,\s*/), l = c.length, t = m[1], a; if((t == "rgb" && l == 3) || (t == "rgba" && l == 4)){ var r = c[0]; if(r.charAt(r.length - 1) == "%"){ // 3 rgb percentage values a = ArrayUtil.map(c, function(x){ return parseFloat(x) * 2.56; }); if(l == 4){ a[3] = c[3]; } return Color.fromArray(a, obj); // dojo/_base/Color } return Color.fromArray(c, obj); // dojo/_base/Color } if((t == "hsl" && l == 3) || (t == "hsla" && l == 4)){ // normalize hsl values var H = ((parseFloat(c[0]) % 360) + 360) % 360 / 360, S = parseFloat(c[1]) / 100, L = parseFloat(c[2]) / 100, // calculate rgb according to the algorithm // recommended by the CSS3 Color Module m2 = L <= 0.5 ? L * (S + 1) : L + S - L * S, m1 = 2 * L - m2; a = [ hue2rgb(m1, m2, H + 1 / 3) * 256, hue2rgb(m1, m2, H) * 256, hue2rgb(m1, m2, H - 1 / 3) * 256, 1 ]; if(l == 4){ a[3] = c[3]; } return Color.fromArray(a, obj); // dojo/_base/Color } } return null; // dojo/_base/Color }; var confine = function(c, low, high){ // summary: // sanitize a color component by making sure it is a number, // and clamping it to valid values c = Number(c); return isNaN(c) ? high : c < low ? low : c > high ? high : c; // Number }; Color.prototype.sanitize = function(){ // summary: // makes sure that the object has correct attributes var t = this; t.r = Math.round(confine(t.r, 0, 255)); t.g = Math.round(confine(t.g, 0, 255)); t.b = Math.round(confine(t.b, 0, 255)); t.a = confine(t.a, 0, 1); return this; // dojo/_base/Color }; ColorExt.makeGrey = Color.makeGrey = function(/*Number*/ g, /*Number?*/ a){ // summary: // creates a greyscale color with an optional alpha return Color.fromArray([g, g, g, a]); // dojo/_base/Color }; // mixin all CSS3 named colors not already in _base, along with SVG 1.0 variant spellings lang.mixin(Color.named, { "aliceblue": [240,248,255], "antiquewhite": [250,235,215], "aquamarine": [127,255,212], "azure": [240,255,255], "beige": [245,245,220], "bisque": [255,228,196], "blanchedalmond": [255,235,205], "blueviolet": [138,43,226], "brown": [165,42,42], "burlywood": [222,184,135], "cadetblue": [95,158,160], "chartreuse": [127,255,0], "chocolate": [210,105,30], "coral": [255,127,80], "cornflowerblue": [100,149,237], "cornsilk": [255,248,220], "crimson": [220,20,60], "cyan": [0,255,255], "darkblue": [0,0,139], "darkcyan": [0,139,139], "darkgoldenrod": [184,134,11], "darkgray": [169,169,169], "darkgreen": [0,100,0], "darkgrey": [169,169,169], "darkkhaki": [189,183,107], "darkmagenta": [139,0,139], "darkolivegreen": [85,107,47], "darkorange": [255,140,0], "darkorchid": [153,50,204], "darkred": [139,0,0], "darksalmon": [233,150,122], "darkseagreen": [143,188,143], "darkslateblue": [72,61,139], "darkslategray": [47,79,79], "darkslategrey": [47,79,79], "darkturquoise": [0,206,209], "darkviolet": [148,0,211], "deeppink": [255,20,147], "deepskyblue": [0,191,255], "dimgray": [105,105,105], "dimgrey": [105,105,105], "dodgerblue": [30,144,255], "firebrick": [178,34,34], "floralwhite": [255,250,240], "forestgreen": [34,139,34], "gainsboro": [220,220,220], "ghostwhite": [248,248,255], "gold": [255,215,0], "goldenrod": [218,165,32], "greenyellow": [173,255,47], "grey": [128,128,128], "honeydew": [240,255,240], "hotpink": [255,105,180], "indianred": [205,92,92], "indigo": [75,0,130], "ivory": [255,255,240], "khaki": [240,230,140], "lavender": [230,230,250], "lavenderblush": [255,240,245], "lawngreen": [124,252,0], "lemonchiffon": [255,250,205], "lightblue": [173,216,230], "lightcoral": [240,128,128], "lightcyan": [224,255,255], "lightgoldenrodyellow": [250,250,210], "lightgray": [211,211,211], "lightgreen": [144,238,144], "lightgrey": [211,211,211], "lightpink": [255,182,193], "lightsalmon": [255,160,122], "lightseagreen": [32,178,170], "lightskyblue": [135,206,250], "lightslategray": [119,136,153], "lightslategrey": [119,136,153], "lightsteelblue": [176,196,222], "lightyellow": [255,255,224], "limegreen": [50,205,50], "linen": [250,240,230], "magenta": [255,0,255], "mediumaquamarine": [102,205,170], "mediumblue": [0,0,205], "mediumorchid": [186,85,211], "mediumpurple": [147,112,219], "mediumseagreen": [60,179,113], "mediumslateblue": [123,104,238], "mediumspringgreen": [0,250,154], "mediumturquoise": [72,209,204], "mediumvioletred": [199,21,133], "midnightblue": [25,25,112], "mintcream": [245,255,250], "mistyrose": [255,228,225], "moccasin": [255,228,181], "navajowhite": [255,222,173], "oldlace": [253,245,230], "olivedrab": [107,142,35], "orange": [255,165,0], "orangered": [255,69,0], "orchid": [218,112,214], "palegoldenrod": [238,232,170], "palegreen": [152,251,152], "paleturquoise": [175,238,238], "palevioletred": [219,112,147], "papayawhip": [255,239,213], "peachpuff": [255,218,185], "peru": [205,133,63], "pink": [255,192,203], "plum": [221,160,221], "powderblue": [176,224,230], "rosybrown": [188,143,143], "royalblue": [65,105,225], "saddlebrown": [139,69,19], "salmon": [250,128,114], "sandybrown": [244,164,96], "seagreen": [46,139,87], "seashell": [255,245,238], "sienna": [160,82,45], "skyblue": [135,206,235], "slateblue": [106,90,205], "slategray": [112,128,144], "slategrey": [112,128,144], "snow": [255,250,250], "springgreen": [0,255,127], "steelblue": [70,130,180], "tan": [210,180,140], "thistle": [216,191,216], "tomato": [255,99,71], "turquoise": [64,224,208], "violet": [238,130,238], "wheat": [245,222,179], "whitesmoke": [245,245,245], "yellowgreen": [154,205,50] }); return Color; // TODO: return ColorExt, not Color });