Add support for graphics in terminal
This merge requests add support for displaying graphics inside the terminal.
The graphics display infrastructure allows adding and removing of images. Each image is anchored at the top left corner to a character cell, and may scroll when text is scrolled, including to the history buffer. Images also have a Z-coordinate, with text having Z=0, so images may be drawn above the text or below.
Three terminal commands (escape sequence) protocols may be used to display graphics:
-
sixel parsing code is based on MR !517 (closed), but using my graphics rendering. I also modified the parsing to be more compliant with the specification (from vt100.net), as well as with xterm's behavior. Imagemagick (
lsix
) and libsixel (mpv
) work, as well asecho -e '\033Pq!255~\033\' (
from the discussion in !517 (closed)). -
A protocol based on kitty graphics protocol. Animation and transfer modes other than direct are not supported. In addition to PNG, any graphics format supported by
QImage.loadFromData()
may be used. Tested with kitty'sicat
,timg
, and the notcurses library (ncplayer
,ncls
.)
This patch should be considered experimental, but it can already be useful