From 1c9c1aafc892a50300f3cfc81c06d107fbe6d840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sun, 7 Mar 2021 11:22:08 +0100 Subject: [PATCH] =?UTF-8?q?sixel:=20adjust=20image=20height=20when=20proce?= =?UTF-8?q?ssing=20=E2=80=98-=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sixel.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sixel.c b/sixel.c index 9b68391c..4807f2a8 100644 --- a/sixel.c +++ b/sixel.c @@ -921,23 +921,20 @@ sixel_add(struct terminal *term, uint32_t color, uint8_t sixel) { //LOG_DBG("adding sixel %02hhx using color 0x%06x", sixel, color); - int height = term->sixel.image.height; int width = term->sixel.image.width; - if (term->sixel.pos.col >= width || - term->sixel.pos.row >= height) - { + if (term->sixel.pos.col >= width) { width = max( term->sixel.image.width, max(term->sixel.max_col, term->sixel.pos.col + 1)); - height = max( - term->sixel.image.height, term->sixel.pos.row + 6); - - if (!resize(term, width, height)) + if (!resize(term, width, term->sixel.image.height)) return; } + /* Height adjustment done while processing ‘-’ */ + xassert(term->sixel.pos.row < term->sixel.image.height); + size_t ofs = term->sixel.row_byte_ofs + term->sixel.pos.col; uint32_t *data = term->sixel.image.data; @@ -985,6 +982,9 @@ decsixel(struct terminal *term, uint8_t c) term->sixel.pos.row += 6; term->sixel.pos.col = 0; term->sixel.row_byte_ofs += term->sixel.image.width * 6; + + if (term->sixel.pos.row >= term->sixel.image.height) + resize(term, term->sixel.image.width, term->sixel.pos.row + 6); break; case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E':