grid: attributes now track whether we've set a foreground/background color

This means we don't have to explicitly set the foreground/background
to the grid's default colors whenever we reset/clear a cell, and we
can instead simply memset() the entire cell to 0.

This also means the renderer has to get the default color when
rendering a cell without a foreground/background color set.
This commit is contained in:
Daniel Eklöf 2019-06-26 19:44:31 +02:00
parent 97420f13d8
commit 3a97fce6d0
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
4 changed files with 25 additions and 21 deletions

6
main.c
View file

@ -102,8 +102,10 @@ grid_render_update(struct context *c, struct buffer *buf, const struct damage *d
int width = c->term.grid.cell_width;
int height = c->term.grid.cell_height;
uint32_t foreground = cell->attrs.foreground;
uint32_t background = cell->attrs.background;
uint32_t foreground = cell->attrs.have_foreground
? cell->attrs.foreground : c->term.grid.foreground;
uint32_t background = cell->attrs.have_background
? cell->attrs.background : c->term.grid.background;
if (has_cursor) {
uint32_t swap = foreground;