Sixel - Sixel
Sixel , forkortelse for "seks pixels", er et bitmap- grafikformat understøttet af terminaler og printere fra DEC . Den består af et mønster, der er seks pixels højt og et bredt, hvilket resulterer i 64 mulige mønstre. Hvert muligt mønster tildeles et ASCII- tegn, hvilket gør det nemt at overføre sekslerne på 7-bit serielle links.
Sixel blev først introduceret som en måde at sende bitmapgrafik til DEC dot matrix-printere som LA50 . Efter at være sat i "sixel-mode" blev følgende data fortolket til direkte kontrol af seks af benene i det ni-benede printhoved . En streng på seks tegn koder for en enkelt 6-pixel høj række i billedet.
Systemet blev senere genbrugt som en måde at sende bitmapdata til VT200-serien og VT320- terminalerne, når man definerede brugerdefinerede tegnsæt . En serie på sixels bruges til at overføre bitmap for hvert tegn. Denne funktion er kendt som bløde tegnsæt eller dynamisk omdefinerbare tegnsæt (DRCS). Med VT240 , VT241 , VT330 og VT340 kunne terminalerne afkode et komplet sekelbillede til skærmen, som dem, der tidligere er sendt til printere.
Beskrivelse
Sixel koder for billeder ved at opdele bitmap i en række 6-pixel høje vandrette strimler. Hver lodret søjle med 1 pixel i en bestemt strimmel danner en enkelt sixel. Hver pixels pixels læses som binære og kodes til et enkelt 6-bit nummer, med "til" pixels kodet som en 1. Dette tal, fra 0 til 63 decimal, konverteres derefter til et enkelt ASCII-tegn, forskudt med 63, så en sort sort sekel, 0 decimal, er kodet som ?. Dette sikrer, at sixels forbliver inden for det udskrivbare tegninterval i ASCII-tegnsættet. Vognretur (CR) er repræsenteret af $, og linjefeedninger (LF) med a -; begge skulle sendes igen for at returnere markøren til starten af linjen CRLF.
Sixel omfatter også en rudimentær form for kompression, under anvendelse run-length encoding (RLE). Dette opnås med !tegnet efterfulgt af et decimaltal af de gange, der skal gentages, og derefter et enkelt sixel-tegn, der skal gentages. Da !cifrene og decimaltallet ikke kan være gyldige sekseldata, der ligger uden for det kodede område, er kodningen let at identificere og udvide tilbage i software.
"Sixel mode" indtastes ved at sende sekvensen ESC+ Pp1;p2;p3;q. P1 til og med p3 var valgfri opsætningsparametre, hvor p1 definerede et billedformat (udfaset til fordel for p3), p2 hvordan man fortolker farven på nuller og p3 med enkle gitterstørrelsesparametre. ESC+ Per standard DEC " Device Control String " eller DCS, som blev brugt til at tænde eller slukke for en række specialfunktioner i DEC's udstyr. "Q" er identifikatoren for seksten. Sixel-data fulgte derefter q. "Stop tekst" sekvensen ESC+ \vendte enheden tilbage til normal tegntilstand igen.
Til udskrivning sendes sixels til printeren, dekodes tilbage til binær og sendes direkte til seks ben i skrivehovedet. Den eneste kompleksitet involverede udvidelse af RLE'erne til den interne udskriftsbuffer. Visning på en terminal er noget sværere. På terminaler, der understøtter grafik, blev ReGIS- grafiksystemet brugt til direkte at trække sekskelmønsteret ind på skærmens bitmap. Dette blev gjort i høj hastighed ved at gemme bitmapmønstrene som en glyf og derefter blitte dem.
Når det blev brugt til at definere brugerdefinerede tegnsæt, var formatet næsten identisk, selvom flugtkoderne blev ændret. Med hensyn til data er den eneste store forskel erstatningen af den separate CR / LF med en enkelt /. I VT300-serien for eksempel var tegnstørrelser med 80 søjler 15 pixel brede med 12 høje, hvilket betyder, at et tegn kunne defineres ved at sende i alt 30 seksler.
Farve understøttes også ved hjælp af #tegnet efterfulgt af et nummer, der henviser til et af et antal farveregistre , der varierede fra enhed til enhed. Farverne i registre defineres ved hjælp af enten RGB- eller HLS- værdier i et ejendommeligt DEC-format. For at oprette et farvebillede på en printer sendes en linje på sekseller flere gange, som hver repræsenterer et enkelt bitplan fra de registerbaserede farver på terminalerne (normalt 2 eller 4 bit). Da hardwarefunktionerne varierer meget, kan en farve-sextegning kun sendes til målrettede enheder. Ikke-grafiske terminaler ignorerer generelt lydløst sekvens-escape-sekvenser.
Prøve
<ESC>Pq #0;2;0;0;0#1;2;100;100;0#2;2;0;100;0 #1~~@@vv@@~~@@~~$ #2??}}GG}}??}}??- #1!14@ <ESC>\
Eksemplet ovenfor går i sekstiltilstand, opretter tre farveregistre og bruger derefter disse registre til at tegne sekseller i disse farver. Den #0;2;0;0;0fortolkes som "indstil farveregister 0, brug tilstand 2 (RGB-tilstand), indstil R, G og B til 0%". Dette indstiller farve 0 til sort, og de følgende kommandoer sætter register 1 til gul (100%, 100%, 0%) og 2 til grøn (0%, 100%, 0%). I modsætning til de fleste moderne systemer, der tildeler en 8-bit værdi (0-255) til hver farvekanal, er RGB-tilstand baseret på "intensitet" for hver kanal fra 0% til 100%.
De følgende datalinjer vælger en farve, gul for den første og tredje og grøn for den midterste, og tegne derefter sekseller. Den sidste linje viser RLE i brug, hvilket betyder "gentag @( 0b100000) 14 gange". Den endelige output er 14 pixels med 7 pixels, så den sidste linje gentages simpelthen 0b10000014 gange for at udfylde den sidste linje. $i slutningen af en linje betyder, at den næste linje overtrykker den aktuelle linje, mens det -betyder, at den næste linje repræsenterer en ny linje på sixels.
Bemærkninger
Se også
- ReGIS (DEC- grafikssproget )
- Squot (firkantet prik)
Referencer
- "VT330 / VT340 Programmer Reference Reference Manual, Volume 2: Graphics Programming" , Digital, EK-VT3XX-GP-002, maj 1988
- Chris Chiesa, Alt om SIXEL , 29. september 1990
