スポンサーリンク

curs_color

名称
書式
解説
戻り値
注釈
機能
関連項目

名称

start_color, init_pair, init_color, has_colors, can_change_color, color_content, pair_content - ncurses カラー操作ルーチン

書式

# include <ncurses.h>
int start_color(void);
int init_pair(short pair, short f, short b);
int init_color(short color, short r, short g, short b);
bool has_colors(void);
bool can_change_color(void);
int color_content(short color, short *r, short *g, short *b);
int pair_content(short pair, short *f, short *b);

解説

ncurses は、機能のある端末でカラー属性をサポートします。これらのルー チ ンを使用するには、通常、initscr の直後で start_color を呼び出す必要があ ります。色は必ずペアで使用されます (色のペアと呼ばれます)。 色 の ペ ア は、(文字用の) 前景色と (文字が表示されるブランクのフィルタ用の) 背景色 で構成されます。プログラマは、ルーチン init_pair で色のペアを初期化しま す。 初 期 化 が 済んだ後は、<ncurses.h> 内で定義されているマクロである COLOR_PAIR(n) を、新しいビデオ属性として使用できます。

端末が色を再定義できる場合は、プログラマは、ルーチン init_color を使 用 し て、 色 の 定 義 を 変 更 で き ます。ルーチン has_colors とルーチン can_change_color は、端末に色の機能があるかどうか、プログラマが色を変更 で き る か ど う か に 従って、 TRUE または FALSE を返します。ルーチン color_content によって、プログラマは初期化された色の赤、緑、青 の コ ン ポー ネ ン トを取り出せます。ルーチン pair_content によって、プログラマ は、指定の色のペアが現時点でどのように定義されているかを見つけ ら れ ま す。

ルーチンの解説

start_color ルーチンには引数は必要ありません。プログラマが色を使用する 場合は、他の色操作ルーチンが呼び出す前にこれを呼び出す必要がありま す。 initscr の す ぐ 後 で こ の ルー チ ンを呼び出すのは賢明な方法です。 start_color は 8 つの基本色 (黒、赤、緑、黄色、青、赤紫、水色、白) と 2 つのグローバル変数 COLORSCOLOR_PAIRS を初期化します (それぞれ端末が サポートできる色および色のペアの最大数を定義します)。また、端末をオンに 切り替えたときの色に、端末上の色を復元します。

init_pair ルーチンは、色のペアの定義を変更します。次の 3 つの引数を取り ます。変更する色のペアの番号、前景色の番号、および背景色の番号です。 最 初の引数の値は 1COLOR_PAIRS-1 の間である必要があります。 2 番めの引 数の値と 3 番めの引数の値は 0 と COLORS の間にある必要があります (0 色 のペアは黒の上の白に結びつけられているので、変更できません)。色のペアが 以前に初期化されている場合、画面はリフレッシュされ、その色のペアが発 生 したところはすべて新しい定義に変更されます。

init_color ルーチンは色の定義を変更します。次の 4 つの引数を取ります。 変更する色の番号の後に 3 つの RGB 値が続いたものです (赤、緑、青の各 コ ンポーネントの量についてです)。最初の引数の値は、0COLORS の間である 必要があります (デフォルトのカラーインデックスについては、 Colors の セ クションを参照してください)。最後の 3 つの引数はそれぞれ 0 と 1000 の値 の間にある必要があります。 init_color を使用するとき、画面上にその色 が 発生したところはすべてただちに新しい定義に変化します。

has_colors ルーチンには引数は必要ありません。端末が色を操作できる場合は TRUE を返します。そうでない場合は、FALSE を返します。このルーチンは、端 末 に 独 立なプログラムを作成するのを簡単にします。たとえば、プログラマ は、これを使用して、色または他のビデオ属性を使用するかどうか決定でき ま す。

can_change_color ルーチンには引数は必要ありません。端末が色をサポート し、色の定義を変更できる場合は TRUE を返します。そうでない 場 合、FALSE を 返します。このルーチンは端末に独立なプログラムを作成するのを簡単にし ます。

color_content ルーチンは、色の中に赤、緑、青 (RGB) コンポーネントの強度 を見つける方法をプログラマに与えます。次の 4 つの引数が必要です。色の番 号、および指定の色の中の赤、緑、青のコンポーネントに関する情報を保存 す る short の 3 つのアドレスです。最初の引数の値は 0 と COLORS の間です。 最後の 3 つの引数が指すアドレスに保存される値は 0 (コンポーネントな し) と 1000 (コンポーネントの最大量) の間です。

pair_content ルーチンによって、プログラマは、指定の色のペアが何の色で構 成されるかを見つけることができます。次の 3 つの引数が必要です。色のペア の 番号、前景色の番号と背景色の番号を保存するための short の 2 つのアド レスです。最初の引数の値は 1 と COLOR_PAIRS-1 の間にある必要が あ り ま す。 2 番 めの引数と 3 番めの引数が指すアドレスに保存される値は 0 と COLORS の間にあります。

<ncurses.h> では、次のマクロが定義されています。これらはデフォルトの 色 で す。また、ncurses は、COLOR_BLACK がすべての端末についてデフォルトの 背景色であると想定します。

      COLOR_BLACK
      COLOR_RED
      COLOR_GREEN
      COLOR_YELLOW
      COLOR_BLUE
      COLOR_MAGENTA
      COLOR_CYAN
      COLOR_WHITE

戻り値

すべてのルーチンが処理失敗したときに整数 ERR を返し、処理が正常に完了し たときは OK を返します。

注釈

いくつかの警告が VGA 互換のグラフィックスがある 386 マシンと 486 マシン に適用されます。 COLOR_YELLOW は実際には茶色です。黄色に す る た め に は、A_BOLD 属性とCOLOR_YELLOW を組み合わせて使用します。 A_BLINK 属性 は、理論的には背景を明るくするはずです。これは動作に失敗するこ と が 多 く、最も多く動作しているカード (たとえば、Paradise およびこれと互換性の あるもの) でも、明るい "黄色の" 背景を設定しようとするときに間違った 動 作をすることがあります (代わりに前景が黄色でまたたきます)。

色の RGB 値は設定できません。

機能

setf, setb, setaf, setab. curses ライブラリは 2 番めのペアを選んで使用 してから、最初のペアに依存します。

関連項目

ncurses(3), curs_initscr(3), curs_attr(3)

スポンサーリンク