X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fcurs_color.3x.html;h=cdeaec7207c242337c3122e602f909a8cf614fbd;hp=39a73184fccb26dd5f428d442c8583e2c7c8698b;hb=c3b21f65a2687f3894a0d3217006c23f162c893a;hpb=3a935d9991cdf43ebfa952073c9b555f73a3e011 diff --git a/doc/html/man/curs_color.3x.html b/doc/html/man/curs_color.3x.html index 39a73184..cdeaec72 100644 --- a/doc/html/man/curs_color.3x.html +++ b/doc/html/man/curs_color.3x.html @@ -1,7 +1,6 @@ - +
+ +- 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 + can_change_color, color_content, pair_content, COLOR_PAIR, + PAIR_NUMBER - curses color manipulation routines --
- # include <curses.h> +
+ #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); + PAIR_NUMBER(attrs); --
- Overview - curses support color attributes on terminals with that ca- - pability. To use these routines start_color must be + +
+ +
+ 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. + tialized, COLOR_PAIR(n) can be used to convert the pair to + a video attribute. If a terminal is capable of redefining colors, the pro- grammer can use the routine init_color to change the defi- @@ -91,41 +97,136 @@ The routine pair_content allows a programmer to find out how a given color-pair is currently defined. - Routine Descriptions + +
+ The curses library combines these inputs to produce the + actual foreground and background colors shown on the + screen: + + o per-character video attributes (e.g., via waddch), + + o the window attribute (e.g., by wattrset), and + + o the background character (e.g., wbkgdset). + + Per-character and window attributes are usually set by a + parameter containing video attributes including a color + pair value. Some functions such as wattr_set use a sepa- + rate parameter which is the color pair number. + + The background character is a special case: it includes a + character value, just as if it were passed to waddch. + + The curses library does the actual work of combining these + color pairs in an internal function called from waddch: + + o If the parameter passed to waddch is blank, and it us- + es the special color pair 0, + + o curses next checks the window attribute. + + o If the window attribute does not use color pair 0, + curses uses the color pair from the window at- + tribute. + + o Otherwise, curses uses the background character. + + 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. + + 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. + + +
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 initializes eight basic colors (black, red, - green, yellow, blue, magenta, cyan, and white), and two - global variables, COLORS and COLOR_PAIRS (respectively - defining the maximum number of colors and color-pairs the - terminal can support). It also restores the colors on the - terminal to the values they had when the terminal was just - turned on. - - 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 + 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: + + 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). + + o It initializes the special color pair 0 to the default + foreground and background colors. No other color + pairs are initialized. + + 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. + + 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. + + 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. + + 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)). + + o color values are expected to be in the range 0 to COL- + ORS-1, inclusive (including 0 and COLORS-1). + + o a special color value -1 is used in certain extended + functions to denote the default color (see use_de- + fault_colors). + + o COLOR_PAIRS corresponds to the terminal database's + max_pairs capability, which is typically a signed + 16-bit integer (see terminfo(5)). + + o legal color pair values are in the range 1 to COL- + OR_PAIRS-1, inclusive. + + o color pair 0 is special; it denotes "no color". + + 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. + + 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: - o The value of the first argument must be between 1 and - COLOR_PAIRS-1, except that 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 background. + 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. - o The value of the second and third arguments must be - between 0 and COLORS. 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 application. + o The second and third arguments must be legal color + values. 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 + 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. @@ -133,49 +234,62 @@ 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 value of the first - argument must be between 0 and COLORS. (See the section - Colors for the default color index.) Each of the last - three arguments must be a value between 0 and 1000. When - init_color is used, all occurrences of that color on the - screen immediately change to the new definition. - - The has_colors routine requires no arguments. It returns - TRUE if the terminal can manipulate colors; otherwise, it + 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. + + 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- + independent programs. For example, a programmer can use + it to decide whether to use color or some other video at- tribute. - 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 + 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. - The color_content routine gives programmers a way to find + 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 value of the first argument must be - between 0 and COLORS. The values that are stored at the - addresses pointed to by the last three arguments are be- - tween 0 (no component) and 1000 (maximum amount of compo- - nent). - - 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 value of the first argument must be - between 1 and COLOR_PAIRS-1. The values that are stored - at the addresses pointed to by the second and third argu- - ments are between 0 and COLORS. - - Colors + 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. + + 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_NUMBER(attrs) extracts the color value from its attrs + parameter and returns it as a color pair number. Its in- + verse COLOR_PAIR(n) converts a color pair number to an at- + tribute. Attributes can hold color pairs in the range 0 + to 255. If you need a color pair larger than that, you + must use functions such as attr_set (which pass the color + pair as a separate parameter) rather than the legacy func- + tions such as attrset. + + +
In <curses.h> the following macros are defined. These are - the default colors. curses also assumes that COLOR_BLACK - is the default background color for all terminals. + the standard colors (ISO-6429). curses also assumes that + COLOR_BLACK is the default background color for all termi- + nals. COLOR_BLACK COLOR_RED @@ -187,10 +301,9 @@ COLOR_WHITE --
- The routines can_change_color() and has_colors() return - TRUE or FALSE. +
+ The routines can_change_color and has_colors return TRUE + or FALSE. All other routines return the integer ERR upon failure and an OK (SVr4 specifies only "an integer value other than @@ -198,17 +311,17 @@ 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- + 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. init_color returns an error if the terminal does not support - this feature, e.g., if the initialize_color capa- + this feature, e.g., if the initialize_color capa- bility is absent from the terminal description. start_color @@ -216,8 +329,7 @@ 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; @@ -248,8 +360,7 @@ o Color RGB values are not settable. --
+
This implementation satisfies XSI Curses's minimum maxi- mums for COLORS and COLOR_PAIRS. @@ -267,8 +378,7 @@ will treat those as optional parameters when null. --
+
curses(3x), curs_initscr(3x), curs_attr(3x), curs_vari- ables(3x), default_colors(3x) @@ -276,10 +386,23 @@ curs_color(3x)-