diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2009-05-04 13:20:02 +0000 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2009-05-04 13:20:02 +0000 |
commit | fb543c7707a31d80dbdb039515d719e6f013a77a (patch) | |
tree | 5039e37b8e9f29ac7413bc9a09cad8975af745ef /screen-redraw.c | |
parent | 9164dd63e7f670d3bd6e5132b3d15969aff1d55f (diff) | |
download | rtmux-fb543c7707a31d80dbdb039515d719e6f013a77a.tar.gz rtmux-fb543c7707a31d80dbdb039515d719e6f013a77a.tar.bz2 rtmux-fb543c7707a31d80dbdb039515d719e6f013a77a.zip |
Use ACS for line drawing characters.
Diffstat (limited to 'screen-redraw.c')
-rw-r--r-- | screen-redraw.c | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/screen-redraw.c b/screen-redraw.c index 99db773b..6840d9eb 100644 --- a/screen-redraw.c +++ b/screen-redraw.c @@ -1,4 +1,4 @@ -/* $Id: screen-redraw.c,v 1.34 2009-04-02 21:08:13 nicm Exp $ */ +/* $Id: screen-redraw.c,v 1.35 2009-05-04 13:20:02 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -69,21 +69,39 @@ screen_redraw_screen(struct client *c) struct window_pane *wp; struct screen *s; u_int i, j, sx, sy; - int status; + int status, has_acs; + u_char choriz, cvert, cbackg; /* Get status line, er, status. */ status = options_get_number(&c->session->options, "status"); + /* Work out ACS characters. */ + if (tty_term_has(tty->term, TTYC_ACSC)) { + has_acs = 1; + choriz = tty_get_acs(tty, 'q'); + cvert = tty_get_acs(tty, 'x'); + cbackg = tty_get_acs(tty, '~'); + } else { + has_acs = 0; + choriz = '-'; + cvert = '|'; + cbackg = '.'; + } + /* Clear the screen. */ tty_reset(tty); + if (has_acs) + tty_putcode(tty, TTYC_SMACS); for (j = 0; j < tty->sy - status; j++) { for (i = 0; i < tty->sx; i++) { if (!screen_redraw_check_cell(c, i, j)) { tty_cursor(tty, i, j, 0, 0); - tty_putc(tty, '.'); + tty_putc(tty, cbackg); } } } + if (has_acs) + tty_putcode(tty, TTYC_RMACS); /* Draw the panes. */ TAILQ_FOREACH(wp, &w->panes, entry) { @@ -97,16 +115,18 @@ screen_redraw_screen(struct client *c) sy = wp->sy; /* Draw left and right borders. */ + if (has_acs) + tty_putcode(tty, TTYC_SMACS); if (wp->xoff > 0) { for (i = wp->yoff; i < wp->yoff + sy; i++) { tty_cursor(tty, wp->xoff - 1, i, 0, 0); - tty_putc(tty, '|'); + tty_putc(tty, cvert); } } if (wp->xoff + sx < tty->sx) { for (i = wp->yoff; i < wp->yoff + sy; i++) { tty_cursor(tty, wp->xoff + sx, i, 0, 0); - tty_putc(&c->tty, '|'); + tty_putc(&c->tty, cvert); } } @@ -114,13 +134,15 @@ screen_redraw_screen(struct client *c) if (wp->yoff > 0) { tty_cursor(tty, wp->xoff, wp->yoff - 1, 0, 0); for (i = 0; i < sx; i++) - tty_putc(tty, '-'); + tty_putc(tty, choriz); } if (wp->yoff + sy < tty->sy - status) { tty_cursor(tty, wp->xoff, wp->yoff + sy, 0, 0); for (i = 0; i < sx; i++) - tty_putc(tty, '-'); + tty_putc(tty, choriz); } + if (has_acs) + tty_putcode(tty, TTYC_RMACS); /* Draw the pane. */ screen_redraw_pane(c, wp); |