curs_color(3x) curs_color(3x)
start_color, init_pair, init_color, has_colors, can_change_color, color_content, pair_content, COLOR_PAIR - curses color manipulation routines - curses 色を操作するルーチン
# include <curses.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); int COLOR_PAIR(int n);
curses supports color attributes on terminals with that capability. To use these routines start_color must be called, usually right after initscr. Colors are always used in pairs (referred to as color-pairs). A color-pair consists of a foreground color (for characters) and a background color (for the blank field on which the charac- ters are displayed). A programmer initializes a color- pair with the routine init_pair. After it has been ini- tialized, COLOR_PAIR(n), a macro defined in <curses.h>, can be used as a new video attribute. curses はその機能項目を持つ端末で色の属性をサポートします。 これらのルーチンを使うには、通常 initscr の直後に start_color を呼び出す必要があります。 色は常にペアで使用します。(色のペアといいます。) 色のペアは前景色(文字の色)と背景色(地の色で、文字はその上に 表示される)で構成されます。 色のペアは init_pair ルーチンで初期化します。 初期化した後は、新しい表示属性として <curses.h> で定義されるマクロ COLOR_PAIR(n) が使えます。 If a terminal is capable of redefining colors, the pro- grammer can use the routine init_color to change the defi- nition of a color. The routines has_colors and can_change_color return TRUE or FALSE, depending on whether the terminal has color capabilities and whether the programmer can change the colors. The routine col- or_content allows a programmer to extract the amounts of red, green, and blue components in an initialized color. The routine pair_content allows a programmer to find out how a given color-pair is currently defined. 端末で色の変更が可能な場合は、色の定義の変更に init_color ルーチンを使うことができます。 has_colors と can_change_color ルーチンは、端末がカラー機能を 持つかどうか、ユーザーが色を変更できるかどうかにより、それぞれ TRUE か FALSE を返します。 初期化された色から color_content ルーチンで赤・緑・青の成分を 取り出すことができます。 pair_content ルーチンを使うと与えられた色のペアが 現在どのように定義されているかを探ることができます。
The curses library combines these inputs to produce the actual foreground and background colors shown on the screen: curses ライブラリは下記の入力を組み合わせて、実際に画面に 表示する前景色と背景色を作ります。 o per-character video attributes (e.g., via waddch), o 文字ごとの表示属性 (例えば waddch 経由) o the window attribute (e.g., by wattrset), and o ウインドウの属性 (例えば wattrset による) o the background character (e.g., wbkgdset). o 背景文字 (例えば wbkgdset)。 Per-character and window attributes are usually set by a parameter containing video attributes including a COL- OR_PAIR value. Some functions such as wattr_set use a separate parameter which is the color pair number. 文字ごとの表示属性とウインドウの属性は通常 COLOR_PAIR の値を含む表示属性を含む 1 つのパラメータによって 設定されます。 wattr_set のようないくつかの関数は、色のペアの番号である 別々の引数を使います。 The background character is a special case: it includes a character value, just as if it were passed to waddch. 背景文字は特別な場合です。 これはちょうど waddch に渡されたかのような文字値を含みます。 The curses library does the actual work of combining these color pairs in an internal function called from waddch: curses ライプラリは、これらの色のペアを組み合わせる 実際の処理を、 waddch から呼び出される内部関数で処理します。 o If the parameter passed to waddch is blank, and it us- es the special color pair 0, o waddch に渡される引数が空白だった場合、 特別な色のペア 0 を使います。 o curses next checks the window attribute. o curses は次にウインドウの属性を調べます。 o If the window attribute does not use color pair 0, curses uses the color pair from the window at- tribute. ウインドウの属性が色のペア 0 でなければ、 curses はウインドウの属性から色のペアを使います。 o Otherwise, curses uses the background character. o それ以外の場合 curses は背景文字を使います。 o If the parameter passed to waddch is not blank, or it does not use the special color pair 0, curses prefers the color pair from the parameter, if it is nonzero. Otherwise, it tries the window attribute next, and fi- nally the background character. waddch に渡された引数が空白でないか、 特別な色のペア 0 を使わない場合、引数が 0 でなければ、 curses は引数から色のペアを選びます。 その他の場合、次にウインドウの属性を試し、 最後は背景文字を使います。 Some curses functions such as wprintw call waddch. Those do not combine its parameter with a color pair. Conse- quently those calls use only the window attribute or the background character. wprintw のようないくつかの curses 関数は waddch を使います。 これらは色のペアと引数を組み合わせません。 その結果、これらの呼び出しはウインドウ属性か背景文字しか 使いません。
The start_color routine requires no arguments. It must be called if the programmer wants to use colors, and before any other color manipulation routine is called. It is good practice to call this routine right after initscr. start_color does this: start_color ルーチンに引数はありません。 色を使う場合には、他の色操作ルーチンを呼び出す前に start_color を呼び出す必要があります。 initscr の直後にこのルーチンを呼び出すのは良い習慣です。 start_color は以下の処理をします。 o It initializes two global variables, COLORS and COL- OR_PAIRS (respectively defining the maximum number of colors and color-pairs the terminal can support). 2 つの広域(グローバル)変数 COLORS と COLOR_PAIRS を 初期化します。(それぞれ、端末がサポートする色と色のペアの 最大数を定義します。) o It initializes the special color pair 0 to the default foreground and background colors. No other color pairs are initialized. 特別な色のペア 0 をデフォルトの前景色と背景色として 初期化します。他の色のペアは初期化しません。 o It restores the colors on the terminal to the values they had when the terminal was just turned on. 端末の色を、端末が起動した時の値に戻します。 o If the terminal supports the initc (initialize_color) capability, start_color initializes its internal table representing the red, green and blue components of the color palette. 端末が initc (initialize_color) 機能項目を サポートしている場合、 start_color はカラーパレットの 赤・緑・青成分を表す内部テーブルを初期化します。 The components depend on whether the terminal uses CGA (aka "ANSI") or HLS (i.e., the hls (hue_lightness_sat- uration) capability is set). The table is initialized first for eight basic colors (black, red, green, yel- low, blue, magenta, cyan, and white), and after that (if the terminal supports more than eight colors) the components are initialized to 1000. 色成分は、端末が CGA (aka "ANSI") を用いるか、 HLS (つまり hls (hue_lightness_saturation) 機能項目が 設定されている) を用いるかによって異なります。 まず基本色 8 色(黒、赤、緑、黃、青、マゼンタ、シアン、 白)でテーブルを初期化し、その後(端末が 8 色より多くを サポートしていれば)色成分を 1000 まで初期化します。 start_color does not attempt to set the terminal's color palette to match its built-in table. An appli- cation may use init_color to alter the internal table along with the terminal's color. start_color は内蔵のテーブルに合わせて 端末のカラーパレットを設定しようとはしません。 端末の色に合わせて内蔵テーブルを変更するには init_color を使います。 These limits apply to color values and color pairs. Val- ues outside these limits are not legal, and may result in a runtime error: 以下の制限が色の値と色のペアに適用されます。 これらの制限からはずれた値は不正であり、実行中エラーとなる でしょう。 o COLORS corresponds to the terminal database's max_col- ors capability, which is typically a signed 16-bit in- teger (see terminfo(5)). COLORS は端末データベースの max_colors 機能項目に 対応します。典型的には符号付き 16 ビット整数値です。 ( terminfo(5) を参照してください。) o color values are expected to be in the range 0 to COL- ORS-1, inclusive (including 0 and COLORS-1). 色の値は 0以上 COLORS-1 以下の範囲を想定しています。 (両端も含む、つまり 0 と COLORS-1 も含む) o a special color value -1 is used in certain extended functions to denote the default color (see use_de- fault_colors). 特別な色の値 -1 が特定の拡張機能関数でデフォルトの色を 表すのに使われます。 ( use_default_colors を参照してください。) o COLOR_PAIRS corresponds to the terminal database's max_pairs capability, which is typically a signed 16-bit integer (see terminfo(5)). COLOR_PAIRS は端末データベースの max_pairs 機能項目に 対応します。典型的には符号付き 16 ビット整数値です。 ( terminfo(5) を参照してください。) o legal color pair values are in the range 1 to COL- OR_PAIRS-1, inclusive. 有効な色のペアの値は 1 以上 COLOR_PAIRS-1 以下です。 o color pair 0 is special; it denotes "no color". o 色のペア 0 は特別扱いで、「色がない」ことを表します。 Color pair 0 is assumed to be white on black, but is actually whatever the terminal implements before color is initialized. It cannot be modified by the applica- tion. 色のペア 0 は黒地に白と仮定されています。しかし 実際には、色を初期化する前に端末が実装している色です。 アプリケーションから変更することはできません。 The init_pair routine changes the definition of a color- pair. It takes three arguments: the number of the color- pair to be changed, the foreground color number, and the background color number. For portable applications: init_pair ルーチンは色のペアの定義を変更します。 変更する色のペアの番号、前景色の番号、背景色の番号の 3 つの引数を取ります。 ポータブル・アプリケーションでは、 o The first argument must be a legal color pair value. If default colors are used (see use_default_colors) the upper limit is adjusted to allow for extra pairs which use a default color in foreground and/or back- ground. 1 番目の引数は有効な色のペアの値でなければなりません。 デフォルトの色を使うとき( use_default_colors 参照)、 上限は前景色と背景色にデフォルトの色を使う拡張的な 色のペアを受け入れるように調整されます。 o The second and third arguments must be legal color values. 2 番目と 3 番目の引数は有効な色の値でなければなりません。 If the color-pair was previously initialized, the screen is refreshed and all occurrences of that color-pair are changed to the new definition. 色のペアが以前に初期化されていた場合、画面を更新し、 現れた色のペアはすべて新しい定義に変更されます。 As an extension, ncurses allows you to set color pair 0 via the assume_default_colors routine, or to specify the use of default colors (color number -1) if you first in- voke the use_default_colors routine. 拡張機能として、 ncurses では assume_default_colors ルーチンで色のペア 0 を設定できます。または、初めに use_default_colors ルーチンを呼び出すことでデフォルトの色 (色番号 -1)を使うことを指定できます。 The init_color routine changes the definition of a color. It takes four arguments: the number of the color to be changed followed by three RGB values (for the amounts of red, green, and blue components). The first argument must be a legal color value; default colors are not allowed here. (See the section Colors for the default color in- dex.) Each of the last three arguments must be a value in the range 0 through 1000. When init_color is used, all occurrences of that color on the screen immediately change to the new definition. init_color ルーチンは色の定義を変更します。 色の番号と、変更後の RGB の値(赤・緑・青の成分の輝度) 3 つの 計 4 つの引数を取ります。 1 番目の引数は有効な色の値でなければなりません。 デフォルトの色はここでは使用できません。 ( デフォルトの色の一覧は 色 の節を参照してください。) 後ろ 3 つの引数は 0 から 1000 までの値でなければなりません。 init_color を使うと、画面上のその色はすぐに新しい定義に 変更されます。 The has_colors routine requires no arguments. It returns TRUE if the terminal can manipulate colors; otherwise, it returns FALSE. This routine facilitates writing terminal- independent programs. For example, a programmer can use it to decide whether to use color or some other video at- tribute. has_colors ルーチンに引数はありません。 端末が色を扱えれば TRUE を、そうでなければ FALSE を返します。 このルーチンは端末に依存しないプログラムを作るとき便利です。 例えば、色を使うか、他の表示属性を使うかを決めるために 使うことができます。 The can_change_color routine requires no arguments. It returns TRUE if the terminal supports colors and can change their definitions; other, it returns FALSE. This routine facilitates writing terminal-independent programs. can_change_color ルーチンに引数はありません。 端末が色をサポートし、その定義を変更できるなら TRUE を、 そうでなければ FALSE を返します。 このルーチンは端末に依存しないプログラムを作るとき便利です。 The color_content routine gives programmers a way to find the intensity of the red, green, and blue (RGB) components in a color. It requires four arguments: the color number, and three addresses of shorts for storing the information about the amounts of red, green, and blue components in the given color. The first argument must be a legal color value, i.e., 0 through COLORS-1, inclusive. The values that are stored at the addresses pointed to by the last three arguments are in the range 0 (no component) through 1000 (maximum amount of component), inclusive. color_content ルーチンを使うと、ある色の RGB (赤・緑・青) 成分の輝度を知ることができます。 色の番号と、与えられた色の RGB 成分の値を格納する short 値のアドレス 3 つ、計 4 つの引数を取ります。 1 番目の引数は有効な色の値、すなわち 0 以上 COLORS-1 以下 でなければなりません。 後ろ 3 つの引数で示されるアドレスに格納される値は、 0 (全く成分がない) 以上 1000 (最大の成分値) 以下の範囲に なります。 The pair_content routine allows programmers to find out what colors a given color-pair consists of. It requires three arguments: the color-pair number, and two addresses of shorts for storing the foreground and the background color numbers. The first argument must be a legal color value, i.e., in the range 1 through COLOR_PAIRS-1, inclu- sive. The values that are stored at the addresses pointed to by the second and third arguments are in the range 0 through COLORS, inclusive. pair_content ルーチンを使うと、与えられた色のペアが どの色で構成されているかを知ることができます。 色のペアの番号と、前景色と背景色の番号を格納する short 値のアドレス 2 つ、計 3 つの引数を取ります。 1 番目の引数は有効な色の(訳注: ペアの)値、すなわち 1 以上 COLOR_PAIRS-1 以下でなければなりません。 2 番目と 3 番目の引数で示されるアドレスに格納される値は、 0 以上 COLORS (訳注: COLORS-1) 以下になります。
In <curses.h> the following macros are defined. These are the standard colors (ISO-6429). curses also assumes that COLOR_BLACK is the default background color for all termi- nals. <curses.h> は次のマクロを定義しています。 これらは標準の色です(ISO-6429)。 curses はまた、すべての端末において COLOR_BLACK を デフォルトの背景色と仮定します。 COLOR_BLACK COLOR_RED COLOR_GREEN COLOR_YELLOW COLOR_BLUE COLOR_MAGENTA COLOR_CYAN COLOR_WHITE
The routines can_change_color() and has_colors() return TRUE or FALSE. can_change_color() と has_colors() ルーチンは TRUE または FALSE を返します。 All other routines return the integer ERR upon failure and an OK (SVr4 specifies only "an integer value other than ERR") upon successful completion. 他のすべてのルーチンは、失敗したときに整数値 ERR を、 正常終了したときに OK ( SVr4 は「 ERR 以外の整数値」としか 指定していません) を返します。 X/Open defines no error conditions. This implementation will return ERR on attempts to use color values outside the range 0 to COLORS-1 (except for the default colors ex- tension), or use color pairs outside the range 0 to COL- OR_PAIRS-1. Color values used in init_color must be in the range 0 to 1000. An error is returned from all func- tions if the terminal has not been initialized. An error is returned from secondary functions such as init_pair if start_color was not called. X/Open はエラーの条件を何も定義していません。 この実装は、 0 以上 COLORS-1 以下の範囲の外の色の値を 使おうとした場合(デフォルトの色を使う拡張を除く)、または 0 以上 COLOR_PAIRS-1 以下の範囲の外の色のペアの値を 使おうとした場合に ERR を返します。 init_color で使う色(訳注: 色の成分)の値は、 0 から 1000 の 範囲でなければなりません。 端末が初期化されていない場合、すべての関数はエラーを 返します。 start_color が呼び出されていない場合、 init_pair のような 後続的な関数はエラーを返します。 init_color returns an error if the terminal does not support this feature, e.g., if the initialize_color capa- bility is absent from the terminal description. 端末がこの機能をサポートしていない場合、例えば initialize_color 機能項目が端末記述から欠落している 場合にエラーを返します。 start_color returns an error if the color table cannot be al- located. 色のテーブルが割り当てられない場合にエラーを 返します。
In the ncurses implementation, there is a separate color activation flag, color palette, color pairs table, and as- sociated COLORS and COLOR_PAIRS counts for each screen; the start_color function only affects the current screen. The SVr4/XSI interface is not really designed with this in mind, and historical implementations may use a single shared color palette. ncurses の実装では、各端末ごとに別々の色有効化フラグ、 カラーパレット、色のペアのテーブル、 COLORS と COLOR_PAIRS の値があり、 start_color 関数は現在画面にしか 作用しません。 SVr4/XSI のインターフェイスはこのような考えで実際に設計 されておらず、歴史的な実装では 1 つのカラーパレットを 共有して使うことがあります。 Note that setting an implicit background color via a color pair affects only character cells that a character write operation explicitly touches. To change the background color used when parts of a window are blanked by erasing or scrolling operations, see curs_bkgd(3x). 色のペアを通して暗黙に背景色を設定すると、文字の 書き込み操作が明示的にタッチしたマスにしか作用しないことに 注意してください。 ウインドウの一部分が消去かスクロール操作で空白になるときに 使われる背景色を変えるには curs_bkgd(3x) を参照してください。 Several caveats apply on 386 and 486 machines with VGA- compatible graphics: VGA 互換グラフィックスを持つ 386 と 486 マシンに適用される いくつかの注意があります。 o COLOR_YELLOW is actually brown. To get yellow, use COLOR_YELLOW combined with the A_BOLD attribute. COLOR_YELLOW は実際には茶色です。黄色にするには、 COLOR_YELLOW を A_BOLD 属性と組み合わせてください。 o The A_BLINK attribute should in theory cause the back- ground to go bright. This often fails to work, and even some cards for which it mostly works (such as the Paradise and compatibles) do the wrong thing when you try to set a bright "yellow" background (you get a blinking yellow foreground instead). A_BLINK 属性は理論的には背景が明るくなるはずです。 これはしばしばうまく動作しません。 そして、ほぼ正しく動作するビデオカード( Paradise とその 互換品)でさえ、明るい黄色の背景色を設定しようとすると 間違った動作をします。(代わりに黄色の前景色が点滅します) o Color RGB values are not settable. o 色の RGB 値は設定できません。
This implementation satisfies XSI Curses's minimum maxi- mums for COLORS and COLOR_PAIRS. この実装は XSI Curses による COLORS と COLOR_PAIRS の 最大値の最小限度を満足しています。 The init_pair routine accepts negative values of fore- ground and background color to support the use_de- fault_colors extension, but only if that routine has been first invoked. init_pair ルーチンは use_default_colors 拡張機能を サポートするため、負の値の前景色と背景色を受け付けますが、 それは use_default_colors ルーチンを初めに呼び出した場合だけ です。 The assumption that COLOR_BLACK is the default background color for all terminals can be modified using the as- sume_default_colors extension. すべての端末でデフォルトの背景色が COLOR_BLACK である という仮定は assume_default_colors 拡張機能を使うことで 変更できます。 This implementation checks the pointers, e.g., for the values returned by color_content and pair_content, and will treat those as optional parameters when null. この実装はポインタ、例えば color_content と pair_content が 返す値のためのポインタを検査します。そしてヌルのときには 省略可能な引数のように扱います。
curses(3x), curs_initscr(3x), curs_attr(3x), curs_variables(3x), default_colors(3x) curs_color(3x)