sixel: implement private mode 1070 - private color palette

When enabled (the default), sixels use private color registers. That
is, the color palette from the last sixel is *not* re-used.

When disabled, sixels share (i.e. re-use) the same color palette.

Closes #362
This commit is contained in:
Daniel Eklöf 2021-02-16 19:37:49 +01:00
parent 313431800e
commit 4aa980a6a2
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
5 changed files with 43 additions and 7 deletions

7
csi.c
View file

@ -544,6 +544,10 @@ decset_decrst(struct terminal *term, unsigned param, bool enable)
}
break;
case 1070:
term->sixel.use_private_palette = enable;
break;
case 2004:
term->bracketed_paste = enable;
break;
@ -607,6 +611,7 @@ decrqm(const struct terminal *term, unsigned param, bool *enabled)
case 47: /* FALLTHROUGH */
case 1047: /* FALLTHROUGH */
case 1049: *enabled = term->grid == &term->alt; return true;
case 1079: *enabled = term->sixel.use_private_palette; return true;
case 2004: *enabled = term->bracketed_paste; return true;
case 27127: *enabled = term->modify_escape_key; return true;
case 737769: *enabled = term_ime_is_enabled(term); return true;
@ -646,6 +651,7 @@ xtsave(struct terminal *term, unsigned param)
case 1047: term->xtsave.alt_screen = term->grid == &term->alt; break;
case 1048: term_save_cursor(term); break;
case 1049: term->xtsave.alt_screen = term->grid == &term->alt; break;
case 1070: term->xtsave.sixel_private_palette = term->sixel.use_private_palette; break;
case 2004: term->xtsave.bracketed_paste = term->bracketed_paste; break;
case 27127: term->xtsave.modify_escape_key = term->modify_escape_key; break;
case 737769: term->xtsave.ime = term_ime_is_enabled(term); break;
@ -684,6 +690,7 @@ xtrestore(struct terminal *term, unsigned param)
case 1047: enable = term->xtsave.alt_screen; break;
case 1048: enable = true; break;
case 1049: enable = term->xtsave.alt_screen; break;
case 1070: enable = term->xtsave.sixel_private_palette; break;
case 2004: enable = term->xtsave.bracketed_paste; break;
case 27127: enable = term->xtsave.modify_escape_key; break;
case 737769: enable = term->xtsave.ime; break;