summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCurtis McEnroe2018-08-03 14:13:41 -0400
committerCurtis McEnroe2018-08-03 14:18:14 -0400
commit0a1528796bf92a2fcbb2246ec90f057f9d0ea7d4 (patch)
tree58bd2bcd147893e3f1b5a9413650729a25948ff7
parentc383f9f3a7c7f712b9183b49e4c554e5b9a6ad46 (diff)
Handle bold, italic, underline
-rw-r--r--chat.c24
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;