diff options
| author | Curtis McEnroe | 2018-08-03 14:13:41 -0400 | 
|---|---|---|
| committer | Curtis McEnroe | 2018-08-03 14:18:14 -0400 | 
| commit | 0a1528796bf92a2fcbb2246ec90f057f9d0ea7d4 (patch) | |
| tree | 58bd2bcd147893e3f1b5a9413650729a25948ff7 | |
| parent | c383f9f3a7c7f712b9183b49e4c554e5b9a6ad46 (diff) | |
Handle bold, italic, underline
| -rw-r--r-- | chat.c | 24 | 
1 files changed, 22 insertions, 2 deletions
| @@ -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; | 
