シクセル
Sixelは 、「6ピクセル」の略で、DECの端末とプリンターでサポートされているビットマップグラフィックス形式です。これは、高さ6ピクセル、幅1ピクセルのパターンで構成されており、64のパターンが可能です。可能なパターンにはそれぞれASCII文字が割り当てられており、7ビットシリアルリンクでの転送が簡単になります。
Sixelは、LA50などのDECドットマトリックスプリンターにビットマップグラフィックスを送信する方法として初めて導入されました。 「シクセルモード」になった後、次のデータは、9ピンプリントヘッドの6本のピンを直接制御すると解釈されました。 sixel文字の文字列は、画像の単一の高さ6ピクセルの行をエンコードします。
システムは、カスタム文字セットを定義するときにビットマップデータをVT200シリーズおよびVT320端末に送信する方法として後で再利用されました。一連のシックスは、各文字のビットマップを転送するために使用されます。この機能は、ソフト文字セットまたは動的再定義可能文字セット(DRCS)と呼ばれます。 VT240、VT241、VT330、およびVT340を使用すると、端末は、以前にプリンターに送信されていたもののように、完全なシクセルイメージを画面にデコードできました。
説明
Sixelは、ビットマップを一連の6ピクセルの高さの水平ストリップに分割することで画像をエンコードします。特定のストリップの各1ピクセル幅の垂直列は、1つのシケルを形成します。各シネルのピクセルはバイナリとして読み取られ、「オン」ピクセルが1としてエンコードされた単一の6ビット数にエンコードされます。この数字は10進数で0〜63で、63オフセットされた単一のASCII文字に変換されます。すべて黒のシクセル、10進数の0は、?としてエンコードされます。これにより、ASCII文字セットの印刷可能な文字範囲内にシクセルが残ることが保証されます。キャリッジリターン(CR)は$で表され、改行(LF)は-で表されます。カーソルを行の先頭CRLFに戻すには、両方を順番に送信する必要がありました。
Sixelには、ランレングスエンコーディング(RLE)を使用した基本的な圧縮形式も含まれています。これは、!文字とそれに続く10進数の繰り返し回数、1つのシケル文字を繰り返します。以来! 10進数字は有効なSixelデータにはなり得ず、エンコードされた範囲の外側にあるため、エンコードはソフトウェアで簡単に識別および展開できます。
シーケンスESC + Pp1; p2; p3; qを送信すると、「ピクセルモード」に入ります。 p1からp3はオプションのセットアップパラメーターで、p1はアスペクト比(p3を推奨)を定義し、p2はゼロの色の解釈方法を、p3は単純なグリッドサイズパラメーターを使用します。 ESC + Pは標準のDEC「デバイス制御文字列」またはDCSで、DECの機器の多くの特別な機能をオンまたはオフにするために使用されました。 「q」はsixel識別子です。次に、qにSixelデータが続きました。 「テキストの停止」シーケンスESC + \は、デバイスを再び通常の文字モードに戻しました。
印刷の場合、シクセルはプリンタに送信され、デコードされてバイナリに戻され、プリントヘッドの6つのピンに直接送信されます。唯一の複雑さは、RLEを内部印刷バッファーに拡張することでした。端末での表示はやや難しくなります。グラフィックをサポートする端末では、ReGISグラフィックシステムを使用して、画面のビットマップにsixelパターンを直接描画しました。これは、ビットマップパターンをグリフとして保存してからブリットすることにより、高速で実行されました。
カスタム文字セットの定義に使用した場合、形式はほぼ同じでしたが、エスケープコードは変更されました。データに関して、唯一の大きな違いは、個別のCR / LFを単一の/に置き換えることです。たとえば、VT300シリーズでは、80桁の文字グリフは幅15ピクセル、高さ12でした。つまり、合計30のシクセルを送信することで文字を定義できました。
色は、#文字の後に、デバイスごとに異なる多数のカラーレジスタの1つを指す数字を続けて使用することでもサポートされます。レジスタ内の色は、固有のDEC形式のRGB値またはHLS値を使用して定義されます。プリンターでカラー画像を作成するために、6つの行が数回送信されます。各行は、端末上のレジスタベースの色(通常は2または4ビット)からの単一ビットプレーンを表します。ハードウェアの機能はさまざまであるため、カラーシックスの描画はターゲットデバイスにのみ出力できます。一般に、非グラフィック端末は、sixelエスケープシーケンスを静かに無視します。
サンプル
ESC> Pq#0; 2; 0; 0; 0#1; 2; 100; 100; 0#2; 2; 0; 100; 0#1 ~~ @@ vv @@ ~~ @@ ~~ $ #2 ??}} GG}} ??}} ??-#1!14 @ ESC> \または、echoコマンドを使用して
echo $ '\ ePq#0; 2; 0; 0; 0#1; 2; 100; 100; 0#2; 2; 0; 100; 0#1 ~~ @@ vv @@ ~~ @@ ~~ $#2 ??}} GG}} ??}} ??-#1!14 @ \ e \\ '上記の例では、sixelモードに入り、3つの色レジスタを設定し、それらのレジスタを使用してそれらの色で6色を描画します。 #0; 2; 0; 0; 0は、「カラーレジスタ0を設定、RGBモードを使用(2)、R、G、Bを0に設定」と解釈されます。これにより、カラー0が黒に設定され、次のコマンドはレジスタ1を黄色に、2を緑に設定します。
次のデータ行で色を選択し、1番目と3番目に黄色、中央に緑色を選択してから、6色を描画します。最後の行は、使用中のRLEを示しています。これらのシクセルは、形状「HI」を形成します。
ノート
- ^小文字の「p」はReGIS識別子でした。