Subversion Repositories wimsdev

Rev

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

Rev Author Line No. Line
20 reyssat 1
/*
2
        DynAPI Distribution
10534 obado 3
        dynapi.functions.Color extension
20 reyssat 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
};
10534 obado 21
f.getColor = function(r,g,b) {
20 reyssat 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;
10534 obado 69
 
20 reyssat 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
};