From 52a715589748b12f379b0d9b67dc57efd43f2589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sun, 4 Oct 2020 13:09:24 +0200 Subject: [PATCH] sixel: add sixel_cell_size_changed() This function should be called *after* the cell dimensions have changed, but *before* resizing/reflowing the grids. --- sixel.c | 24 ++++++++++++++++++++++++ sixel.h | 1 + 2 files changed, 25 insertions(+) diff --git a/sixel.c b/sixel.c index 9cec4f62..110c8ab5 100644 --- a/sixel.c +++ b/sixel.c @@ -484,6 +484,30 @@ sixel_overwrite_at_cursor(struct terminal *term, int width) term, term->grid->cursor.point.row, term->grid->cursor.point.col, width); } +void +sixel_cell_size_changed(struct terminal *term) +{ + struct grid *g = term->grid; + + term->grid = &term->normal; + tll_foreach(term->normal.sixel_images, it) { + struct sixel *six = &it->item; + six->rows = (six->height + term->cell_height - 1) / term->cell_height; + six->cols = (six->width + term->cell_width - 1) / term->cell_width; + } + verify_sixels(term); + + term->grid = &term->alt; + tll_foreach(term->alt.sixel_images, it) { + struct sixel *six = &it->item; + six->rows = (six->height + term->cell_height - 1) / term->cell_height; + six->cols = (six->width + term->cell_width - 1) / term->cell_width; + } + verify_sixels(term); + + term->grid = g; +} + void sixel_unhook(struct terminal *term) { diff --git a/sixel.h b/sixel.h index 666b8c40..ac763bb0 100644 --- a/sixel.h +++ b/sixel.h @@ -16,6 +16,7 @@ void sixel_destroy_all(struct terminal *term); void sixel_scroll_up(struct terminal *term, int rows); void sixel_scroll_down(struct terminal *term, int rows); +void sixel_cell_size_changed(struct terminal *term); /* * Remove sixel data from the specified location. Used when printing * or erasing characters, and when emitting new sixel images, to