/*
DynAPI Distribution
dynapi.functions.Color extension
*/
var f = dynapi.functions;
f.Color = Color = {}; // used by dynapi.library
// Color Functions ---------------------------
f.DecToHex = function(val){
lo=val%16;
val-=lo;
lo+=48;
if (lo>57) lo+=7;
hi=val/16;
hi+=48;
if (hi>57) hi+=7;
return String.fromCharCode(hi,lo);
};
f.getColor = function(r,g,b) {
return '#'+dynapi.functions.DecToHex(r)+dynapi.functions.DecToHex(g)+dynapi.functions.DecToHex(b);
};
f.getRandomColor = function() {
var s = '';
for (var i=0;i<3;i++) s += dynapi.functions.DecToHex(Math.floor(255*Math.random()));
return s;
};
f.createRedPal = function(pal) {
var r=g=b=0;
for (var i=0; i<256; i++){
pal[i]=dynapi.functions.getColor(r,g,b);
r+=8;
if (r>255) { r=255; g+=6; b+=2; }
if (g>255) { g=255; b+=2; }
if (b>255) { b=255; }
}
};
f.createGrayPal = function(pal) {
var r=0;
for (var i=0; i<256; i++){
pal[i]=dynapi.functions.getColor(r,r,r);
r+=4;
if (r>255) { r=255; }
}
};
f.createBluePal = function(pal){
var r=g=b=0;
for (var i=0; i<256; i++){
pal[i]=dynapi.functions.getColor(r,g,b);
b+=6;
if (b>255) { b=255; g+=2; }
if (g>255) { g=255; r+=2; }
}
};
f.createGreenPal = function(pal) {
var r=g=b=0;
for (var i=0; i<256; i++){
pal[i]=dynapi.functions.getColor(r,g,b);
g+=6;
if (g>255) { g=255; b+=2; }
if (b>255) { b=255; r+=2; }
}
};
f.fadeColor = function(from, to, percent){
if(!from || !to) return;
if(percent<0) return from;
else if(percent>100) to;
if(from.substring(0,1)!='#') from='#'+from;
if(to.substring(0,1)!='#') to='#'+to;
from = {
red:parseInt(from.substring(1,3),16),
green:parseInt(from.substring(3,5),16),
blue:parseInt(from.substring(5,7),16)
}
to = {
red:parseInt(to.substring(1,3),16),
green:parseInt(to.substring(3,5),16),
blue:parseInt(to.substring(5,7),16)
}
var r=from.red+Math.round((percent/100)*(to.red-from.red));
var g=from.green+Math.round((percent/100)*(to.green-from.green));
var b=from.blue+Math.round((percent/100)*(to.blue-from.blue));
r = (r < 16 ? '0' : '') + r.toString(16);
g = (g < 16 ? '0' : '') + g.toString(16);
b = (b < 16 ? '0' : '') + b.toString(16);
return '#' + r + g + b;
};