Mercurial > ~mikael > mcabber > hg
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] = ' '; |