Sixel: Difference between revisions

Created page with "Sixel ("six pixels") does not appear to have any true, up-to-date "standard". It seems to have been introduced on DEC printers, and made its first glass appearance on the VT12..."
 
No edit summary
Line 1: Line 1:
Sixel ("six pixels") does not appear to have any true, up-to-date "standard". It seems to have been introduced on DEC printers, and made its first glass appearance on the VT125, though the [http://www.vt100.net/docs/vt3xx-gp/chapter14.html VT3xx] documentation gets the most play (the VT340 appears to have been the first terminal which could sensibly scroll pixel graphics). A single sixel combines a set of programmable color registers with a vertical stack of six pixels; a sixel sprite (sprixel?) is MxN pixels where N is a multiple of 6. It is probably the most widely implemented method of pixel graphics for terminal emulators ([https://sw.kovidgoyal.net/kitty/graphics-protocol.html kitty] has its own protocol, as does [http://www.asmeurer.com/iterm2-tools/images.html ITerm2]). [https://en.wikipedia.org/wiki/ReGIS ReGIS] is a similar method for vector graphics.
Sixel ("six pixels") does not appear to have any true, up-to-date "standard". It seems to have been introduced on DEC printers, and made its first glass appearance on the VT125, though the [http://www.vt100.net/docs/vt3xx-gp/chapter14.html VT3xx] documentation gets the most play (the VT340 appears to have been the first terminal which could sensibly scroll pixel graphics). A single sixel combines a set of programmable color registers with a vertical stack of six pixels; a sixel sprite (sprixel?) is MxN pixels where N is a multiple of 6. It is probably the most widely implemented method of pixel graphics for terminal emulators ([https://sw.kovidgoyal.net/kitty/graphics-protocol.html kitty] has its own protocol, as does [http://www.asmeurer.com/iterm2-tools/images.html ITerm2]). [https://en.wikipedia.org/wiki/ReGIS ReGIS] is a similar method for vector graphics. A single horizontal strip of sixels is a "band"; a sprixel has one or more bands.
 
A sprixel must typically be emitted as a single unit to be rendered as a coherent whole (i.e. without gaps between bands). Sprixels do not annihilate entire cells, but only the pixels covered. A glyph emitted atop a sixel will annihilate all pixels contained within the cell.


==Color registers==
==Color registers==
Line 13: Line 15:
==See also==
==See also==
* [[Notcurses]] supports sixel intermingled with standard TUI elements
* [[Notcurses]] supports sixel intermingled with standard TUI elements
* [https://github.com/saitoha/libsixel libsixel] is pretty complete