diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-04-22 22:52:34 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-04-22 22:52:34 +0200 |
commit | 83d5c827b7a9d3206be9d68a34e59e291e2c5143 (patch) | |
tree | 35ad09a5d90e3870d3313dc7fd2d019c1e6d0be5 /sys/src/cmd/vt | |
parent | f80b35faca0eb1bc3b6f909c6fbd127e595d4859 (diff) |
vt: handle underline attribute
Diffstat (limited to 'sys/src/cmd/vt')
-rw-r--r-- | sys/src/cmd/vt/main.c | 12 |
1 files 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), |