Sixel , сокращение от «шесть пикселей», представляет собой формат растровой графики, поддерживаемый терминалами и принтерами от DEC . Он состоит из шаблона в шесть пикселей в высоту и один в ширину, что дает 64 возможных шаблона. Каждому возможному шаблону назначается символ ASCII , что упрощает передачу Sixels по 7-битным последовательным каналам.
Sixel был впервые представлен как способ отправки растровой графики на матричные принтеры DEC, такие как LA50 . После перевода в «шестиконтактный режим» следующие данные были интерпретированы для непосредственного управления шестью выводами в девятиконтактной печатающей головке . Строка из шести символов кодирует одну строку изображения высотой 6 пикселей.
Позднее система была повторно использована как способ отправки растровых данных на терминалы серии VT200 и VT320 при определении пользовательских наборов символов . Последовательность шестиэлементов используется для передачи растрового изображения для каждого символа. Эта функция известна как мягкие наборы символов или динамически переопределяемые наборы символов (DRCS). С VT240 , VT241 , VT330 и VT340 терминалы могли декодировать полный sixel изображение на экране, как и ранее отправленные на принтер.
Описание
Sixel кодирует изображения, разбивая растровое изображение на серию горизонтальных полос высотой 6 пикселей. Каждый вертикальный столбец шириной в 1 пиксель в отдельной полосе образует один шестицилиндровый столбец. Пиксели каждого шестиэлемента считываются как двоичные и кодируются в одно 6-битное число, причем «включенные» пиксели кодируются как 1. Это число, от 0 до 63 в десятичном формате, затем преобразуется в один символ ASCII со смещением на 63, чтобы полностью черный sixel, 0 десятичный, кодируется как ?. Это гарантирует, что шестерки остаются в пределах диапазона печатаемых символов набора символов ASCII. Возврат каретки (CR) представлен символом $, а перевод строки (LF) - -символом; оба должны были быть отправлены в свою очередь , чтобы вернуть курсор в начало строки, CRLF.
Sixel также включает элементарную форму сжатия с использованием кодирования длин серий (RLE). Это достигается с помощью !символа, за которым следует десятичное количество раз, которое нужно повторить, а затем один шестидесятичный символ, который нужно повторить. Поскольку !десятичные цифры и не могут быть действительными шестизначными данными, лежащими за пределами закодированного диапазона, кодирование легко идентифицировать и расширять обратно в программном обеспечении.
«Режим Sixel» вводится путем отправки последовательности ESC+ Pp1;p2;p3;q. От p1 до p3 были необязательные параметры настройки, при этом p1 определял соотношение сторон (не рекомендуется в пользу p3), p2 как интерпретировать цвет нулей и p3 с простыми параметрами размера сетки. ESC+ P- это стандартная DEC « Строка управления устройством », или DCS, которая использовалась для включения или выключения ряда специальных функций в оборудовании DEC. «Q» - это шестизельный идентификатор. [a] Затем за q следовали данные Sixel. Последовательность «Stop Text» ESC+ \снова вернула устройство в нормальный символьный режим.
Для печати шесть пикселей отправляются на принтер, декодируются обратно в двоичный код и отправляются непосредственно на шесть контактов в печатающей головке. Единственная сложность заключалась в расширении RLE во внутренний буфер печати. Отображение на терминале несколько сложнее. На терминалах, поддерживающих графику, графическая система ReGIS использовалась для непосредственного рисования шестистелевого рисунка в растровом изображении экрана. Это было сделано на высокой скорости путем сохранения растровых изображений в виде глифов и последующего копирования их.
При использовании для определения пользовательских наборов символов формат был почти идентичным, хотя escape-коды изменились. Что касается данных, то единственное существенное отличие - замена отдельного CR / LF на одиночный /
. В серии VT300 например, глифы символов 80-колонки были 15 пикселей в ширину и 12 высотой, а это означает , что символ может быть определен путем посылки в общей сложности 30 sixels.
Цвет также поддерживается с помощью #символа, за которым следует число, относящееся к одному из ряда цветовых регистров , которые варьируются от устройства к устройству. Цвета в регистрах определяются с использованием значений RGB или HLS в особом формате DEC. Чтобы создать цветное изображение на принтере, строка из шести пикселей отправляется несколько раз, каждая из которых представляет одну битовую плоскость из основанных на регистрах цветов на терминалах (обычно 2 или 4 бита). Поскольку возможности оборудования сильно различаются, цветной шестиэлементный рисунок может быть выведен только на целевые устройства. Неграфические терминалы обычно молча игнорируют шестиэлементные escape-последовательности.
Образец
Pq # 0; 2; 0; 0; 0 # 1; 2; 100; 100; 0 # 2; 2; 0; 100; 0 # 1 ~~ @@ vv @@ ~~ @@ ~~ $ # 2 ??}} GG}} ??}} ?? - # 1! 14 @\
В приведенном выше примере входит режим шестиэлементов, настраиваются три цветовых регистра, а затем эти регистры используются для рисования шестиэлементов этих цветов. Это #0;2;0;0;0
интерпретируется как «установить регистр цвета 0, использовать режим RGB (2), установить R, G и B на 0». Это устанавливает цвет 0 на черный, а следующие команды устанавливают регистр 1 на желтый и 2 на зеленый.
Следующие строки данных выберите цвет: желтый для первого и третьего и зеленый для середины, затем нарисуйте шесть пикселей. Последняя строка показывает используемый RLE. Эти шестики образуют форму «HI».
Заметки
- ^ Строчная буква "p" была идентификатором ReGIS.
Смотрите также
Рекомендации
- "Справочное руководство программиста VT330 / VT340, том 2: Программирование графики" , цифровой, EK-VT3XX-GP-002, май 1988 г.
- Крис Кьеза, Все о SIXELs , 29 сентября 1990 г.