curs_outopts(3X) | curs_outopts(3X) |
名称
clearok, idlok, idcok, immedok, leaveok, setscrreg, wsetscrreg, scrollok, nl, nonl - curses 出力オプション書式
#include <curses.h>解説
これらのルーチンは、 curses 内の出力のスタイルを変更するオプションを設定します。すべてのオプションは、特に指定のない限り、最初は FALSE です。 endwin を呼び出す前に、これらのオプションをオフに切り替える必要はありません。clearok が引数として TRUE を付けて呼び出されるなら、このウィンドウで wrefresh の次の呼び出しは、画面を完全にクリアし、最初からすべての画面を再描画します。これは、画面の内容が不確かなとき、またはある場合に、より心地よい視覚効果のために、役に立ちます。 clearok への win 引数がグローバル変数 curscr であるなら、あらゆるウィンドウで wrefresh への次の呼び出しによって、画面は、クリアされ、最初から再描画されます。
idlok が 2 つめの引数として TRUE で呼び出されるなら、 curses は、備えられた、端末のハードウェアの行挿入/削除機能を使用することを考慮します。 2 つめの引数として FALSE を付けて idlok を呼び出すと、行の挿入と削除の使用を無効にします。このオプションは、たとえば画面エディタのように、アプリケーションが行の挿入/削除が必要な場合のみ、有効にされるべきです。行の挿入/削除が本当に必要でないアプリケーションで使用するとき、それがが視覚的にうっとうしい傾向であるのでデフォルトで無効にされます。行の挿入/削除機能が使用することができないなら、 curses は、すべての行の変更された部分を再描画します。
idcok が 2 つめの引数として FALSE を付けて呼び出されるなら、 curses は、もやは備えられたハードウェアの端末の文字挿入/削除機能を使用することを考慮しません。文字の挿入/削除の使用は、デフォルトで有効にされます。 2 つめの引数として TRUE を付けて idcok を呼び出すと、文字の挿入と削除の使用を再び有効にします。
immedok が引数として TRUE を付けて呼び出されるなら、 waddch, wclrtobot, wscrl, その他によって引き起こされたもののように、ウィンドウイメージでのあらゆる変更は、 wrefresh への自動的な呼び出しを引き起こします。しかしながら、それは、繰り返し wrefresh を呼び出すために、性能をかなり下げるかもしれません。それは、デフォルトで無効にされます。
通常、ハードウェアカーソルは、リフレッシュされているウィンドウのカーソルの位置に残ります。 leaveok オプションによって、更新がそれを残すために起こったところならどこでも、カーソルを残すことができます。カーソルの移動の必要が少なくなるので、カーソルを使用しないアプリケーションで役に立ちます。
setscrreg と wsetscrreg ルーチンによって、アプリケーションのプログラマは、ウィンドウのソフトウェアスクロール領域を設定できます。 top と bot は、スクロール領域の上端と下端のマージンの行番号です。 (0 行は、ウィンドウの上端の行です。) このオプションと scrollok が有効にされるなら、下端のマージン行から移動する試みによって、スクロール領域のすべての行は、最初の行の方向に 1 行スクロールさせます。ウィンドウのテキストのみが、スクロールされます。 (VT100 のような、端末の物理的なスクロール領域のケーパビリティの使用とは関係ないことに注意してください。 idlok が有効にされ、端末にスクロール領域または行の挿入/削除ケーパビリティにいずれかがあるなら、それらは、出力ルーチンによってたぶん使用されます。)
scrollok オプションは、下端の行での改行の動作の結果、または最後の行の最終の文字の入力かのいずれかのように、ウィンドウのカーソルがウィンドウまたはスクロール領域の端から移動されるときに起きることを制御します。無効にされるなら ( bf が FALSE)、カーソルは、下端の行に残ります。有効にされるなら ( bf が TRUE)、ウィンドウは、1 行上にスクロールされます。 (端末で物理的なスクロール効果を得るために、 idlok も呼び出す必要があることに注意してください)。
nl と nonl ルーチンは、基本的なディスプレイ装置が入力時にリターンキーを改行に変換するかどうか、または出力時に改行をリターンとラインフィードに変換するかどうかを制御します (いずれの場合も、呼び出し addch('\n') は、仮想画面でリターンとラインフィードは同等となります。) 最初に、これらの変換が行なわれます。 nonl を使用してそれらを無効にするなら、 curses は、ラインフィードのケーパビリティをより良く使用できるようになり、カーソルの動きがより速くなります。また、 curses は、リターンキーを検出することができます。
戻り値
関数 setscrreg と wsetscrreg は、成功すると OK を返し、失敗すれば ERR を返します。整数を返す、他のすべてのルーチンは、常に OK を返します。X/Open は、エラー条件を何も定義していません。
この実装では、ウィンドウのポインタがあるそれらの関数は、ウィンドウのポインタが NULL であるなら、エラーを返します。
- wclrtoeol
- は、カーソル位置が折り返そうとしているなら、エラーを返します。
- wsetscrreg
- は、スクロールしている領域の制限がウィンドウの外側に拡大するなら、エラーを返します。
X/Open は、エラー条件を何も定義していません。この実装は、ウィンドウのポインタが NULL であるなら、エラーを返します。訳注: 説明が二重になっています。
移植性
これらの関数は、XSI Curses standard, Issue 4 に記述されています。XSI Curses 標準は、 raw() が、 nl() と nonl() によって制御された CRLF 変換を無効にするべきかどうかという問題を曖昧にしています。 BSD curses は、これらの変換をオフにしました。 AT&T の curses (すくなくとも SVr1 と同じくらいの時期) は、行っていません。生の入力を要求するプログラマがオペレーティングシステムが変更しないクリーン (理想的に 8 ビットクリーン) な接続を望むという理論で、そうすることを選びます。
いくつかの歴史的な curses の実装は、文書化されていない機能として、 touchwin(stdscr) または clear(stdscr) に記述することによって clearok(..., 1) と同等なことを行う能力がありました。これは、ncurses の下で動作しません。
初期の System V curses の実装は、有効にされた scrollok で、スクロールを引き起こすあらゆるウィンドウの修正も物理的なリフレッシュを強要することを明記しています。 XSI Curses は、これを要求せず、 ncurses は、 wrefresh 時によりよい垂直動作の最適化を実行するために、それを行うことを避けます。
XSI Curses 標準は、カーソルが leaveok の副作用のように目に見えなくなるべきであることを記述していません。 SVr4 curses の文書は、これを行なっていますが、コードは、行なっていません。カーソルを目に見えなくするために curs_set を使用してください。
注
clearok、 leaveok、 scrollok、 idcok、 nl、 nonl と setscrreg は、マクロであるかもしれないことに注意してください。immedok ルーチンは、端末のエミュレータとして使用されるウィンドウのために役立ちます。