ここでは,DECterm 端末エミュレータで用意されている,ローカル言語サポートのためのプログラミング機能について説明します。
C.1 DECterm ウィンドウにおける罫線の処理
ビデオ端末用のプログラミング・マニュアルには,ANSI エスケープ・シーケンスを使用して,文字の挿入と削除,空白行の挿入と削除,倍の高さと幅を持つ文字の表示などの操作をどのように行うかが説明されています。 DECterm ウィンドウはエミュレータであるため,これらのエスケープ・シーケンスは,DECterm ウィンドウにテキストやグラフィックスを表示するプログラムにも使用できます。
オペレーティング・システムが備えるアジア系言語のための拡張機能には,DECterm ウィンドウ内の指定した領域に罫線を引いたり削除するためのエスケープ・シーケンスが追加されています。 これらのエスケープ・シーケンスを使用することにより,アプリケーションで表やダイアグラムを描画できます。
以降の節では,パターンと領域パラメータに従って罫線を引いたり削除するためのエスケープ・シーケンスについて説明します。
C.1.1 パターンに従った罫線の描画
ニーモニック
DECDRLBR
で表されるエスケープ・シーケンスは,指定されたパターンに従って四角形の境界上に罫線を引きます。
DECDRLBR
のフォーマットは,次のとおりです。
CSI P1;Px;Plx;Py;Ply ,r
意味は,次のとおりです。
P1 は,罫線の描画パターンを示します。
P1 は,四角形のすべての辺に罫線を引く,左右の辺だけに罫線を引く,上下の辺だけに罫線を引くなどのパターンを示します。
Px は,開始点の絶対位置をカラムで示します。
Plx は,領域の幅をカラム数で示します。
Py は,開始点の絶対位置を行で示します。
Ply は,領域の高さを行数で示します。
DECterm ソフトウェアは,アプリケーションから
DECDRLBR
エスケープ・シーケンスを受け取ると,P1
に指定されたパターンに従って,
座標
(Px
,Py
)
と
(Px
+Plx
-1,
Py
+Ply
-1)
間の領域の 1 つまたは複数の境界上に罫線を引きます。
次の例を考えてみます。
CSI 15 ; 1 ; 5 ; 1 ; 2 , r
上記のエスケープ・シーケンスにより,DECterm ソフトウェアは図 C-1に示す罫線を引きます。
図 C-1: DECDRLBR シーケンスを用いた罫線の描画
DECterm ソフトウェアは,1 ピクセル幅の罫線を描画できます。 画面をスクロールすると,罫線はテキストと同様にスクロールします。
図 C-2
とその後の表は,DECDRLBR
パラメータに対応するビット・パターンを示します。
図 C-2: DECDRLBR パラメータのビット・パターン
ビット | ビット値 | 説明 |
ビット 0 | 1 | 下辺に罫線を引きます。 |
ビット 1 | 2 | 右辺に罫線を引きます。 |
ビット 2 | 4 | 上辺に罫線を引きます。 |
ビット 3 | 8 | 左辺に罫線を引きます。 |
次のリストで,DECDRLBR
パラメータについてより詳細に説明します。
罫線のパターン
(P1
)
パターンは,領域境界上にどのように罫線を引くかを制御するビットマスクです。 罫線は,境界線上のビットのオン/オフによって描画されます。 たとえば,P1 が 15 に設定されていれば,すべての境界上に罫線が引かれ,P1 が 5 に設定されていれば,上下の境界上に罫線が引かれます。 例を次に示します。
境界 : 下辺 右辺 上辺 左辺 P1 = ビット 0 + ビット 1 + ビット 2 + ビット 3 P1 = 1 + 2 + 4 + 8 = 15 P1 = 1 + 4 = 5
Px は開始カラム位置であり,Py は開始行位置です。 これらのパラメータを省略するか,明示的に 0 (ゼロ) に設定したときは,開始位置はカラム 1 と行 1 になります。 つまり,四角形の左上隅が座標 (1,1) になります。
Plx はカラム数による領域の幅であり,Ply は行数による領域の高さです。 これらのパラメータを省略するか,明示的に 0 (ゼロ) に設定したときは,領域は 1 カラム幅で 1 行の高さになります。
エスケープ・シーケンス
DECERLBRP
は,指定されたパターンに従って四角形の境界上の罫線を削除します。
DECERLBRP
のフォーマットは,次のとおりです。
CSI P1;Px;Plx;Ply;Py,s
意味は次のとおりです。
P1 は,罫線の描画パターンを示します。
P1 は,四角形のすべての辺に罫線を引く,左右の辺だけに罫線を引く,上下の辺だけに罫線を引くなどのパターンを示します。
Px は,開始点の絶対位置をカラムで示します。
Plx は,領域の幅をカラム数で示します。
Py は,開始点の絶対位置を行で示します。
Ply は,領域の高さを行数で示します。
エスケープ・シーケンス
DECERLBRA
は,領域境界上に引かれた罫線だけでなく,矩形領域内のすべての罫線を削除します。
DECERLBRA
のフォーマットは,次のとおりです。
CSI P1;Px;Plx;Py;Ply ,t
意味は次のとおりです。
P1 は,領域が画面全体なのか,画面の一部なのかを指定します。
P1 の値が 1 の場合,DECterm ソフトウェアは画面上のすべての罫線を削除します。 その場合,パラメータ Px,Plx,Py,および Ply は無視されます。 P1 の値が 2 の場合,DECterm ソフトウェアは,パラメータ Px,Plx,Py,および Ply で定義される矩形領域内のすべての罫線を削除します。 P1 が省略されているか,明示的に 0 (ゼロ) に設定されている場合,DECterm ソフトウェアは画面上のすべての罫線を削除します (P1 の値が,省略時の値 1 の場合と同じ結果)。
Px は,開始点の絶対位置をカラムで示します。
Plx は,領域の幅をカラム数で示します。
Py は,開始点の絶対位置を行で示します。
Ply 領域の高さを行数で示します。
C.1.4 その他の DECterm エスケープ・シーケンス
表 C-1
に,画面上に罫線を引く際の標準 DECterm エスケープ・シーケンスの効果を示します。
表 C-1: 罫線に対する標準エスケープ・シーケンスの効果
ニーモニック | 説明 | 罫線への効果 |
DECDWL ,
DECDHLT ,
DECDHLB |
2 倍の幅,または 2 倍の高さで表示します。 | これらのエスケープ・シーケンスは,幅が常に 1 ピクセルの罫線には影響しません。 また,エスケープ・シーケンスが,テキストの高さと幅を 2 倍にするパラメータを指定して使用された場合でも,罫線の表示を制御するエスケープ・シーケンスのパラメータ単位は,カラムの幅と行の高さが常に等間隔になるように設定されます。 |
GSM |
グラフィックス・サイズを変更します。 | これらのエスケープ・シーケンスは,幅が常に 1 ピクセルの罫線には影響しません。
DECDWL ,DECDHLT ,および
DECDHLB
に対する上記のコメントは,GSM
にも当てはまります。 |
ED ,EL ,
ECH |
画面の削除,行の削除,および文字の削除を実行します。 | これらのエスケープ・シーケンスは罫線の削除は行わず,罫線の内側にある文字だけを削除します。 次に例を示します。
|
DL |
行を削除します。 | このエスケープ・シーケンスは,削除操作を行っている行の文字と罫線の両方を削除します。 削除位置の後のテキスト行とそれに対応する罫線が上方向にスクロールされます。 次に例を示します。
|
IL |
行を挿入します。 | このエスケープ・シーケンスは,現在の位置に空白行を挿入します。 現在の位置にあるテキスト行とそれに対応する罫線が下方向にスクロールされます。 次に例を示します。
|
DCH |
文字を削除します。 | このエスケープ・シーケンスは,罫線を削除しません。 次の例は,第 3 カラムで 4 文字を削除します。
|
ICH |
文字を挿入します。 | このエスケープ・シーケンスは現在の位置に空白を挿入しますが,罫線には影響しません。 次の例は,第 3 カラムに 4 文字を挿入します。
|
IRM |
挿入/置換モードに入ります。 | 挿入/置換モードは,罫線には影響しません。 次の例は,第 3 カラムに文字 w,x,y,z を挿入し,文字 f を s に置換します。
|
DECCOLM |
カラム・モードに入ります。 | カラム・モードが有効なときは,テキストとそれに対応する罫線が削除されます。 |
RIS ,
DECSTR |
初期状態とソフト端末をリセットし,リセット SETUP モードに入ります。 | RIS
シーケンスは画面上のすべての罫線を削除しますが,DECSTR
シーケンスは罫線を削除しません。
DECterm の Commands メニューの Clear Display オプションは,すべての罫線を削除しますが,Reset Terminal オプションは罫線を削除しません。 |
C.1.5 DECterm が罫線をサポートしているかどうかの判定
アプリケーションで罫線を描画できる機能は,DECterm ウィンドウがこの機能をサポートする端末タイプをエミュレートしている場合にのみ使用できます。 アプリケーションは,DECterm ソフトウェアから 1 次デバイス属性を取得することにより,デバイスがサポートされているかどうかを検査できます。
VT 端末と DECterm ソフトウェアは,アプリケーションからの要求に応じて 1 次デバイス属性をレポートします。 レポートに拡張値 43 が含まれているときは,デバイスで罫線を描画できます。 この機能は,level-2 以降のビデオ・ディスプレイで使用できます。 たとえば,DECterm ウィンドウが VT382 の日本語版,VT382-J 端末をエミュレートしている場合,1 次デバイス属性は,次のようにレポートされます。
CSI ? 63 ; 1 ; 2 ; 4 ; 5 ; 6 ; 7 ; 8 ; 10 ; 15 ; 43 c
アプリケーションは
CSI c
または
CSI 0 c
のいずれかのエスケープ・シーケンスを VT 端末,あるいは DECterm ソフトウェアに送ることにより,デバイス属性レポートを取得できます。
C.2 DECterm プログラミングにおける制約
この節では,ハードウェア・マニュアルに記載されている端末プログラミング機能に関する DECterm ソフトウェアの制約について説明します。
C.2.1 ダウンライン・ローダブル文字
DECterm ソフトウェアは,端末のプリロードとオンデマンド・ローディングに使用されるダウンライン・ローダブル文字をサポートしません。
DECterm ソフトウェアは,これらの文字のエスケープ・シーケンスを無視します。
C.2.2 DRCS 文字
DECterm ソフトウェアは,DRCS (DIGITAL Replacement Character Set) の標準文字セット (SCS) コンポーネント以外はサポートしません。
DECterm ソフトウェアは SCS 文字を受け取ると,X ウィンドウ・サーバの
-*-dec-drcs
という XLFD 名を持つフォントを検索し,ソフト文字セットとして処理します。
また,DECterm ソフトウェアは,端末プログラミング・アプリケーションから送られた DECDLD 制御文字列を無視します。