mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
sixel: resize: always round up height to a multiple of 6
Sixels are always a multiple of six.
This commit is contained in:
parent
f175575c09
commit
e94f108572
1 changed files with 4 additions and 6 deletions
10
sixel.c
10
sixel.c
|
|
@ -848,10 +848,8 @@ resize(struct terminal *term, int new_width, int new_height)
|
|||
const int old_width = term->sixel.image.width;
|
||||
const int old_height = term->sixel.image.height;
|
||||
|
||||
int alloc_new_width = new_width;
|
||||
int alloc_new_height = (new_height + 6 - 1) / 6 * 6;
|
||||
xassert(alloc_new_height >= new_height);
|
||||
xassert(alloc_new_height - new_height < 6);
|
||||
new_height = (new_height + 6 - 1) / 6 * 6;
|
||||
xassert(new_height % 6 == 0);
|
||||
|
||||
uint32_t *new_data = NULL;
|
||||
|
||||
|
|
@ -859,7 +857,7 @@ resize(struct terminal *term, int new_width, int new_height)
|
|||
/* Width (and thus stride) is the same, so we can simply
|
||||
* re-alloc the existing buffer */
|
||||
|
||||
new_data = realloc(old_data, alloc_new_width * alloc_new_height * sizeof(uint32_t));
|
||||
new_data = realloc(old_data, new_width * new_height * sizeof(uint32_t));
|
||||
if (new_data == NULL) {
|
||||
LOG_ERRNO("failed to reallocate sixel image buffer");
|
||||
return false;
|
||||
|
|
@ -870,7 +868,7 @@ resize(struct terminal *term, int new_width, int new_height)
|
|||
} else {
|
||||
/* Width (and thus stride) change - need to allocate a new buffer */
|
||||
xassert(new_width > old_width);
|
||||
new_data = xmalloc(alloc_new_width * alloc_new_height * sizeof(uint32_t));
|
||||
new_data = xmalloc(new_width * new_height * sizeof(uint32_t));
|
||||
|
||||
/* Copy old rows, and initialize new columns to background color */
|
||||
for (int r = 0; r < min(old_height, new_height); r++) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue