]>
jfr.im git - irc/quakenet/qwebirc.git/blob - js/ui/colour.js
1 qwebirc
.ui
.Colourise = function(line
, entity
, execfn
, cmdfn
, window
) {
6 var autoNickColour
= false;
9 var xline
= line
.split("");
10 var element
= document
.createElement("span");
12 entity
.addClass("colourline");
15 return x
>= '0' && x
<= '9';
18 function parseColours(xline
, i
) {
19 if(!isNum(xline
[i
+ 1])) {
25 if(isNum(xline
[i
+ 1])) {
26 fg
= parseInt(xline
[i
] + xline
[i
+ 1]);
29 fg
= parseInt(xline
[i
]);
31 if(xline
[i
+ 1] != ",")
33 if(!isNum(xline
[i
+ 2]))
37 if(isNum(xline
[i
+ 1])) {
38 bg
= parseInt(xline
[i
] + xline
[i
+ 1]);
41 bg
= parseInt(xline
[i
]);
46 function emitEndToken() {
51 qwebirc
.ui
.urlificate(element
, o
, execfn
, cmdfn
, window
);
53 element
.appendChild(document
.createTextNode(o
));
55 entity
.appendChild(element
);
58 element
= document
.createElement("span");
62 function emitStartToken() {
68 classes
.push("Xc" + fg
);
70 classes
.push("Xbc" + bg
);
75 element
.className
= classes
.join(" ");
78 var nickColouring
= window
.parentObject
.uiOptions
.NICK_COLOURS
; /* HACK */
79 var capturingNick
= false;
80 for(var i
=0;i
<xline
.length
;i
++) {
94 autoNickColour
= true;
95 var e
= emitStartToken();
96 var text
= emitEndToken();
98 var c
= text
.toHSBColour(window
.client
);
100 e
.style
.color
= c
.rgbToHex();
101 capturingNick
= autoNickColour
= false;
105 } else if(lc
== "\x00") {
115 } else if(lc
== "\x1F") {
118 underline
= !underline
;
121 } else if(lc
== "\x0F") {
128 } else if(lc
== "\x03") {
131 i
= parseColours(xline
, i
);
146 String
.prototype.toHSBColour = function(client
) {
147 var lower
= client
.toIRCLower(client
.stripPrefix(this));
148 if(lower
== client
.lowerNickname
)
152 for(var i
=0;i
<lower
.length
;i
++)
153 hash
= 31 * hash
+ lower
.charCodeAt(i
);
155 var hue
= Math
.abs(hash
) % 360;
157 return new Color([hue
, 70, 60], "hsb");