default_colors(3x) default_colors(3x)
use_default_colors, assume_default_colors
- 端末のデフォルト色を使う
#include <curses.h>
int use_default_colors(void);
int assume_default_colors(int fg, int bg);
use_default_colors() と assume_default_colors() 関数は、
curses ライブラリの拡張機能です。
これらは ISO 6429 色または互換機能をサポートする端末で
使用します。
これらの端末では、アプリケーションが未指定のデフォルト値に
(例えば SGR 39 または SGR 49 を使って) 色をリセットできます。
訳注: SGR 39 はデフォルトの前景 (文字) 色、
SGR 49 はデフォルトの背景色
全画面を背景色で塗りつぶすようなアプリケーションは、
SGR 39 と SGR 49 を利用することはありません。
一部のアプリケーションはデフォルトの背景を使い、文字にしか
色を付けない設計になっています。
例えば、いくつかの ls プログラムの実装では、異なる
ファイルの種類や許可モード (パーミッション) を示すために
色を使っています。
これらの「カラー ls」プログラムは背景色を変更する必要は
なく、たいていは前景色を変更するために terminfo の setaf
機能項目を使うだけです。
デフォルト色を使う全画面アプリケーションも同じ視覚効果を
達成することができます。
1 つめの関数 use_default_colors() は端末のデフォルト前景色/
背景色のペアを色の番号 -1 にするように curses ライブラリに
伝えます。
そうすると、init_pair(x,COLOR_RED,-1) は色のペア x を
デフォルト背景色の上に赤で表示するように初期化し、
init_pair(x,-1,COLOR_BLUE) は色のペア x を青の上に
デフォルト前景色で表示するように初期化します。
他方、assume_default_colors() は色のペア 0 をどの色に
するかを指定する改良版です。
この関数は、特別な色の番号 -1 は端末のデフォルト色を表すと
認識します。
次の 2 つは等価です。
use_default_colors();
assume_default_colors(-1,-1);
これらは ncurses の拡張機能です。
curses の他の実装では、色の番号 -1 は何も意味しておらず、
ncurses で use_default_colors() や assume_default_colors() の
呼び出しが成功する前の状態と同じです。
curses の他の実装では、アプリケーションが色のペア 0 を
変更することを許していません。
それらの実装は背景色が COLOR_BLACK であると仮定して
いますが、色のペア 0 が仮定どおりの色になる保証はありません。
アプリケーションが use_default_colors() も
assume_default_colors() も使わなければ、ncurses は
色のペア 0 を前景色 (文字) が白、背景色が黒として表示します。
これらの関数は失敗のとき整数 ERR を、成功のとき OK を
返します。
これらの関数は端末が orig_pair または orig_colors 機能項目を
サポートしていない場合は失敗します。
initialize_pair 機能項目が見つからない場合にも、同じように
エラーが発生します。
この拡張機能に伴って、init_pair 関数は、デフォルトの前景色と
背景色を指定するものとして負の引数を受け付けます。
use_default_colors() 関数は ded をサポートするために
追加されました。
これは画面の一部のみを管理するために curses を使う全画面
アプリケーションです。
画面の下部は寸法が可変で、色付けしないままシェル・コマンド
からの結果を表示します。
画面の上部は「カラー ls」プログラムのような方式で
ファイル名をカラー表示します。
このアプリケーションのために画面の背景色を管理しようと
すると、様々な理由から満足の行く結果になりませんでした。
この拡張機能は、カラー xterm (と同様なプログラム) が
どの ANSI 色とも対応する必要のない背景色を提供すると
判明してから工夫されました。
9 つの色を使った特別な terminfo 収録項目 (エントリ) が
構築される間、curses には関連する orig_pair と
back_color_erase 機能項目を説明する仕組みがありませんでした。
assume_default_colors() 関数は別の問題を解決するために
追加されました。環境変数とその他の構成
(コンフィギュレーション) を使うアプリケーションが curses の
端末のデフォルト色という概念を回避し、特定の値を設定するのを
サポートするためです。
これらのルーチンは ncurses 特有です。
これらは Version 7, BSD, System V の実装では
サポートされていません。
これらのルーチンに依存するすべてのコードは、
NCURSES_VERSION を使って条件付きとすることを推奨します。
curs_color(3x), ded(1).
Thomas Dickey (1996年 2月、XFree86 3.1.2C 用の
カラー xterm への要求に対する分析から)。
default_colors(3x)