mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 05:21:10 +00:00
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.
This commit is contained in:
11
grid.c
11
grid.c
@ -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);
|
||||
|
Reference in New Issue
Block a user