]>
jfr.im git - irc/quakenet/qwebirc.git/blob - js/ui/colour.js
1 qwebirc
.ui
.Colourise = function(line
, entity
, execfn
, cmdfn
, window
) {
7 var autoNickColour
= false;
10 var xline
= line
.split("");
11 var element
= document
.createElement("span");
13 entity
.addClass("colourline");
16 return x
>= '0' && x
<= '9';
19 function parseColours(xline
, i
) {
20 if(!isNum(xline
[i
+ 1])) {
26 if(isNum(xline
[i
+ 1])) {
27 fg
= parseInt(xline
[i
] + xline
[i
+ 1]);
30 fg
= parseInt(xline
[i
]);
32 if(xline
[i
+ 1] != ",")
34 if(!isNum(xline
[i
+ 2]))
38 if(isNum(xline
[i
+ 1])) {
39 bg
= parseInt(xline
[i
] + xline
[i
+ 1]);
42 bg
= parseInt(xline
[i
]);
47 function emitEndToken() {
52 data
= qwebirc
.ui
.urlificate(element
, o
, execfn
, cmdfn
, window
);
55 element
.appendChild(document
.createTextNode(o
));
57 entity
.appendChild(element
);
60 element
= document
.createElement("span");
64 function emitStartToken() {
70 classes
.push("Xc" + fg
);
72 classes
.push("Xbc" + bg
);
79 element
.className
= classes
.join(" ");
82 var nickColouring
= window
.parentObject
.uiOptions
.NICK_COLOURS
; /* HACK */
83 var capturingNick
= false;
84 for(var i
=0;i
<xline
.length
;i
++) {
98 autoNickColour
= true;
99 var e
= emitStartToken();
100 var text
= emitEndToken();
102 var c
= text
.toHSBColour(window
.client
);
104 e
.style
.color
= c
.rgbToHex();
105 capturingNick
= autoNickColour
= false;
109 } else if(lc
== "\x00") {
119 } else if(lc
== "\x1F") {
122 underline
= !underline
;
125 } else if(lc
== "\x1D") {
131 } else if(lc
== "\x0F") {
139 } else if(lc
== "\x03") {
142 i
= parseColours(xline
, i
);
157 String
.prototype.toHSBColour = function(client
) {
158 var lower
= client
.toIRCLower(client
.stripPrefix(this));
159 if(lower
== client
.lowerNickname
)
163 for(var i
=0;i
<lower
.length
;i
++)
164 hash
= 31 * hash
+ lower
.charCodeAt(i
);
166 var hue
= Math
.abs(hash
) % 360;
168 return new Color([hue
, 70, 60], "hsb");