X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fcurs_color.3x.html;h=28e8d17f8ead7ef3c4e5448f8490a28ead3335f3;hp=dadd9a1ad900f884c78ebdefa05d29a9554153df;hb=9f479192e3ca3413d235c66bf058f8cc63764898;hpb=ed646e3f683083e787c6ba773364401dc9fa9d40 diff --git a/doc/html/man/curs_color.3x.html b/doc/html/man/curs_color.3x.html index dadd9a1a..28e8d17f 100644 --- a/doc/html/man/curs_color.3x.html +++ b/doc/html/man/curs_color.3x.html @@ -1,6 +1,7 @@ -
- --curs_color(3x) curs_color(3x) +curs_color(3X) curs_color(3X)
- start_color, has_colors, can_change_color, init_pair, init_color, - color_content, pair_content, COLOR_PAIR, PAIR_NUMBER - curses color - manipulation routines + start_color, has_colors, can_change_color, init_pair, init_color, + init_extended_pair, init_extended_color, color_content, pair_content, + extended_color_content, extended_pair_content, reset_color_pairs, + COLOR_PAIR, PAIR_NUMBER - curses color manipulation routines
- #include <curses.h> + #include <curses.h> - int start_color(void); + int start_color(void); - bool has_colors(void); - bool can_change_color(void); + bool has_colors(void); + bool can_change_color(void); - int init_pair(short pair, short f, short b); - int init_color(short color, short r, short g, short b); + int init_pair(short pair, short f, short b); + int init_color(short color, short r, short g, short b); /* extensions */ - int init_extended_pair(int pair, int f, int b); - int init_extended_color(int color, int r, int g, int b); + int init_extended_pair(int pair, int f, int b); + int init_extended_color(int color, int r, int g, int b); - int color_content(short color, short *r, short *g, short *b); - int pair_content(short pair, short *f, short *b); + int color_content(short color, short *r, short *g, short *b); + int pair_content(short pair, short *f, short *b); /* extensions */ - int extended_color_content(int color, int *r, int *g, int *b); - int extended_pair_content(int pair, int *f, int *b); + int extended_color_content(int color, int *r, int *g, int *b); + int extended_pair_content(int pair, int *f, int *b); - int COLOR_PAIR(int n); - PAIR_NUMBER(attrs); + /* extensions */ + void reset_color_pairs(void); + + int COLOR_PAIR(int n); + PAIR_NUMBER(attrs);
- 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 characters are dis- - played). A programmer initializes a color-pair with the routine - init_pair. After it has been initialized, COLOR_PAIR(n) can be used to + 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 characters are dis- + played). A programmer initializes a color-pair with the routine + init_pair. After it has been initialized, COLOR_PAIR(n) can be used to convert the pair to a video attribute. - If a terminal is capable of redefining colors, the programmer can use - the routine init_color to change the definition of a color. The rou- - tines has_colors and can_change_color return TRUE or FALSE, depending + If a terminal is capable of redefining colors, the programmer can use + the routine init_color to change the definition of a color. The rou- + tines has_colors and can_change_color return TRUE or FALSE, depending on whether the terminal has color capabilities and whether the program- - mer can change the colors. The routine color_content allows a program- - mer to extract the amounts of red, green, and blue components in an - initialized color. The routine pair_content allows a programmer to + mer can change the colors. The routine color_content allows a program- + mer 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.
- The curses library combines these inputs to produce the actual fore- + The curses library combines these inputs to produce the actual fore- ground and background colors shown on the screen: - o per-character video attributes (e.g., via waddch), + o per-character video attributes (e.g., via waddch), - o the window attribute (e.g., by wattrset), and + o the window attribute (e.g., by wattrset), and - o the background character (e.g., wbkgdset). + o the background character (e.g., wbkgdset). Per-character and window attributes are usually set by a parameter con- - taining video attributes including a color pair value. Some functions - such as wattr_set use a separate parameter which is the color pair num- + taining video attributes including a color pair value. Some functions + such as wattr_set use a separate parameter which is the color pair num- ber. - The background character is a special case: it includes a character - value, just as if it were passed to waddch. + 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: + 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 uses the special + o If the parameter passed to waddch is blank, and it uses the special color pair 0, - o curses next checks the window attribute. + o curses next checks the window attribute. - o If the window attribute does not use color pair 0, curses uses + o If the window attribute does not use color pair 0, curses uses the color pair from the window attribute. - o Otherwise, curses uses the background character. + 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 at- - tribute next, and finally 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 attri- + bute next, and finally the background character. - Some curses functions such as wprintw call waddch. Those do not com- + Some curses functions such as wprintw call waddch. Those do not com- bine its parameter with a color pair. Consequently those calls use on- ly the window attribute or the background character.
- In <curses.h> the following macros are defined. These are the standard - colors (ISO-6429). curses also assumes that COLOR_BLACK is the default + 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 terminals. - COLOR_BLACK - COLOR_RED - COLOR_GREEN - COLOR_YELLOW - COLOR_BLUE - COLOR_MAGENTA - COLOR_CYAN - COLOR_WHITE + COLOR_BLACK + COLOR_RED + COLOR_GREEN + COLOR_YELLOW + COLOR_BLUE + COLOR_MAGENTA + COLOR_CYAN + COLOR_WHITE - Some terminals support more than the eight (8) "ANSI" colors. There + Some terminals support more than the eight (8) "ANSI" colors. There are no standard names for those additional colors.
- is initialized by start_color to the maximum number of colors the ter- + is initialized by start_color to the maximum number of colors the ter- minal can support.
- is initialized by start_color to the maximum number of color pairs the + is initialized by start_color to the maximum number of color pairs the terminal can support.
- The start_color routine requires no arguments. It must be called if - the programmer wants to use colors, and before any other color manipu- - lation routine is called. It is good practice to call this routine - right after initscr. start_color does this: + The start_color routine requires no arguments. It must be called if + the programmer wants to use colors, and before any other color manipu- + lation 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 COLOR_PAIRS (re- - spectively defining the maximum number of colors and color-pairs + o It initializes two global variables, COLORS and COLOR_PAIRS (re- + spectively 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 + 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 + 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. + 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_saturation) capability is - set). The table is initialized first for eight basic colors - (black, red, green, yellow, 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 application may use init_color to al- + or HLS (i.e., the hls (hue_lightness_saturation) capability is + set). The table is initialized first for eight basic colors + (black, red, green, yellow, blue, magenta, cyan, and white), using + weights that depend upon the CGA/HLS choice. For "ANSI" colors the + weights are 680 or 0 depending on whether the corresponding red, + green, or blue component is used or not. That permits using 1000 + to represent bold/bright colors. After the initial eight colors + (if the terminal supports more than eight colors) the components + are initialized using the same pattern, but with weights of 1000. + SVr4 uses a similar scheme, but uses 1000 for the components of the + initial eight colors. + + start_color does not attempt to set the terminal's color palette to + match its built-in table. An application may use init_color to al- ter the internal table along with the terminal's color. - These limits apply to color values and color pairs. Values outside + These limits apply to color values and color pairs. Values outside these limits are not legal, and may result in a runtime error: - o COLORS corresponds to the terminal database's max_colors capabili- - ty, (see terminfo(5)). + o COLORS corresponds to the terminal database's max_colors capabili- + ty, (see terminfo(5)). - o color values are expected to be in the range 0 to COLORS-1, inclu- - sive (including 0 and COLORS-1). + o color values are expected to be in the range 0 to COLORS-1, inclu- + sive (including 0 and COLORS-1). - o a special color value -1 is used in certain extended functions to - denote the default color (see use_default_colors). + o a special color value -1 is used in certain extended functions to + denote the default color (see use_default_colors(3X)). - o COLOR_PAIRS corresponds to the terminal database's max_pairs capa- - bility, (see terminfo(5)). + o COLOR_PAIRS corresponds to the terminal database's max_pairs capa- + bility, (see terminfo(5)). - o legal color pair values are in the range 1 to COLOR_PAIRS-1, inclu- + o legal color pair values are in the range 1 to COLOR_PAIRS-1, inclu- sive. - o color pair 0 is special; it denotes "no color". + o color pair 0 is special; it denotes "no color". - Color pair 0 is assumed to be white on black, but is actually what- - ever the terminal implements before color is initialized. It can- + Color pair 0 is assumed to be white on black, but is actually what- + ever the terminal implements before color is initialized. It can- not be modified by the application.
- The has_colors routine requires no arguments. It returns TRUE if the - terminal can manipulate colors; otherwise, it returns FALSE. This rou- + The has_colors routine requires no arguments. It returns TRUE if the + terminal can manipulate colors; otherwise, it returns FALSE. This rou- tine facilitates writing terminal-independent programs. For example, a - programmer can use it to decide whether to use color or some other + programmer can use it to decide whether to use color or some other video attribute.
- 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-indepen- + 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-indepen- dent programs.
- 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 fore- + 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 fore- ground color number, and the background color number. For portable ap- plications: - o The first argument must be a legal color pair value. If default - colors are used (see use_default_colors) the upper limit is adjust- - ed 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(3X)) the upper limit is ad- + justed to allow for extra pairs which use a default color in fore- + ground and/or background. - o The second and third arguments must be legal color values. + 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 defini- + If the color-pair was previously initialized, the screen is refreshed + and all occurrences of that color-pair are changed to the new defini- tion. - As an extension, ncurses allows you to set color pair 0 via the as- - sume_default_colors(3x) routine, or to specify the use of default col- - ors (color number -1) if you first invoke the use_default_colors(3x) + As an extension, ncurses allows you to set color pair 0 via the as- + sume_default_colors(3X) routine, or to specify the use of default col- + ors (color number -1) if you first invoke the use_default_colors(3X) routine. +
+ Because init_pair uses signed shorts for its parameters, that limits + color-pairs and color-values to 32767 on modern hardware. The exten- + sion init_extended_pair uses ints for the color-pair and color-value, + allowing a larger number of colors to be supported. + +
- The init_color routine changes the definition of a color. It takes + 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). - o The first argument must be a legal color value; default colors are - not allowed here. (See the section Colors for the default color + o The first argument must be a legal color value; default colors are + not allowed here. (See the section Colors for the default color index.) - o Each of the last three arguments must be a value in the range 0 - through 1000. + o 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 + When init_color is used, all occurrences of that color on the screen immediately change to the new definition. +
+ Because init_color uses signed shorts for its parameters, that limits + color-values and their red, green, and blue components to 32767 on mod- + ern hardware. The extension init_extended_color uses ints for the col- + or value and for setting the red, green, and blue components, allowing + a larger number of colors to be supported. + +
- The color_content routine gives programmers a way to find the intensity + 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 + four arguments: the color number, and three addresses of shorts for storing the information about the amounts of red, green, and blue com- ponents in the given color. - o The first argument must be a legal color value, i.e., 0 through - COLORS-1, inclusive. + o The first argument must be a legal color value, i.e., 0 through + COLORS-1, inclusive. - o The values that are stored at the addresses pointed to by the last - three arguments are in the range 0 (no component) through 1000 + o 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. +
+ Because color_content uses signed shorts for its parameters, that lim- + its color-values and their red, green, and blue components to 32767 on + modern hardware. The extension extended_color_content uses ints for + the color value and for returning the red, green, and blue components, + allowing a larger number of colors to be supported. + +
- The pair_content routine allows programmers to find out what colors a + 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 + pair number, and two addresses of shorts for storing the foreground and the background color numbers. - o The first argument must be a legal color value, i.e., in the range - 1 through COLOR_PAIRS-1, inclusive. + o The first argument must be a legal color value, i.e., in the range + 1 through COLOR_PAIRS-1, inclusive. - o The values that are stored at the addresses pointed to by the sec- - ond and third arguments are in the range 0 through COLORS, inclu- + o The values that are stored at the addresses pointed to by the sec- + ond and third arguments are in the range 0 through COLORS, inclu- sive. +
+ Because pair_content uses signed shorts for its parameters, that limits + color-pair and color-values to 32767 on modern hardware. The extension + extended_pair_content uses ints for the color pair and for returning + the foreground and background colors, allowing a larger number of col- + ors to be supported. + + +
+ The extension reset_color_pairs tells ncurses to discard all of the + color-pair information which was set with init_pair. It also touches + the current- and standard-screens, allowing an application to switch + color palettes rapidly. + +
- PAIR_NUMBER(attrs) extracts the color value from its attrs parameter + PAIR_NUMBER(attrs) extracts the color value from its attrs parameter and returns it as a color pair number.
- Its inverse COLOR_PAIR(n) converts a color pair number to an attribute. - 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 functions such as attrset. + Its inverse COLOR_PAIR(n) converts a color pair number to an attribute. + 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 functions such as attrset.
- 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 ERR") upon successful com- + All other routines return the integer ERR upon failure and an OK (SVr4 + specifies only "an integer value other than ERR") upon successful com- pletion. - 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 extension), or use color pairs outside - the range 0 to COLOR_PAIRS-1. Color values used in init_color must be - in the range 0 to 1000. An error is returned from all functions 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 defines no error conditions. SVr4 does document some error con- + ditions which apply in general: + + o 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 COLOR_PAIRS-1. + + Color values used in init_color must be in the range 0 to 1000. + + An error is returned from all functions if the terminal has not + been initialized. - init_color + An error is returned from secondary functions such as init_pair if + start_color was not called. + + o SVr4 does much the same, except that it returns ERR from pair_con- + tent if the pair was not initialized using init_pairs and it re- + turns ERR from color_content if the terminal does not support + changing colors. + + This implementation does not return ERR for either case. + + Specific functions make additional checks: + + init_color returns an error if the terminal does not support this feature, - e.g., if the initialize_color capability is absent from the + e.g., if the initialize_color capability is absent from the terminal description. - start_color + start_color returns an error if the color table cannot be allocated.
- In the ncurses implementation, there is a separate color activation - flag, color palette, color pairs table, and associated COLORS and COL- - OR_PAIRS counts for each screen; the start_color function only affects + In the ncurses implementation, there is a separate color activation + flag, color palette, color pairs table, and associated COLORS and COL- + OR_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 + this in mind, and historical implementations may use a single shared color palette. - 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). + 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). - Several caveats apply on older x86 machines (e.g., i386, i486) with + Several caveats apply on older x86 machines (e.g., i386, i486) with VGA-compatible graphics: - o COLOR_YELLOW is actually brown. To get yellow, use COLOR_YELLOW - combined with the A_BOLD attribute. + o COLOR_YELLOW is actually brown. To get yellow, use COLOR_YELLOW + combined with the A_BOLD attribute. - o The A_BLINK attribute should in theory cause the background to go + o The A_BLINK attribute should in theory cause the background 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 + 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). - o Color RGB values are not settable. + o Color RGB values are not settable.
- This implementation satisfies XSI Curses's minimum maximums for COLORS - and COLOR_PAIRS. + This implementation satisfies XSI Curses's minimum maximums for COLORS + and COLOR_PAIRS. - The init_pair routine accepts negative values of foreground and back- - ground color to support the use_default_colors(3x) extension, but only + The init_pair routine accepts negative values of foreground and back- + ground color to support the use_default_colors(3X) extension, but only if that routine has been first invoked. - The assumption that COLOR_BLACK is the default background color for all - terminals can be modified using the assume_default_colors(3x) exten- + The assumption that COLOR_BLACK is the default background color for all + terminals can be modified using the assume_default_colors(3X) exten- sion. - This implementation checks the pointers, e.g., for the values returned - by color_content and pair_content, and will treat those as optional pa- + This implementation checks the pointers, e.g., for the values returned + by color_content and pair_content, and will treat those as optional pa- rameters when null. - X/Open Curses does not specify a limit for the number of colors and - color pairs which a terminal can support. However, in its use of short - for the parameters, it carries over SVr4's implementation detail for + X/Open Curses does not specify a limit for the number of colors and + color pairs which a terminal can support. However, in its use of short + for the parameters, it carries over SVr4's implementation detail for the compiled terminfo database, which uses signed 16-bit numbers. This - implementation provides extended versions of those functions which use - short parameters, allowing applications to use larger color- and pair- + implementation provides extended versions of those functions which use + short parameters, allowing applications to use larger color- and pair- numbers. + The reset_color_pairs function is an extension of ncurses. +
- curses(3x), curs_initscr(3x), curs_attr(3x), curs_variables(3x), de- - fault_colors(3x) + curses(3X), curs_initscr(3X), curs_attr(3X), curs_variables(3X), de- + fault_colors(3X) - curs_color(3x) + curs_color(3X)