]>
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() {
49 var data
= qwebirc
.ui
.urlificate(element
, out
.join(""), execfn
, cmdfn
, window
);
50 entity
.appendChild(element
);
53 element
= document
.createElement("span");
57 function emitStartToken() {
63 classes
.push("Xc" + fg
);
65 classes
.push("Xbc" + bg
);
70 element
.className
= classes
.join(" ");
73 var nickColouring
= window
.parentObject
.uiOptions
.NICK_COLOURS
; /* HACK */
74 var capturingNick
= false;
75 for(var i
=0;i
<xline
.length
;i
++) {
89 autoNickColour
= true;
90 var e
= emitStartToken();
91 var text
= emitEndToken();
93 var c
= text
.toHSBColour(window
.client
);
95 e
.style
.color
= c
.rgbToHex();
96 capturingNick
= autoNickColour
= false;
100 } else if(lc
== "\x00") {
110 } else if(lc
== "\x1F") {
113 underline
= !underline
;
116 } else if(lc
== "\x0F") {
123 } else if(lc
== "\x03") {
126 i
= parseColours(xline
, i
);
141 String
.prototype.toHSBColour = function(client
) {
142 var lower
= client
.toIRCLower(client
.stripPrefix(this));
143 if(lower
== client
.lowerNickname
)
147 for(var i
=0;i
<lower
.length
;i
++)
148 hash
= 31 * hash
+ lower
.charCodeAt(i
);
150 var hue
= Math
.abs(hash
) % 360;
152 return new Color([hue
, 70, 60], "hsb");