version 1.406, 2021/10/11 13:27:50 |
version 1.407, 2021/10/14 09:54:51 |
|
|
void |
void |
tty_cmd_cells(struct tty *tty, const struct tty_ctx *ctx) |
tty_cmd_cells(struct tty *tty, const struct tty_ctx *ctx) |
{ |
{ |
struct overlay_ranges r; |
struct overlay_ranges r; |
u_int i, px; |
u_int i, px, py, cx; |
|
char *cp = ctx->ptr; |
|
|
if (!tty_is_visible(tty, ctx, ctx->ocx, ctx->ocy, ctx->num, 1)) |
if (!tty_is_visible(tty, ctx, ctx->ocx, ctx->ocy, ctx->num, 1)) |
return; |
return; |
|
|
|
|
tty_margin_off(tty); |
tty_margin_off(tty); |
tty_cursor_pane_unless_wrap(tty, ctx, ctx->ocx, ctx->ocy); |
tty_cursor_pane_unless_wrap(tty, ctx, ctx->ocx, ctx->ocy); |
|
|
tty_attributes(tty, ctx->cell, &ctx->defaults, ctx->palette); |
tty_attributes(tty, ctx->cell, &ctx->defaults, ctx->palette); |
px = tty->cx; |
|
tty_check_overlay_range(tty, px, tty->cy, ctx->num, &r); |
/* Get tty position from pane position for overlay check. */ |
|
px = ctx->xoff + ctx->ocx - ctx->wox; |
|
py = ctx->yoff + ctx->ocy - ctx->woy; |
|
|
|
tty_check_overlay_range(tty, px, py, ctx->num, &r); |
for (i = 0; i < OVERLAY_MAX_RANGES; i++) { |
for (i = 0; i < OVERLAY_MAX_RANGES; i++) { |
if (r.nx[i] == 0) |
if (r.nx[i] == 0) |
continue; |
continue; |
tty_cursor(tty, r.px[i], tty->cy); |
/* Convert back to pane position for printing. */ |
tty_putn(tty, (char *)ctx->ptr + r.px[i] - px, r.nx[i], |
cx = r.px[i] - ctx->xoff + ctx->wox; |
r.nx[i]); |
tty_cursor_pane_unless_wrap(tty, ctx, cx, ctx->ocy); |
|
tty_putn(tty, cp + r.px[i] - px, r.nx[i], r.nx[i]); |
} |
} |
} |
} |
|
|