Subversion Repositories Applications.papyrus

Rev

Blame | Last modification | View Log | RSS feed

if(!dojo._hasResource["dojo.colors"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojo.colors"] = true;
dojo.provide("dojo.colors");

(function(){
        // this is a standard convertion 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;
        };
        
        dojo.colorFromRgb = function(/*String*/ color, /*dojo.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];
                        if((t == "rgb" && l == 3) || (t == "rgba" && l == 4)){
                                var r = c[0];
                                if(r.charAt(r.length - 1) == "%"){
                                        // 3 rgb percentage values
                                        var a = dojo.map(c, function(x){
                                                return parseFloat(x) * 2.56;
                                        });
                                        if(l == 4){ a[3] = c[3]; }
                                        return dojo.colorFromArray(a, obj);     // dojo.Color
                                }
                                return dojo.colorFromArray(c, obj);     // dojo.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 dojo.colorFromArray(a, obj);     // dojo.Color
                        }
                }
                return null;    // dojo.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
        };
        
        dojo.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.Color
        };
})();


dojo.colors.makeGrey = function(/*Number*/ g, /*Number?*/ a){
        // summary: creates a greyscale color with an optional alpha
        return dojo.colorFromArray([g, g, g, a]);
};


// mixin all CSS3 named colors not already in _base, along with SVG 1.0 variant spellings
dojo.Color.named = dojo.mixin({
        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],
        transparent: [0, 0, 0, 0],
        turquoise:      [64,224,208],
        violet: [238,130,238],
        wheat:  [245,222,179],
        whitesmoke:     [245,245,245],
        yellowgreen:    [154,205,50]
}, dojo.Color.named);

}