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 | }; |