mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
render: implement 'reverse' attribute
This commit is contained in:
parent
7ec746e826
commit
5698d69890
1 changed files with 22 additions and 14 deletions
36
main.c
36
main.c
|
|
@ -101,24 +101,35 @@ 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;
|
||||
|
||||
if (has_cursor) {
|
||||
uint32_t swap = foreground;
|
||||
foreground = background;
|
||||
background = swap;
|
||||
}
|
||||
|
||||
if (cell->attrs.reverse) {
|
||||
uint32_t swap = foreground;
|
||||
foreground = background;
|
||||
background = swap;
|
||||
}
|
||||
|
||||
//LOG_DBG("cell %dx%d dirty: c=0x%02x (%c)",
|
||||
// row, col, cell->c[0], cell->c[0]);
|
||||
|
||||
double br = (double)((cell->attrs.background >> 24) & 0xff) / 255.0;
|
||||
double bg = (double)((cell->attrs.background >> 16) & 0xff) / 255.0;
|
||||
double bb = (double)((cell->attrs.background >> 8) & 0xff) / 255.0;
|
||||
double br = (double)((background >> 24) & 0xff) / 255.0;
|
||||
double bg = (double)((background >> 16) & 0xff) / 255.0;
|
||||
double bb = (double)((background >> 8) & 0xff) / 255.0;
|
||||
|
||||
double fr = (double)((cell->attrs.foreground >> 24) & 0xff) / 255.0;
|
||||
double fg = (double)((cell->attrs.foreground >> 16) & 0xff) / 255.0;
|
||||
double fb = (double)((cell->attrs.foreground >> 8) & 0xff) / 255.0;
|
||||
double fr = (double)((foreground >> 24) & 0xff) / 255.0;
|
||||
double fg = (double)((foreground >> 16) & 0xff) / 255.0;
|
||||
double fb = (double)((foreground >> 8) & 0xff) / 255.0;
|
||||
|
||||
cairo_scaled_font_t *font = attrs_to_font(c, &cell->attrs);
|
||||
cairo_set_scaled_font(buf->cairo, font);
|
||||
if (has_cursor)
|
||||
cairo_set_source_rgba(buf->cairo, fr, fg, fb, 1.0);
|
||||
else
|
||||
cairo_set_source_rgba(buf->cairo, br, bg, bb, 1.0);
|
||||
cairo_set_source_rgba(buf->cairo, br, bg, bb, 1.0);
|
||||
|
||||
/* Background */
|
||||
cairo_rectangle(buf->cairo, x, y, width, height);
|
||||
|
|
@ -141,10 +152,7 @@ grid_render_update(struct context *c, struct buffer *buf, const struct damage *d
|
|||
continue;
|
||||
}
|
||||
|
||||
if (has_cursor)
|
||||
cairo_set_source_rgba(buf->cairo, br, bg, bb, 1.0);
|
||||
else
|
||||
cairo_set_source_rgba(buf->cairo, fr, fg, fb, 1.0);
|
||||
cairo_set_source_rgba(buf->cairo, fr, fg, fb, 1.0);
|
||||
cairo_show_glyphs(buf->cairo, glyphs, num_glyphs);
|
||||
cairo_glyph_free(glyphs);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue