| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 |
- 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',
- }
|