Handle bold, italic, underline

master
Curtis McEnroe 2018-08-03 14:13:41 -04:00
parent c383f9f3a7
commit 0a1528796b
No known key found for this signature in database
GPG Key ID: CEA2F97ADCFCD77C
1 changed files with 22 additions and 2 deletions

24
chat.c
View File

@ -75,15 +75,35 @@ static void uiDraw(void) {
doupdate(); doupdate();
} }
static void uiAdd(WINDOW *win, const char *str) {
attr_t attrs = A_NORMAL;
short pair = 0;
for (;;) {
size_t cc = strcspn(str, "\x02\x03\x1D\x1F");
wattr_set(win, attrs, pair, NULL);
waddnstr(win, str, cc);
if (!str[cc]) break;
switch (str[cc]) {
break; case 0x02: attrs ^= A_BOLD;
break; case 0x03: // TODO
break; case 0x1D: attrs ^= A_ITALIC;
break; case 0x1F: attrs ^= A_UNDERLINE;
}
str = &str[cc + 1];
}
}
static void uiTopic(const char *topic) { static void uiTopic(const char *topic) {
wmove(ui.topic, 0, 0); wmove(ui.topic, 0, 0);
wclrtoeol(ui.topic); wclrtoeol(ui.topic);
waddnstr(ui.topic, topic, COLS); uiAdd(ui.topic, topic);
} }
static void uiChat(const char *line) { static void uiChat(const char *line) {
waddch(ui.chat, '\n'); waddch(ui.chat, '\n');
waddstr(ui.chat, line); uiAdd(ui.chat, line);
} }
static void uiFmt(const char *format, ...) { static void uiFmt(const char *format, ...) {
char *buf; char *buf;
va_list ap; va_list ap;