about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-08-03 14:13:41 -0400
committerJune McEnroe <june@causal.agency>2018-08-03 14:18:14 -0400
commit0a1528796bf92a2fcbb2246ec90f057f9d0ea7d4 (patch)
tree58bd2bcd147893e3f1b5a9413650729a25948ff7
parentAdd prift function for "prefix shift" (diff)
downloadcatgirl-0a1528796bf92a2fcbb2246ec90f057f9d0ea7d4.tar.gz
catgirl-0a1528796bf92a2fcbb2246ec90f057f9d0ea7d4.zip
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;
w=1'>Add The Stone SkyJune McEnroe 2020-03-08Publish "How I Relay Chat"June McEnroe 2020-03-03Don't use $ inside $(())June McEnroe 2020-03-03Remove setoptJune McEnroe 2020-03-03Use getopts in shell scriptsJune McEnroe WTF why did no one tell me about this? 2020-02-27Style %T outside of Rs in italicJune McEnroe 2020-02-26Add Fierce Femmes and Notorious LiarsJune McEnroe 2020-02-23Add This Is How You Lose the Time WarJune McEnroe 2020-02-22Add See Ya LaterJune McEnroe 2020-02-20Remove wiki scriptJune McEnroe Wikipedia seems to have removed the one-sentence extracts from the opensearch results. Too bad. It's not a wiki script, what we need is a command that fetches single-sentence summaries of articles on Wikipedia. 2020-02-19Add The Obelisk GateJune McEnroe 2020-02-17Add Four Tet — HandsJune McEnroe One from the cafe that caught my attention. 2020-02-12Simplify macOS notify-sendJune McEnroe 2020-02-12Add imbox and notemap to pageJune McEnroe 2020-02-12Collapse simple linksJune McEnroe 2020-02-12Move catgirl up the pageJune McEnroe 2020-02-12Update catgirl pty grabJune McEnroe 2020-02-12Link to cgit /about pages where appropriateJune McEnroe 2020-02-11Separate LINKS from BINS for html to workJune McEnroe 2020-02-11Add margin to Bl-bullet itemsJune McEnroe 2020-02-10Match URLs inside parens or with paired parens insideJune McEnroe 2020-02-10Duplicate effective URL before passing it back to curlJune McEnroe Apparently sometimes it didn't like receiving its own internal storage to parse again. Understandable. 2020-02-09Add To Be Taught, If FortunateJune McEnroe 2020-02-04Add The Future of Another TimelineJune McEnroe Wow. One of the best I've read. 2020-01-31Reorganize the Makefile for the umpteenth timeJune McEnroe Broke out LDLIBS for each bin, and made everything more uniform. 2020-01-28Change scout sensitivity to 1.4June McEnroe idk it seems to work. 2020-01-28Import shows.txtJune McEnroe