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)