diff options
author | nicm <nicm> | 2016-01-29 11:13:56 +0000 |
---|---|---|
committer | nicm <nicm> | 2016-01-29 11:13:56 +0000 |
commit | 427b8204268af5548d09b830e101c59daa095df9 (patch) | |
tree | 644b41d9f4ffa6c7f70be0b64de37d7c2170876f /grid.c | |
parent | b5b5221c13ded5b141fa35f60c707c9c403b83a6 (diff) | |
download | rtmux-427b8204268af5548d09b830e101c59daa095df9.tar.gz rtmux-427b8204268af5548d09b830e101c59daa095df9.tar.bz2 rtmux-427b8204268af5548d09b830e101c59daa095df9.zip |
Support for RGB colour, using the extended cell mechanism to avoid
wasting unnecessary space. The 'Tc' flag must be set in the external
TERM entry (using terminal-overrides or a custom terminfo entry), if not
tmux will map to the closest of the 256 or 16 colour palettes.
Mostly from Suraj N Kurapati, based on a diff originally by someone else.
Diffstat (limited to 'grid.c')
-rw-r--r-- | grid.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -37,7 +37,7 @@ /* Default grid cell data. */ const struct grid_cell grid_default_cell = { - 0, 0, 8, 8, { { ' ' }, 0, 1, 1 } + 0, 0, { .fg = 8 }, { .bg = 8 }, { { ' ' }, 0, 1, 1 } }; const struct grid_cell_entry grid_default_entry = { 0, { .data = { 0, 8, 8, ' ' } } @@ -284,6 +284,7 @@ grid_set_cell(struct grid *gd, u_int px, u_int py, const struct grid_cell *gc) struct grid_line *gl; struct grid_cell_entry *gce; struct grid_cell *gcp; + int extended; if (grid_check_y(gd, py) != 0) return; @@ -293,8 +294,12 @@ grid_set_cell(struct grid *gd, u_int px, u_int py, const struct grid_cell *gc) gl = &gd->linedata[py]; gce = &gl->celldata[px]; - if ((gce->flags & GRID_FLAG_EXTENDED) || gc->data.size != 1 || - gc->data.width != 1) { + extended = (gce->flags & GRID_FLAG_EXTENDED); + if (!extended && (gc->data.size != 1 || gc->data.width != 1)) + extended = 1; + if (!extended && (gc->flags & (GRID_FLAG_FGRGB|GRID_FLAG_BGRGB))) + extended = 1; + if (extended) { if (~gce->flags & GRID_FLAG_EXTENDED) { gl->extddata = xreallocarray(gl->extddata, gl->extdsize + 1, sizeof *gl->extddata); |