We were running behind and there were quite some deprecations to update. This was mostly in the upstream copy/pasta package but seems quite minimal.
415 lines
6.6 KiB
Go
415 lines
6.6 KiB
Go
package kitty
|
|
|
|
import "errors"
|
|
|
|
// ErrMissingFile is returned when the file path is missing.
|
|
var ErrMissingFile = errors.New("missing file path")
|
|
|
|
// MaxChunkSize is the maximum chunk size for the image data.
|
|
const MaxChunkSize = 1024 * 4
|
|
|
|
// Placeholder is a special Unicode character that can be used as a placeholder
|
|
// for an image.
|
|
const Placeholder = '\U0010EEEE'
|
|
|
|
// Graphics image format.
|
|
const (
|
|
// 32-bit RGBA format.
|
|
RGBA = 32
|
|
|
|
// 24-bit RGB format.
|
|
RGB = 24
|
|
|
|
// PNG format.
|
|
PNG = 100
|
|
)
|
|
|
|
// Compression types.
|
|
const (
|
|
Zlib = 'z'
|
|
)
|
|
|
|
// Transmission types.
|
|
const (
|
|
// The data transmitted directly in the escape sequence.
|
|
Direct = 'd'
|
|
|
|
// The data transmitted in a regular file.
|
|
File = 'f'
|
|
|
|
// A temporary file is used and deleted after transmission.
|
|
TempFile = 't'
|
|
|
|
// A shared memory object.
|
|
// For POSIX see https://pubs.opengroup.org/onlinepubs/9699919799/functions/shm_open.html
|
|
// For Windows see https://docs.microsoft.com/en-us/windows/win32/memory/creating-named-shared-memory
|
|
SharedMemory = 's'
|
|
)
|
|
|
|
// Action types.
|
|
const (
|
|
// Transmit image data.
|
|
Transmit = 't'
|
|
// TransmitAndPut transmit image data and display (put) it.
|
|
TransmitAndPut = 'T'
|
|
// Query terminal for image info.
|
|
Query = 'q'
|
|
// Put (display) previously transmitted image.
|
|
Put = 'p'
|
|
// Delete image.
|
|
Delete = 'd'
|
|
// Frame transmits data for animation frames.
|
|
Frame = 'f'
|
|
// Animate controls animation.
|
|
Animate = 'a'
|
|
// Compose composes animation frames.
|
|
Compose = 'c'
|
|
)
|
|
|
|
// Delete types.
|
|
const (
|
|
// Delete all placements visible on screen
|
|
DeleteAll = 'a'
|
|
// Delete all images with the specified id, specified using the i key. If
|
|
// you specify a p key for the placement id as well, then only the
|
|
// placement with the specified image id and placement id will be deleted.
|
|
DeleteID = 'i'
|
|
// Delete newest image with the specified number, specified using the I
|
|
// key. If you specify a p key for the placement id as well, then only the
|
|
// placement with the specified number and placement id will be deleted.
|
|
DeleteNumber = 'n'
|
|
// Delete all placements that intersect with the current cursor position.
|
|
DeleteCursor = 'c'
|
|
// Delete animation frames.
|
|
DeleteFrames = 'f'
|
|
// Delete all placements that intersect a specific cell, the cell is
|
|
// specified using the x and y keys
|
|
DeleteCell = 'p'
|
|
// Delete all placements that intersect a specific cell having a specific
|
|
// z-index. The cell and z-index is specified using the x, y and z keys.
|
|
DeleteCellZ = 'q'
|
|
// Delete all images whose id is greater than or equal to the value of the x
|
|
// key and less than or equal to the value of the y.
|
|
DeleteRange = 'r'
|
|
// Delete all placements that intersect the specified column, specified using
|
|
// the x key.
|
|
DeleteColumn = 'x'
|
|
// Delete all placements that intersect the specified row, specified using
|
|
// the y key.
|
|
DeleteRow = 'y'
|
|
// Delete all placements that have the specified z-index, specified using the
|
|
// z key.
|
|
DeleteZ = 'z'
|
|
)
|
|
|
|
// Diacritic returns the diacritic rune at the specified index. If the index is
|
|
// out of bounds, the first diacritic rune is returned.
|
|
func Diacritic(i int) rune {
|
|
if i < 0 || i >= len(diacritics) {
|
|
return diacritics[0]
|
|
}
|
|
return diacritics[i]
|
|
}
|
|
|
|
// From https://sw.kovidgoyal.net/kitty/_downloads/f0a0de9ec8d9ff4456206db8e0814937/rowcolumn-diacritics.txt
|
|
// See https://sw.kovidgoyal.net/kitty/graphics-protocol/#unicode-placeholders for further explanation.
|
|
var diacritics = []rune{
|
|
'\u0305',
|
|
'\u030D',
|
|
'\u030E',
|
|
'\u0310',
|
|
'\u0312',
|
|
'\u033D',
|
|
'\u033E',
|
|
'\u033F',
|
|
'\u0346',
|
|
'\u034A',
|
|
'\u034B',
|
|
'\u034C',
|
|
'\u0350',
|
|
'\u0351',
|
|
'\u0352',
|
|
'\u0357',
|
|
'\u035B',
|
|
'\u0363',
|
|
'\u0364',
|
|
'\u0365',
|
|
'\u0366',
|
|
'\u0367',
|
|
'\u0368',
|
|
'\u0369',
|
|
'\u036A',
|
|
'\u036B',
|
|
'\u036C',
|
|
'\u036D',
|
|
'\u036E',
|
|
'\u036F',
|
|
'\u0483',
|
|
'\u0484',
|
|
'\u0485',
|
|
'\u0486',
|
|
'\u0487',
|
|
'\u0592',
|
|
'\u0593',
|
|
'\u0594',
|
|
'\u0595',
|
|
'\u0597',
|
|
'\u0598',
|
|
'\u0599',
|
|
'\u059C',
|
|
'\u059D',
|
|
'\u059E',
|
|
'\u059F',
|
|
'\u05A0',
|
|
'\u05A1',
|
|
'\u05A8',
|
|
'\u05A9',
|
|
'\u05AB',
|
|
'\u05AC',
|
|
'\u05AF',
|
|
'\u05C4',
|
|
'\u0610',
|
|
'\u0611',
|
|
'\u0612',
|
|
'\u0613',
|
|
'\u0614',
|
|
'\u0615',
|
|
'\u0616',
|
|
'\u0617',
|
|
'\u0657',
|
|
'\u0658',
|
|
'\u0659',
|
|
'\u065A',
|
|
'\u065B',
|
|
'\u065D',
|
|
'\u065E',
|
|
'\u06D6',
|
|
'\u06D7',
|
|
'\u06D8',
|
|
'\u06D9',
|
|
'\u06DA',
|
|
'\u06DB',
|
|
'\u06DC',
|
|
'\u06DF',
|
|
'\u06E0',
|
|
'\u06E1',
|
|
'\u06E2',
|
|
'\u06E4',
|
|
'\u06E7',
|
|
'\u06E8',
|
|
'\u06EB',
|
|
'\u06EC',
|
|
'\u0730',
|
|
'\u0732',
|
|
'\u0733',
|
|
'\u0735',
|
|
'\u0736',
|
|
'\u073A',
|
|
'\u073D',
|
|
'\u073F',
|
|
'\u0740',
|
|
'\u0741',
|
|
'\u0743',
|
|
'\u0745',
|
|
'\u0747',
|
|
'\u0749',
|
|
'\u074A',
|
|
'\u07EB',
|
|
'\u07EC',
|
|
'\u07ED',
|
|
'\u07EE',
|
|
'\u07EF',
|
|
'\u07F0',
|
|
'\u07F1',
|
|
'\u07F3',
|
|
'\u0816',
|
|
'\u0817',
|
|
'\u0818',
|
|
'\u0819',
|
|
'\u081B',
|
|
'\u081C',
|
|
'\u081D',
|
|
'\u081E',
|
|
'\u081F',
|
|
'\u0820',
|
|
'\u0821',
|
|
'\u0822',
|
|
'\u0823',
|
|
'\u0825',
|
|
'\u0826',
|
|
'\u0827',
|
|
'\u0829',
|
|
'\u082A',
|
|
'\u082B',
|
|
'\u082C',
|
|
'\u082D',
|
|
'\u0951',
|
|
'\u0953',
|
|
'\u0954',
|
|
'\u0F82',
|
|
'\u0F83',
|
|
'\u0F86',
|
|
'\u0F87',
|
|
'\u135D',
|
|
'\u135E',
|
|
'\u135F',
|
|
'\u17DD',
|
|
'\u193A',
|
|
'\u1A17',
|
|
'\u1A75',
|
|
'\u1A76',
|
|
'\u1A77',
|
|
'\u1A78',
|
|
'\u1A79',
|
|
'\u1A7A',
|
|
'\u1A7B',
|
|
'\u1A7C',
|
|
'\u1B6B',
|
|
'\u1B6D',
|
|
'\u1B6E',
|
|
'\u1B6F',
|
|
'\u1B70',
|
|
'\u1B71',
|
|
'\u1B72',
|
|
'\u1B73',
|
|
'\u1CD0',
|
|
'\u1CD1',
|
|
'\u1CD2',
|
|
'\u1CDA',
|
|
'\u1CDB',
|
|
'\u1CE0',
|
|
'\u1DC0',
|
|
'\u1DC1',
|
|
'\u1DC3',
|
|
'\u1DC4',
|
|
'\u1DC5',
|
|
'\u1DC6',
|
|
'\u1DC7',
|
|
'\u1DC8',
|
|
'\u1DC9',
|
|
'\u1DCB',
|
|
'\u1DCC',
|
|
'\u1DD1',
|
|
'\u1DD2',
|
|
'\u1DD3',
|
|
'\u1DD4',
|
|
'\u1DD5',
|
|
'\u1DD6',
|
|
'\u1DD7',
|
|
'\u1DD8',
|
|
'\u1DD9',
|
|
'\u1DDA',
|
|
'\u1DDB',
|
|
'\u1DDC',
|
|
'\u1DDD',
|
|
'\u1DDE',
|
|
'\u1DDF',
|
|
'\u1DE0',
|
|
'\u1DE1',
|
|
'\u1DE2',
|
|
'\u1DE3',
|
|
'\u1DE4',
|
|
'\u1DE5',
|
|
'\u1DE6',
|
|
'\u1DFE',
|
|
'\u20D0',
|
|
'\u20D1',
|
|
'\u20D4',
|
|
'\u20D5',
|
|
'\u20D6',
|
|
'\u20D7',
|
|
'\u20DB',
|
|
'\u20DC',
|
|
'\u20E1',
|
|
'\u20E7',
|
|
'\u20E9',
|
|
'\u20F0',
|
|
'\u2CEF',
|
|
'\u2CF0',
|
|
'\u2CF1',
|
|
'\u2DE0',
|
|
'\u2DE1',
|
|
'\u2DE2',
|
|
'\u2DE3',
|
|
'\u2DE4',
|
|
'\u2DE5',
|
|
'\u2DE6',
|
|
'\u2DE7',
|
|
'\u2DE8',
|
|
'\u2DE9',
|
|
'\u2DEA',
|
|
'\u2DEB',
|
|
'\u2DEC',
|
|
'\u2DED',
|
|
'\u2DEE',
|
|
'\u2DEF',
|
|
'\u2DF0',
|
|
'\u2DF1',
|
|
'\u2DF2',
|
|
'\u2DF3',
|
|
'\u2DF4',
|
|
'\u2DF5',
|
|
'\u2DF6',
|
|
'\u2DF7',
|
|
'\u2DF8',
|
|
'\u2DF9',
|
|
'\u2DFA',
|
|
'\u2DFB',
|
|
'\u2DFC',
|
|
'\u2DFD',
|
|
'\u2DFE',
|
|
'\u2DFF',
|
|
'\uA66F',
|
|
'\uA67C',
|
|
'\uA67D',
|
|
'\uA6F0',
|
|
'\uA6F1',
|
|
'\uA8E0',
|
|
'\uA8E1',
|
|
'\uA8E2',
|
|
'\uA8E3',
|
|
'\uA8E4',
|
|
'\uA8E5',
|
|
'\uA8E6',
|
|
'\uA8E7',
|
|
'\uA8E8',
|
|
'\uA8E9',
|
|
'\uA8EA',
|
|
'\uA8EB',
|
|
'\uA8EC',
|
|
'\uA8ED',
|
|
'\uA8EE',
|
|
'\uA8EF',
|
|
'\uA8F0',
|
|
'\uA8F1',
|
|
'\uAAB0',
|
|
'\uAAB2',
|
|
'\uAAB3',
|
|
'\uAAB7',
|
|
'\uAAB8',
|
|
'\uAABE',
|
|
'\uAABF',
|
|
'\uAAC1',
|
|
'\uFE20',
|
|
'\uFE21',
|
|
'\uFE22',
|
|
'\uFE23',
|
|
'\uFE24',
|
|
'\uFE25',
|
|
'\uFE26',
|
|
'\U00010A0F',
|
|
'\U00010A38',
|
|
'\U0001D185',
|
|
'\U0001D186',
|
|
'\U0001D187',
|
|
'\U0001D188',
|
|
'\U0001D189',
|
|
'\U0001D1AA',
|
|
'\U0001D1AB',
|
|
'\U0001D1AC',
|
|
'\U0001D1AD',
|
|
'\U0001D242',
|
|
'\U0001D243',
|
|
'\U0001D244',
|
|
}
|