diff options
author | June McEnroe <june@causal.agency> | 2018-08-03 14:13:41 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2018-08-03 14:18:14 -0400 |
commit | 0a1528796bf92a2fcbb2246ec90f057f9d0ea7d4 (patch) | |
tree | 58bd2bcd147893e3f1b5a9413650729a25948ff7 | |
parent | Add prift function for "prefix shift" (diff) | |
download | catgirl-0a1528796bf92a2fcbb2246ec90f057f9d0ea7d4.tar.gz catgirl-0a1528796bf92a2fcbb2246ec90f057f9d0ea7d4.zip |
Handle bold, italic, underline
-rw-r--r-- | chat.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/chat.c b/chat.c index cea0f11..ae084ea 100644 --- a/chat.c +++ b/chat.c @@ -75,15 +75,35 @@ static void uiDraw(void) { 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) { wmove(ui.topic, 0, 0); wclrtoeol(ui.topic); - waddnstr(ui.topic, topic, COLS); + uiAdd(ui.topic, topic); } static void uiChat(const char *line) { waddch(ui.chat, '\n'); - waddstr(ui.chat, line); + uiAdd(ui.chat, line); } + static void uiFmt(const char *format, ...) { char *buf; va_list ap; |