From 83d5c827b7a9d3206be9d68a34e59e291e2c5143 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 22 Apr 2017 22:52:34 +0200 Subject: vt: handle underline attribute --- sys/src/cmd/vt/main.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sys/src/cmd/vt/main.c b/sys/src/cmd/vt/main.c index e1658c083..763b43fba 100644 --- a/sys/src/cmd/vt/main.c +++ b/sys/src/cmd/vt/main.c @@ -340,6 +340,7 @@ drawscreen(void) uchar *ap, *cp; Image *c; Rune *rp; + Point p, q; draw(screen, screen->r, bgcolor, nil, ZP); @@ -370,9 +371,16 @@ drawscreen(void) ap = onscreena(x, y); cp = onscreenc(x, y); c = fgcol(*ap, *cp); - for(n = 1; x+n <= xmax && rp[n] != 0 && fgcol(ap[n], cp[n]) == c; n++) + for(n = 1; x+n <= xmax && rp[n] != 0 && fgcol(ap[n], cp[n]) == c + && (ap[n] ^ *ap) & TUnderline == 0; n++) ; - runestringn(screen, pt(x, y), c, ZP, font, rp, n); + p = pt(x, y); + q = runestringn(screen, p, c, ZP, font, rp, n); + if(*ap & TUnderline){ + p.y += font->ascent+1; + q.y += font->ascent+2; + draw(screen, Rpt(p, q), c, nil, ZP); + } } if(*onscreenr(x, y) == 0) runestringn(screen, pt(x, y), -- cgit v1.2.3