mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-14 04:27:57 -05:00
The logic that breaks out of sixel loops does not work for rows that has already wrapped around. Thus, we need to destroy sixels that are about to be scrolled out *before* we actually scroll. Since this is the *only* time we destroy sixels (instead of overwriting it), rename the sixel functions. And, since they now do a very specific thing, they can be greatly simplified (and thus faster).
38 lines
1.3 KiB
C
38 lines
1.3 KiB
C
#pragma once
|
|
|
|
#include "terminal.h"
|
|
|
|
#define SIXEL_MAX_COLORS 1024u
|
|
|
|
void sixel_fini(struct terminal *term);
|
|
|
|
void sixel_init(struct terminal *term);
|
|
void sixel_put(struct terminal *term, uint8_t c);
|
|
void sixel_unhook(struct terminal *term);
|
|
|
|
void sixel_destroy(struct sixel *sixel);
|
|
|
|
void sixel_scroll_up(struct terminal *term, int rows);
|
|
void sixel_scroll_down(struct terminal *term, int rows);
|
|
|
|
/*
|
|
* Remove sixel data from the specified location. Used when printing
|
|
* or erasing characters, and when emitting new sixel images, to
|
|
* remove sixel data that would otherwise be rendered on-top.
|
|
*
|
|
* Row numbers are relative to the current grid offset
|
|
*/
|
|
void sixel_overwrite_by_rectangle(
|
|
struct terminal *term, int row, int col, int height, int width);
|
|
void sixel_overwrite_by_row(struct terminal *term, int row, int col, int width);
|
|
void sixel_overwrite_at_cursor(struct terminal *term, int width);
|
|
|
|
void sixel_colors_report_current(struct terminal *term);
|
|
void sixel_colors_reset(struct terminal *term);
|
|
void sixel_colors_set(struct terminal *term, unsigned count);
|
|
void sixel_colors_report_max(struct terminal *term);
|
|
|
|
void sixel_geometry_report_current(struct terminal *term);
|
|
void sixel_geometry_reset(struct terminal *term);
|
|
void sixel_geometry_set(struct terminal *term, unsigned width, unsigned height);
|
|
void sixel_geometry_report_max(struct terminal *term);
|