Sixel - Sixel
Sixel , abbreviazione di "sei pixel", è un formato grafico bitmap supportato da terminali e stampanti di DEC . Consiste in un motivo di sei pixel di altezza e uno di larghezza, che risulta in 64 possibili motivi. Ad ogni possibile pattern è assegnato un carattere ASCII , rendendo i sixels facili da trasmettere su collegamenti seriali a 7 bit.
Sixel è stato introdotto per la prima volta come un modo per inviare grafica bitmap alle stampanti a matrice di punti DEC come la LA50 . Dopo essere stati messi in "modalità sixel", i seguenti dati sono stati interpretati per controllare direttamente sei dei pin nella testina di stampa a nove pin . Una stringa di sei caratteri codifica una singola riga alta 6 pixel dell'immagine.
Il sistema è stato successivamente riutilizzato per inviare dati bitmap ai terminali della serie VT200 e VT320 durante la definizione di set di caratteri personalizzati . Viene utilizzata una serie di sei per trasferire la bitmap per ogni carattere. Questa funzione è nota come set di caratteri soft o set di caratteri ridefinibili dinamicamente (DRCS). Con il VT240 , VT241 , VT330 e VT340 , i terminali potevano decodificare un'immagine completa di sei pixel sullo schermo, come quelle precedentemente inviate alle stampanti.
Descrizione
Sixel codifica le immagini suddividendo la bitmap in una serie di strisce orizzontali alte 6 pixel. Ogni colonna verticale larga 1 pixel in una particolare striscia forma un singolo sixel. I pixel di ogni sixel vengono letti come binari e codificati in un singolo numero a 6 bit, con i pixel "on" codificati come 1. Questo numero, da 0 a 63 decimale, viene quindi convertito in un singolo carattere ASCII, compensato di 63 in modo che un sixel tutto nero, 0 decimale, è codificato come ?. Ciò garantisce che i sixels rimangano all'interno dell'intervallo di caratteri stampabili del set di caratteri ASCII. Il ritorno a capo (CR) è rappresentato da $e gli avanzamenti di riga (LF) con un -; entrambi dovevano essere inviati a turno per riportare il cursore all'inizio della riga, CRLF.
Sixel include anche una forma rudimentale di compressione, utilizzando la codifica run-length (RLE). Ciò si ottiene con il !carattere seguito da un numero decimale delle volte da ripetere, e quindi da un singolo carattere di seixel da ripetere. Poiché le !cifre decimali e non possono essere dati sixel validi, che si trovano al di fuori dell'intervallo codificato, la codifica è facile da identificare ed espandere nuovamente nel software.
Si entra in "Modalità sixel" inviando la sequenza ESC+ Pp1;p2;p3;q. I parametri da p1 a p3 erano parametri di configurazione opzionali, con p1 che definiva un rapporto di aspetto (deprecato a favore di p3), p2 come interpretare il colore degli zeri e p3 con semplici parametri di dimensione della griglia. ESC+ Pè lo standard DEC " Device Control String ", o DCS, che è stato utilizzato per attivare o disattivare una serie di funzioni speciali nelle apparecchiature DEC. La "q" è l'identificatore sixel. I dati di Sixel hanno poi seguito il q. La sequenza "Stop Text" ESC+ ha \riportato il dispositivo alla normale modalità caratteri.
Per la stampa, i sixels vengono inviati alla stampante, decodificati in binario e inviati direttamente a sei pin nella testina di stampa. L'unica complessità riguardava l'espansione degli RLE nel buffer di stampa interno. La visualizzazione su un terminale è un po' più difficile. Sui terminali che supportano la grafica, il sistema grafico ReGIS è stato utilizzato per disegnare direttamente il modello sixel nella bitmap dello schermo. Ciò è stato fatto ad alta velocità memorizzando i modelli bitmap come glifo e quindi spostandoli .
Quando veniva utilizzato per definire set di caratteri personalizzati, il formato era quasi identico, sebbene i codici di escape fossero cambiati. In termini di dati, l'unica grande differenza è la sostituzione del CR/LF separato con un singolo /. Nella serie VT300, ad esempio, i glifi di caratteri a 80 colonne erano larghi 15 pixel e alti 12, il che significa che un carattere poteva essere definito inviando un totale di 30 sixels.
Il colore è supportato anche utilizzando il #carattere, seguito da un numero che fa riferimento a uno dei numerosi registri di colore , che varia da dispositivo a dispositivo. I colori nei registri sono definiti utilizzando valori RGB o HLS in un particolare formato DEC. Per creare un'immagine a colori su una stampante, viene inviata più volte una riga di sixels, ciascuna rappresentante un singolo bitplane dai colori basati sui registri sui terminali (normalmente 2 o 4 bit). Poiché le capacità dell'hardware variano notevolmente, un disegno a sei colori può essere inviato solo ai dispositivi di destinazione. I terminali non grafici generalmente ignorano silenziosamente le sequenze di escape sixel.
Campione
<ESC>Pq #0;2;0;0;0#1;2;100;100;0#2;2;0;100;0 #1~~@@vv@@~~@@~~$ #2??}}GG}}??}}??- #1!14@ <ESC>\
L'esempio sopra entra in modalità sixel, imposta tre registri di colore e quindi usa quei registri per disegnare sei in quei colori. La #0;2;0;0;0è interpretato come "registro colore set 0, modalità utilizzo 2 (modalità RGB), insieme R, G e B a 0%". Questo imposta il colore 0 su nero e i seguenti comandi impostano il registro 1 su giallo (100%, 100%, 0%) e 2 su verde (0%, 100%, 0%). A differenza della maggior parte dei sistemi moderni che assegnano un valore a 8 bit (0-255) a ciascun canale di colore, la modalità RGB si basa sull'"intensità" di ciascun canale dallo 0% al 100%.
Le righe di dati che seguono selezionano un colore, giallo per il primo e il terzo e verde per il centro, quindi disegnano sei. L'ultima riga mostra l'RLE in uso, che significa "ripeti @( 0b100000) 14 volte". L'output finale è di 14 pixel per 7 pixel, quindi l'ultima riga si ripete semplicemente 0b10000014 volte per riempire l'ultima riga. $alla fine di una riga significa che la riga successiva sovrastampa la riga corrente, mentre -significa che la riga successiva rappresenta una nuova riga di sei.
Appunti
Guarda anche
Riferimenti
- "Manuale di riferimento del programmatore VT330/VT340, Volume 2: Programmazione grafica" , Digital, EK-VT3XX-GP-002, maggio 1988
- Chris Chiesa, All About SIXELs , 29 settembre 1990
