X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fcurs_color.3x.html;h=dadd9a1ad900f884c78ebdefa05d29a9554153df;hb=ed646e3f683083e787c6ba773364401dc9fa9d40;hp=8d0f00c6368ac4e1f5e80c8b0314d466bee0ddf1;hpb=db5f7f4f146a91ba8ec7f1df8e9d7f9d2d7c74fd;p=ncurses.git diff --git a/doc/html/man/curs_color.3x.html b/doc/html/man/curs_color.3x.html index 8d0f00c6..dadd9a1a 100644 --- a/doc/html/man/curs_color.3x.html +++ b/doc/html/man/curs_color.3x.html @@ -1,6 +1,6 @@ @@ -40,65 +40,66 @@
-curs_color(3x) curs_color(3x) +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 +
+ start_color, has_colors, can_change_color, init_pair, init_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 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 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 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 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. - - 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. +
+
+ 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. --
- The curses library combines these inputs to produce the - actual foreground and background colors shown on the - screen: + 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 + find out how a given color-pair is currently defined. + + +
+ 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), @@ -106,279 +107,305 @@ o the background character (e.g., 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. + 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- + 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 us- - es the special color pair 0, + 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 If the window attribute does not use color pair 0, - curses uses the color pair from the window at- - tribute. + 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 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. + 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. - 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. + 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. --
- 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: - - 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 +
+ 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 + + 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- + minal can support. + + +
+ 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: + + 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 + 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_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 appli- - cation may use init_color to alter the internal table - along with the terminal's color. + 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. Val- - ues outside these limits are not legal, and may result in - a runtime error: + 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_col- - ors capability, which is typically a signed 16-bit in- - teger (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 COL- - ORS-1, inclusive (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_de- - fault_colors). + o a special color value -1 is used in certain extended functions to + denote the default color (see 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)). + 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 COL- - OR_PAIRS-1, inclusive. + 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". - 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 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 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 - 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. - - 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. - - 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. - - 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 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. - - 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. + 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. --
- 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. +
+ 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 + video attribute. - COLOR_BLACK - COLOR_RED - COLOR_GREEN - COLOR_YELLOW - COLOR_BLUE - COLOR_MAGENTA - COLOR_CYAN - COLOR_WHITE +
+ 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 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 completion. - - 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. + +
+ 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 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- + 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) + routine. + + +
+ 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 + index.) + + 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 + immediately change to the new definition. + + +
+ 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 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 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. + + 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- + sive. + + +
+ 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. + + +
+ 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- + 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. 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. + returns an error if the terminal does not support this feature, + e.g., if the initialize_color capability is absent from the + terminal description. start_color - returns an error if the color table cannot be al- - located. + 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 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. - - 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). - - Several caveats apply on 386 and 486 machines with VGA- - compatible graphics: - - 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 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 +
+ 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 + 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). + + 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 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 blinking yellow foreground instead). o Color RGB values are not settable. --
- This implementation satisfies XSI Curses's minimum maxi- - mums 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 fore- - ground and background color to support the use_de- - fault_colors extension, but only if that routine has been - first invoked. + 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 as- - sume_default_colors extension. + 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 parameters when null. + 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 + 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- + numbers. --
- curses(3x), curs_initscr(3x), curs_attr(3x), curs_vari- - ables(3x), default_colors(3x) + +
+ curses(3x), curs_initscr(3x), curs_attr(3x), curs_variables(3x), de- + fault_colors(3x) - curs_color(3x) + curs_color(3x)