start_color, init_pair, init_color, has_colors, can_change_color, color_content, pair_content - ncurses カラー操作ルーチン |
# include <ncurses.h> |
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 つのグローバル変数 COLORS と COLOR_PAIRS を初期化します (それぞれ端末が サポートできる色および色のペアの最大数を定義します)。また、端末をオンに 切り替えたときの色に、端末上の色を復元します。 init_pair ルーチンは、色のペアの定義を変更します。次の 3 つの引数を取り ます。変更する色のペアの番号、前景色の番号、および背景色の番号です。 最 初の引数の値は 1 と COLOR_PAIRS-1 の間である必要があります。 2 番めの引 数の値と 3 番めの引数の値は 0 と COLORS の間にある必要があります (0 色 のペアは黒の上の白に結びつけられているので、変更できません)。色のペアが 以前に初期化されている場合、画面はリフレッシュされ、その色のペアが発 生 したところはすべて新しい定義に変更されます。 init_color ルーチンは色の定義を変更します。次の 4 つの引数を取ります。 変更する色の番号の後に 3 つの RGB 値が続いたものです (赤、緑、青の各 コ ンポーネントの量についてです)。最初の引数の値は、0 と COLORS の間である 必要があります (デフォルトのカラーインデックスについては、 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) |