]> git.wh0rd.org - tt-rss.git/blobdiff - lib/dojo/colors.js
build custom layer of Dojo to speed up loading of tt-rss (refs #293)
[tt-rss.git] / lib / dojo / colors.js
index a5b0da7fd483606e23ed8aa639735322bda1e004..1f41dc3c7f0c47c36178457d7d50a27e52126f13 100644 (file)
 */
 
 
-if(!dojo._hasResource["dojo.colors"]){
-dojo._hasResource["dojo.colors"]=true;
+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(){
-var _1=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(_2,_3){
-var m=_2.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)=="%"){
-a=dojo.map(c,function(x){
-return parseFloat(x)*2.56;
-});
-if(l==4){
-a[3]=c[3];
-}
-return dojo.colorFromArray(a,_3);
-}
-return dojo.colorFromArray(c,_3);
-}
-if((t=="hsl"&&l==3)||(t=="hsla"&&l==4)){
-var H=((parseFloat(c[0])%360)+360)%360/360,S=parseFloat(c[1])/100,L=parseFloat(c[2])/100,m2=L<=0.5?L*(S+1):L+S-L*S,m1=2*L-m2;
-a=[_1(m1,m2,H+1/3)*256,_1(m1,m2,H)*256,_1(m1,m2,H-1/3)*256,1];
-if(l==4){
-a[3]=c[3];
-}
-return dojo.colorFromArray(a,_3);
-}
+
+//TODO: this module appears to break naming conventions
+
+/*=====
+dojo.colors = {
+       // summary: Color utilities
 }
-return null;
-};
-var _4=function(c,_5,_6){
-c=Number(c);
-return isNaN(c)?_6:c<_5?_5:c>_6?_6:c;
-};
-dojo.Color.prototype.sanitize=function(){
-var t=this;
-t.r=Math.round(_4(t.r,0,255));
-t.g=Math.round(_4(t.g,0,255));
-t.b=Math.round(_4(t.b,0,255));
-t.a=_4(t.a,0,1);
-return this;
-};
+=====*/
+
+(function(){
+       // 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;
+       };
+       
+       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], 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 = 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(g,a){
-return dojo.colorFromArray([g,g,g,a]);
+
+
+dojo.colors.makeGrey = function(/*Number*/ g, /*Number?*/ a){
+       // summary: creates a greyscale color with an optional alpha
+       return dojo.colorFromArray([g, g, g, a]);
 };
-dojo.mixin(dojo.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],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]});
+
+// mixin all CSS3 named colors not already in _base, along with SVG 1.0 variant spellings
+dojo.mixin(dojo.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],
+       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]
+});
+
 }