Themes can define a specific lightness of nick colours
authorNick Fisher <spadgos@gmail.com>
Tue, 6 Jan 2015 10:15:39 +0000 (11:15 +0100)
committerNick Fisher <spadgos@gmail.com>
Tue, 6 Jan 2015 10:15:39 +0000 (11:15 +0100)
client/assets/themes/cli/theme.json
client/src/views/channel.js

index a05c6829e08f90a91214691aba41b1ddeaa470d7..387d37647e1e34df3c712d0bd3c9772dee4887b5 100644 (file)
@@ -1,5 +1,5 @@
 {
        "name": "CLI",
        "thumbnail_colour": "#222",
-       "dark": true
+       "nick_lightness": 60
 }
index 6d521d398017a81bbc492b7653034757af75a09b..8a5573268211b695cfe3b9b5e71d54f574e91cc4 100644 (file)
@@ -244,16 +244,22 @@ _kiwi.view.Channel = _kiwi.view.Panel.extend({
 
     // Sgnerate a css style for a nick
     getNickStyles: function(nick) {
-        var ret, colour, nick_int = 0, rgb, isDark;
+        var ret, colour, nick_int = 0, rgb, nick_lightness;
 
         // Get a colour from a nick (Method based on IRSSIs nickcolor.pl)
         _.map(nick.split(''), function (i) { nick_int += i.charCodeAt(0); });
 
-        isDark = (_.find(_kiwi.app.themes, function (theme) {
+        nick_lightness = (_.find(_kiwi.app.themes, function (theme) {
             return theme.name.toLowerCase() === _kiwi.global.settings.get('theme').toLowerCase();
-        }) || {}).dark;
+        }) || {}).nick_lightness;
 
-        rgb = hsl2rgb(nick_int % 255, 70, isDark ? 60 : 35);
+        if (typeof nick_lightness !== 'number') {
+            nick_lightness = 35;
+        } else {
+            nick_lightness = Math.max(0, Math.min(100, nick_lightness));
+        }
+
+        rgb = hsl2rgb(nick_int % 255, 70, nick_lightness);
         rgb = rgb[2] | (rgb[1] << 8) | (rgb[0] << 16);
         colour = '#' + rgb.toString(16);