comparison mcabber/src/screen.c @ 1510:f6d4e20b9caa

MUC nickname colors depend on nicknames now MUC nick colors were chosen randomly before. Now they are generated using the simplest algorithm: the sum of all nickname letters % total colors count.
author Maxim Vuets <maxim.vuets@gmail.com>
date Sun, 31 Aug 2008 17:40:00 +0200
parents 78137e986528
children e1c34d251e39
comparison
equal deleted inserted replaced
1508:86620c83123b 1510:f6d4e20b9caa
1099 typetmp = g_hash_table_lookup(muccolors, mucjid); 1099 typetmp = g_hash_table_lookup(muccolors, mucjid);
1100 if (typetmp) 1100 if (typetmp)
1101 type = *typetmp; 1101 type = *typetmp;
1102 } 1102 }
1103 g_free(mucjid); 1103 g_free(mucjid);
1104 // Need to generate some random color? 1104 // Need to generate a color for the specified nick?
1105 if ((type == MC_ALL) && (!nickcolors || 1105 if ((type == MC_ALL) && (!nickcolors ||
1106 !g_hash_table_lookup(nickcolors, line->text))) { 1106 !g_hash_table_lookup(nickcolors, line->text))) {
1107 char *snick, *mnick; 1107 char *snick, *mnick;
1108 nickcolor *nc; 1108 nickcolor *nc;
1109 const char *p = line->text;
1110 unsigned int nicksum = 0;
1109 snick = g_strdup(line->text); 1111 snick = g_strdup(line->text);
1110 mnick = g_strdup(line->text); 1112 mnick = g_strdup(line->text);
1111 nc = g_new(nickcolor, 1); 1113 nc = g_new(nickcolor, 1);
1112 ensure_string_htable(&nickcolors, NULL); 1114 ensure_string_htable(&nickcolors, NULL);
1113 nc->color = nickcols[random() % nickcolcount]; 1115 while (*p)
1116 nicksum += *p++;
1117 nc->color = nickcols[nicksum % nickcolcount];
1114 nc->manual = FALSE; 1118 nc->manual = FALSE;
1115 *snick = '<'; 1119 *snick = '<';
1116 snick[strlen(snick)-1] = '>'; 1120 snick[strlen(snick)-1] = '>';
1117 *mnick = '*'; 1121 *mnick = '*';
1118 mnick[strlen(mnick)-1] = ' '; 1122 mnick[strlen(mnick)-1] = ' ';