sixel: add sixel_cell_size_changed()

This function should be called *after* the cell dimensions have
changed, but *before* resizing/reflowing the grids.
This commit is contained in:
Daniel Eklöf 2020-10-04 13:09:24 +02:00
parent cf48d1dc4c
commit 52a7155897
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 25 additions and 0 deletions

24
sixel.c
View file

@ -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)
{

View file

@ -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