version 1.75, 2017/08/30 18:13:47 |
version 1.76, 2017/09/10 14:36:12 |
|
|
return (0); |
return (0); |
} |
} |
|
|
|
/* Free up unused extended cells. */ |
|
static void |
|
grid_compact_line(struct grid_line *gl) |
|
{ |
|
int new_extdsize = 0; |
|
struct grid_cell *new_extddata; |
|
struct grid_cell_entry *gce; |
|
struct grid_cell *gc; |
|
u_int px, idx; |
|
|
|
if (gl->extdsize == 0) |
|
return; |
|
|
|
for (px = 0; px < gl->cellsize; px++) { |
|
gce = &gl->celldata[px]; |
|
if (gce->flags & GRID_FLAG_EXTENDED) |
|
new_extdsize++; |
|
} |
|
|
|
if (new_extdsize == 0) { |
|
free(gl->extddata); |
|
gl->extddata = NULL; |
|
gl->extdsize = 0; |
|
return; |
|
} |
|
new_extddata = xreallocarray(NULL, new_extdsize, sizeof *gl->extddata); |
|
|
|
idx = 0; |
|
for (px = 0; px < gl->cellsize; px++) { |
|
gce = &gl->celldata[px]; |
|
if (gce->flags & GRID_FLAG_EXTENDED) { |
|
gc = &gl->extddata[gce->offset]; |
|
memcpy(&new_extddata[idx], gc, sizeof *gc); |
|
gce->offset = idx++; |
|
} |
|
} |
|
|
|
free(gl->extddata); |
|
gl->extddata = new_extddata; |
|
gl->extdsize = new_extdsize; |
|
} |
|
|
/* Set cell as extended. */ |
/* Set cell as extended. */ |
static struct grid_cell * |
static struct grid_cell * |
grid_extended_cell(struct grid_line *gl, struct grid_cell_entry *gce, |
grid_extended_cell(struct grid_line *gl, struct grid_cell_entry *gce, |
|
|
grid_empty_line(gd, yy, bg); |
grid_empty_line(gd, yy, bg); |
|
|
gd->hscrolled++; |
gd->hscrolled++; |
|
grid_compact_line(&gd->linedata[gd->hsize]); |
gd->hsize++; |
gd->hsize++; |
} |
} |
|
|