Subversion Repositories wimsdev

Rev

Rev 20 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /*
  2.         DynAPI Distribution
  3.         dynapi.functions.Color extension
  4. */
  5.  
  6. var f = dynapi.functions;
  7. f.Color = Color = {}; // used by dynapi.library
  8.  
  9. // Color Functions ---------------------------
  10.  
  11. f.DecToHex = function(val){
  12.         lo=val%16;
  13.         val-=lo;
  14.         lo+=48;
  15.         if (lo>57) lo+=7;
  16.         hi=val/16;
  17.         hi+=48;
  18.         if (hi>57) hi+=7;
  19.         return String.fromCharCode(hi,lo);
  20. };
  21. f.getColor = function(r,g,b) {
  22.         return '#'+dynapi.functions.DecToHex(r)+dynapi.functions.DecToHex(g)+dynapi.functions.DecToHex(b);
  23. };
  24. f.getRandomColor = function() {
  25.         var s = '';
  26.         for (var i=0;i<3;i++) s += dynapi.functions.DecToHex(Math.floor(255*Math.random()));
  27.         return s;
  28. };
  29. f.createRedPal = function(pal) {
  30.         var r=g=b=0;
  31.         for (var i=0; i<256; i++){
  32.                 pal[i]=dynapi.functions.getColor(r,g,b);
  33.                 r+=8;
  34.                 if (r>255) { r=255; g+=6; b+=2; }
  35.                 if (g>255) { g=255; b+=2; }
  36.                 if (b>255) { b=255; }
  37.         }
  38. };
  39. f.createGrayPal = function(pal) {
  40.         var r=0;
  41.         for (var i=0; i<256; i++){
  42.                 pal[i]=dynapi.functions.getColor(r,r,r);
  43.                 r+=4;
  44.                 if (r>255) { r=255; }
  45.         }
  46. };
  47. f.createBluePal = function(pal){
  48.         var r=g=b=0;
  49.         for (var i=0; i<256; i++){
  50.                 pal[i]=dynapi.functions.getColor(r,g,b);
  51.                 b+=6;
  52.                 if (b>255) { b=255; g+=2; }
  53.                 if (g>255) { g=255; r+=2; }
  54.         }
  55. };
  56. f.createGreenPal = function(pal) {
  57.         var r=g=b=0;
  58.         for (var i=0; i<256; i++){
  59.                 pal[i]=dynapi.functions.getColor(r,g,b);
  60.                 g+=6;
  61.                 if (g>255) { g=255; b+=2; }
  62.                 if (b>255) { b=255; r+=2; }
  63.         }
  64. };
  65. f.fadeColor = function(from, to, percent){
  66.         if(!from || !to) return;
  67.         if(percent<0) return from;
  68.         else if(percent>100) to;
  69.  
  70.         if(from.substring(0,1)!='#') from='#'+from;
  71.         if(to.substring(0,1)!='#') to='#'+to;
  72.  
  73.         from = {
  74.                 red:parseInt(from.substring(1,3),16),
  75.                 green:parseInt(from.substring(3,5),16),
  76.                 blue:parseInt(from.substring(5,7),16)
  77.         }
  78.  
  79.         to = {
  80.                 red:parseInt(to.substring(1,3),16),
  81.                 green:parseInt(to.substring(3,5),16),
  82.                 blue:parseInt(to.substring(5,7),16)
  83.         }
  84.  
  85.         var r=from.red+Math.round((percent/100)*(to.red-from.red));
  86.         var g=from.green+Math.round((percent/100)*(to.green-from.green));
  87.         var b=from.blue+Math.round((percent/100)*(to.blue-from.blue));
  88.  
  89.         r = (r < 16 ? '0' : '') + r.toString(16);
  90.         g = (g < 16 ? '0' : '') + g.toString(16);
  91.         b = (b < 16 ? '0' : '') + b.toString(16);
  92.  
  93.         return '#' + r + g + b;
  94. };
  95.