vo_sixel: support --vo-sixel-exit-clear[=yes]

By default we still clear the screen, but now it's possible to leave the
last sixel image on screen.

Allows mpv to be used as img2sixel of sorts, but with our auto-fit and
various mpv scaling/filters etc.
This commit is contained in:
Avi Halachmi (:avih) 2020-11-25 19:33:35 +02:00
parent 9867f21830
commit 1bb2665e3d
2 changed files with 11 additions and 2 deletions

View File

@ -413,6 +413,10 @@ Available video output drivers are:
to take into account padding at the report - this only works correctly
when the overall padding per axis is smaller than the number of cells.
``--vo-sixel-exit-clear=<yes|no>`` (default: yes)
Whether or not to clear the terminal on quit. When set to no - the last
sixel image stays on screen after quit, with the cursor following it.
Sixel image quality options:
``--vo-sixel-dither=<algo>``

View File

@ -63,6 +63,7 @@ struct priv {
int opt_pad_x;
int opt_rows;
int opt_cols;
int opt_clear;
// Internal data
sixel_output_t *output;
@ -442,8 +443,10 @@ static void uninit(struct vo *vo)
printf(ESC_RESTORE_CURSOR);
printf(ESC_CLEAR_SCREEN);
printf(ESC_GOTOXY, 1, 1);
if (priv->opt_clear) {
printf(ESC_CLEAR_SCREEN);
printf(ESC_GOTOXY, 1, 1);
}
fflush(stdout);
if (priv->output) {
@ -480,6 +483,7 @@ const struct vo_driver video_out_sixel = {
.opt_pad_x = -1,
.opt_rows = 0,
.opt_cols = 0,
.opt_clear = 1,
},
.options = (const m_option_t[]) {
{"dither", OPT_CHOICE(opt_diffuse,
@ -503,6 +507,7 @@ const struct vo_driver video_out_sixel = {
{"pad-x", OPT_INT(opt_pad_x)},
{"rows", OPT_INT(opt_rows)},
{"cols", OPT_INT(opt_cols)},
{"exit-clear", OPT_FLAG(opt_clear), },
{0}
},
.options_prefix = "vo-sixel",