diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-03-16 21:53:42 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-03-16 22:51:55 +0100 |
| commit | c6557f5e8778dc7adf867c74b30c8cbe5951be66 (patch) | |
| tree | 57e0c7a2e4da960f880feb8b874c68a62e73a319 | |
| parent | 1b68cf418d8a3b97a68b46faf09d3dd84e8dd3ed (diff) | |
| download | vis-c6557f5e8778dc7adf867c74b30c8cbe5951be66.tar.gz vis-c6557f5e8778dc7adf867c74b30c8cbe5951be66.tar.xz | |
ui: further cleanup display code
| -rw-r--r-- | ui-terminal-curses.c | 6 | ||||
| -rw-r--r-- | ui-terminal-vt100.c | 4 | ||||
| -rw-r--r-- | ui-terminal.c | 49 | ||||
| -rw-r--r-- | ui.h | 1 | ||||
| -rw-r--r-- | vis.c | 3 |
5 files changed, 23 insertions, 40 deletions
diff --git a/ui-terminal-curses.c b/ui-terminal-curses.c index e060c10..849c617 100644 --- a/ui-terminal-curses.c +++ b/ui-terminal-curses.c @@ -235,9 +235,9 @@ static void ui_curses_clear(UiTerm *tui) { clear(); } -static void ui_curses_resize(UiTerm *tui, int width, int height) { - resizeterm(height, width); - wresize(stdscr, height, width); +static bool ui_curses_resize(UiTerm *tui, int width, int height) { + return resizeterm(height, width) == OK && + wresize(stdscr, height, width) == OK; } static void ui_curses_save(UiTerm *tui) { diff --git a/ui-terminal-vt100.c b/ui-terminal-vt100.c index 85c1f2e..e786492 100644 --- a/ui-terminal-vt100.c +++ b/ui-terminal-vt100.c @@ -166,7 +166,9 @@ static void ui_vt100_blit(UiTerm *tui) { static void ui_vt100_clear(UiTerm *tui) { } -static void ui_vt100_resize(UiTerm *tui, int width, int height) { } +static bool ui_vt100_resize(UiTerm *tui, int width, int height) { + return true; +} static void ui_vt100_save(UiTerm *tui) { cursor_visible(true); diff --git a/ui-terminal.c b/ui-terminal.c index fd8e126..0f341e5 100644 --- a/ui-terminal.c +++ b/ui-terminal.c @@ -98,7 +98,6 @@ static void ui_window_move(UiTermWin *win, int x, int y) { win->y = y; } -/* Convert color from string. */ static bool color_fromstring(UiTerm *ui, CellColor *color, const char *s) { if (!s) @@ -122,7 +121,7 @@ static bool color_fromstring(UiTerm *ui, CellColor *color, const char *s) return true; } - struct { + static const struct { const char *name; CellColor color; } color_names[] = { @@ -345,11 +344,11 @@ static void ui_draw(Ui *ui) { debug("ui-draw\n"); UiTerm *tui = (UiTerm*)ui; ui_arrange(ui, tui->layout); - for (UiTermWin *win = tui->windows; win; win = win->next) ui_window_draw((UiWin*)win); if (tui->info[0]) ui_draw_string(tui, 0, tui->height-1, tui->info, NULL, UI_STYLE_INFO); + ui_term_backend_blit(tui); } static void ui_redraw(Ui *ui) { @@ -359,44 +358,33 @@ static void ui_redraw(Ui *ui) { view_dirty(win->win->view); } -static bool ui_resize_to(Ui *ui, int width, int height) { +static void ui_resize(Ui *ui) { UiTerm *tui = (UiTerm*)ui; + struct winsize ws; + int width = 80, height = 24; + + if (ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) != -1) { + width = ws.ws_col; + height = ws.ws_row; + } + width = MAX(width, 1); width = MIN(width, MAX_WIDTH); height = MAX(height, 1); height = MIN(height, MAX_HEIGHT); - ui_term_backend_resize(tui, width, height); + if (!ui_term_backend_resize(tui, width, height)) + return; + size_t size = width*height*sizeof(Cell); if (size > tui->cells_size) { Cell *cells = realloc(tui->cells, size); if (!cells) - return false; + return; tui->cells_size = size; tui->cells = cells; } tui->width = width; tui->height = height; - ui_draw(ui); - return true; -} - -static void ui_resize(Ui *ui) { - struct winsize ws; - int width = 80, height = 24; - - if (ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) != -1) { - width = ws.ws_col; - height = ws.ws_row; - } - - ui_resize_to(ui, width, height); -} - -static void ui_update(Ui *ui) { - debug("ui-doupdate\n"); - UiTerm *tui = (UiTerm*)ui; - ui_draw(ui); - ui_term_backend_blit(tui); } static void ui_window_free(UiWin *w) { @@ -448,7 +436,6 @@ static void ui_window_options_set(UiWin *w, enum UiOption options) { win->next = NULL; } } - ui_draw((Ui*)win->ui); } @@ -566,15 +553,12 @@ static void ui_info(Ui *ui, const char *msg, va_list ap) { UiTerm *tui = (UiTerm*)ui; ui_draw_line(tui, 0, tui->height-1, ' ', UI_STYLE_INFO); vsnprintf(tui->info, sizeof(tui->info), msg, ap); - ui_draw(ui); } static void ui_info_hide(Ui *ui) { UiTerm *tui = (UiTerm*)ui; - if (tui->info[0]) { + if (tui->info[0]) tui->info[0] = '\0'; - ui_draw(ui); - } } static TermKey *ui_termkey_new(int fd) { @@ -700,7 +684,6 @@ Ui *ui_term_new(void) { .suspend = ui_suspend, .resume = ui_resume, .resize = ui_resize, - .update = ui_update, .window_new = ui_window_new, .window_free = ui_window_free, .window_focus = ui_window_focus, @@ -95,7 +95,6 @@ struct Ui { void (*arrange)(Ui*, enum UiLayout); void (*draw)(Ui*); void (*redraw)(Ui*); - void (*update)(Ui*); void (*suspend)(Ui*); void (*resume)(Ui*); bool (*getkey)(Ui*, TermKeyKey*); @@ -589,7 +589,6 @@ int vis_window_height_get(const Win *win) { void vis_draw(Vis *vis) { for (Win *win = vis->windows; win; win = win->next) view_draw(win->view); - vis->ui->draw(vis->ui); } void vis_redraw(Vis *vis) { @@ -597,7 +596,7 @@ void vis_redraw(Vis *vis) { } void vis_update(Vis *vis) { - vis->ui->update(vis->ui); + vis->ui->draw(vis->ui); } void vis_suspend(Vis *vis) { |
