stringtranslate.com

síxel

El logotipo de Wikipedia convertido al formato Sixel y renderizado en Konsole .

Sixel , abreviatura de "seis píxeles", es un formato de gráficos de mapa de bits compatible con terminales e impresoras de DEC . Consiste en un patrón de seis píxeles de alto y uno de ancho, lo que da como resultado 64 patrones posibles. A cada patrón posible se le asigna un carácter ASCII , lo que hace que los sixels sean fáciles de transmitir en enlaces serie de 7 bits.

Sixel se introdujo por primera vez como una forma de enviar gráficos de mapa de bits a impresoras matriciales de puntos DEC como la LA50 . Después de ponerlos en "modo seisxel", se interpretó que los siguientes datos controlan directamente seis de las clavijas en el cabezal de impresión de nueve clavijas . Una cadena de caracteres de seisel codifica una única fila de la imagen de 6 píxeles de alto.

Posteriormente, el sistema se reutilizó como una forma de enviar datos de mapa de bits a las series VT200 y a los terminales VT320 al definir conjuntos de caracteres personalizados . Se utiliza una serie de seisels para transferir el mapa de bits de cada carácter. Esta característica se conoce como juegos de caracteres suaves o juegos de caracteres redefinibles dinámicamente ( DRCS ). Con los VT240 , VT241 , VT330 y VT340 , los terminales podían decodificar una imagen seisel completa en la pantalla, como las que antes se enviaban a las impresoras.

Descripción

Sixel codifica imágenes dividiendo el mapa de bits en una serie de franjas horizontales de 6 píxeles de alto. Cada columna vertical de 1 píxel de ancho en una franja particular forma un único seisel. Los píxeles de cada seisel se leen como binarios y se codifican en un único número de 6 bits, con los píxeles "encendidos" codificados como 1. Este número, del 0 al 63 decimal, se convierte luego en un único carácter ASCII, desplazado en 63 para que un sixel completamente negro, 0 decimal, está codificado como ?. Esto garantiza que los seisels permanezcan dentro del rango de caracteres imprimibles del juego de caracteres ASCII. El retorno de carro (CR) está representado por , y los avances de línea (LF) por ; ambos tuvieron que enviarse por turno para devolver el cursor al inicio de la línea, .$-CRLF

Sixel también incluye una forma rudimentaria de compresión, utilizando codificación de longitud de ejecución (RLE). Esto se logra con el carácter seguido de un número decimal de las veces que se repetirá y luego un solo carácter sexel que se repetirá. Dado que los dígitos decimales y no pueden ser datos sixel válidos, ya que se encuentran fuera del rango codificado, la codificación es fácil de identificar y expandir nuevamente en el software.!!

Se ingresa al "modo Sixel" enviando la secuencia + . Los p1 a p3 eran parámetros de configuración opcionales, con p1 definiendo una relación de aspecto (en desuso a favor de p3), p2 cómo interpretar el color de los ceros y p3 con parámetros simples de tamaño de cuadrícula. + es la " cadena de control de dispositivos " estándar de DEC, o DCS, que se utilizaba para activar o desactivar una serie de funciones especiales en los equipos de DEC. La "q" es el identificador de seisel. [a] Los datos de Sixel luego siguieron a q. La secuencia "String Terminator" + devolvió el dispositivo al modo de caracteres normal nuevamente.ESCPp1;p2;p3;qESCPESC\

Para imprimir, los sixels se envían a la impresora, se decodifican nuevamente a binario y se envían directamente a seis pines del cabezal de impresión. La única complejidad implicó expandir los RLE al búfer de impresión interno. La visualización en un terminal es algo más difícil. En terminales que admiten gráficos, se utilizó el sistema de gráficos ReGIS para dibujar directamente el patrón de seisel en el mapa de bits de la pantalla. Esto se hizo a alta velocidad almacenando los patrones de mapas de bits como un glifo y luego borrándolos .

Cuando se usaba para definir juegos de caracteres personalizados, el formato era casi idéntico, aunque los códigos de escape cambiaban. En términos de datos, la única diferencia importante es la sustitución del CR/LF separado por un único /. En la serie VT300, por ejemplo, los glifos de caracteres de 80 columnas tenían 15 píxeles de ancho por 12 de alto, lo que significa que un carácter podía definirse enviando un total de 30 sixels.

El color también se admite mediante el carácter, seguido de un número que hace referencia a uno de varios registros de color , que varían de un dispositivo a otro. Los colores de los registros se definen utilizando valores RGB o HLS en un formato DEC peculiar. Para crear una imagen en color en una impresora, se envía varias veces una línea de seisels, cada una de las cuales representa un único plano de bits de los colores basados ​​en registros en los terminales (normalmente 2 o 4 bits). Dado que las capacidades del hardware varían ampliamente, un dibujo de seis colores en color solo se puede enviar a dispositivos específicos. Los terminales sin gráficos generalmente ignoran silenciosamente las secuencias de escape de Sixel.#

Muestra

El código Sixel de muestra que dice "HI" se muestra en un xterm con emulación VT340 .
<ESC>Pq #0;2;0;0;0#1;2;100;100;0#2;2;0;100;0 #1~~@@vv@@~~@@~~$ #2??}}GG}}??}}??- #1!14@ <ESC>\

El ejemplo anterior ingresa al modo sixel, configura tres registros de color y luego usa esos registros para dibujar sixels en esos colores. Se #0;2;0;0;0interpreta como "establecer el registro de color 0, usar el modo 2 (modo RGB), configurar R, G y B en 0%". Esto establece el color 0 en negro y los siguientes comandos configuran el registro 1 en amarillo (100%, 100%, 0%) y el 2 en verde (0%, 100%, 0%). A diferencia de la mayoría de los sistemas modernos que asignan un valor de 8 bits (0–255) a cada canal de color, el modo RGB se basa en la "intensidad" de cada canal del 0% al 100%.

Las siguientes líneas de datos seleccionan un color, amarillo para el primero y el tercero y verde para el medio, luego dibuja seisels. La última línea muestra el RLE en uso, lo que significa "repetir @( 0b100000) 14 veces". El resultado final es de 14 píxeles por 7 píxeles, por lo que la última línea simplemente se repite 0b10000014 veces para llenar la última línea. $al final de una línea significa que la siguiente línea sobreimprimirá la línea actual, mientras que -significa que la siguiente línea representa una nueva línea de seisels.

Notas

  1. ^ La "p" minúscula era el identificador de ReGIS.

Ver también

Referencias

enlaces externos