123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- .\"***************************************************************************
- .\" Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. *
- .\" *
- .\" Permission is hereby granted, free of charge, to any person obtaining a *
- .\" copy of this software and associated documentation files (the *
- .\" "Software"), to deal in the Software without restriction, including *
- .\" without limitation the rights to use, copy, modify, merge, publish, *
- .\" distribute, distribute with modifications, sublicense, and/or sell *
- .\" copies of the Software, and to permit persons to whom the Software is *
- .\" furnished to do so, subject to the following conditions: *
- .\" *
- .\" The above copyright notice and this permission notice shall be included *
- .\" in all copies or substantial portions of the Software. *
- .\" *
- .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- .\" *
- .\" Except as contained in this notice, the name(s) of the above copyright *
- .\" holders shall not be used in advertising or otherwise to promote the *
- .\" sale, use or other dealings in this Software without prior written *
- .\" authorization. *
- .\"***************************************************************************
- .\"
- .\" $Id: curs_color.3x,v 1.28 2005/12/18 00:00:37 tom Exp $
- .TH curs_color 3X ""
- .na
- .hy 0
- .SH NAME
- \fBstart_color\fR,
- \fBinit_pair\fR,
- \fBinit_color\fR,
- \fBhas_colors\fR,
- \fBcan_change_color\fR,
- \fBcolor_content\fR,
- \fBpair_content\fR,
- \fBCOLOR_PAIR\fR - \fBcurses\fR color manipulation routines
- .ad
- .hy
- .SH SYNOPSIS
- \fB# include <curses.h>\fR
- .br
- \fBint start_color(void);\fR
- .br
- \fBint init_pair(short pair, short f, short b);\fR
- .br
- \fBint init_color(short color, short r, short g, short b);\fR
- .br
- \fBbool has_colors(void);\fR
- .br
- \fBbool can_change_color(void);\fR
- .br
- \fBint color_content(short color, short *r, short *g, short *b);\fR
- .br
- \fBint pair_content(short pair, short *f, short *b);\fR
- .br
- .SH DESCRIPTION
- .SS Overview
- \fBcurses\fR support color attributes on terminals with that capability. To
- use these routines \fBstart_color\fR must be called, usually right after
- \fBinitscr\fR. 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 displayed). A
- programmer initializes a color-pair with the routine \fBinit_pair\fR. After it
- has been initialized, \fBCOLOR_PAIR\fR(\fIn\fR), a macro defined in
- \fB<curses.h>\fR, can be used as a new video attribute.
- .PP
- If a terminal is capable of redefining colors, the programmer can use the
- routine \fBinit_color\fR to change the definition of a color. The routines
- \fBhas_colors\fR and \fBcan_change_color\fR return \fBTRUE\fR or \fBFALSE\fR,
- depending on whether the terminal has color capabilities and whether the
- programmer can change the colors. The routine \fBcolor_content\fR allows a
- programmer to extract the amounts of red, green, and blue components in an
- initialized color. The routine \fBpair_content\fR allows a programmer to find
- out how a given color-pair is currently defined.
- .SS Routine Descriptions
- The \fBstart_color\fR 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 \fBinitscr\fR. \fBstart_color\fR initializes
- eight basic colors (black, red, green, yellow, blue, magenta, cyan,
- and white), and two global variables, \fBCOLORS\fR and
- \fBCOLOR_PAIRS\fR (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.
- .PP
- The \fBinit_pair\fR 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:
- .TP 5
- -
- The value of the first argument
- must be between \fB1\fR and \fBCOLOR_PAIRS-1\fR.
- .TP 5
- -
- The value of the second and
- third arguments must be between 0 and \fBCOLORS\fR.
- 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.
- .PP
- If the color-pair was previously
- initialized, the screen is refreshed and all occurrences of that color-pair
- are changed to the new definition.
- .PP
- As an extension, ncurses allows you to set color pair 0 via
- the \fBassume_default_colors\fR routine, or to specify the use of
- default colors (color number \fB-1\fR) if you first invoke the
- \fBuse_default_colors\fR routine.
- .PP
- The \fBinit_color\fR 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 \fB0\fR and \fBCOLORS\fR. (See the section
- \fBColors\fR for the default color index.) Each of the last three arguments
- must be a value between 0 and 1000. When \fBinit_color\fR is used, all
- occurrences of that color on the screen immediately change to the new
- definition.
- .PP
- The \fBhas_colors\fR routine requires no arguments. It returns \fBTRUE\fR if
- the terminal can manipulate colors; otherwise, it returns \fBFALSE\fR. This
- routine facilitates writing terminal-independent programs. For example, a
- programmer can use it to decide whether to use color or some other video
- attribute.
- .PP
- The \fBcan_change_color\fR routine requires no arguments. It returns
- \fBTRUE\fR if the terminal supports colors and can change their definitions;
- other, it returns \fBFALSE\fR. This routine facilitates writing
- terminal-independent programs.
- .PP
- The \fBcolor_content\fR 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 \fBshort\fRs 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
- \fBCOLORS\fR. The values that are stored at the addresses pointed to by the
- last three arguments are between 0 (no component) and 1000 (maximum amount of
- component).
- .PP
- The \fBpair_content\fR 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 \fBshort\fRs for storing the foreground and the
- background color numbers. The value of the first argument must be between 1
- and \fBCOLOR_PAIRS-1\fR. The values that are stored at the addresses pointed
- to by the second and third arguments are between 0 and \fBCOLORS\fR.
- .SS Colors
- In \fB<curses.h>\fR the following macros are defined. These are the default
- colors. \fBcurses\fR also assumes that \fBCOLOR_BLACK\fR is the default
- background color for all terminals.
- .PP
- .nf
- \fBCOLOR_BLACK\fR
- \fBCOLOR_RED\fR
- \fBCOLOR_GREEN\fR
- \fBCOLOR_YELLOW\fR
- \fBCOLOR_BLUE\fR
- \fBCOLOR_MAGENTA\fR
- \fBCOLOR_CYAN\fR
- \fBCOLOR_WHITE\fR
- .fi
- .SH RETURN VALUE
- The routines \fBcan_change_color()\fR and \fBhas_colors()\fR return \fBTRUE\fR
- or \fBFALSE\fR.
- .PP
- All other routines return the integer \fBERR\fR upon failure and an \fBOK\fR
- (SVr4 specifies only "an integer value other than \fBERR\fR") upon successful
- completion.
- .PP
- X/Open defines no error conditions.
- This implementation will return \fBERR\fR 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_PAIR-1.
- Color values used in \fBinit_color\fP 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 \fBinit_pair\fP
- if \fBstart_color\fP was not called.
- .RS
- .TP 5
- \fBinit_color\fP
- returns an error if the terminal does not support
- this feature, e.g., if the \fIinitialize_color\fP capability is absent
- from the terminal description.
- .TP 5
- \fBstart_color\fP
- returns an error
- If the color table cannot be allocated.
- .RE
- .SH NOTES
- In the \fIncurses\fR implementation, there is a separate color activation flag,
- color palette, color pairs table, and associated COLORS and COLOR_PAIRS counts
- for each screen; the \fBstart_color\fR 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.
- .PP
- 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 \fBcurs_bkgd\fR(3X).
- .PP
- Several caveats apply on 386 and 486 machines with VGA-compatible graphics:
- .TP 5
- -
- COLOR_YELLOW is actually brown. To get yellow, use COLOR_YELLOW combined with
- the \fBA_BOLD\fR attribute.
- .TP 5
- -
- 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).
- .TP 5
- -
- Color RGB values are not settable.
- .SH PORTABILITY
- This implementation satisfies XSI Curses's minimum maximums
- for \fBCOLORS\fR and \fBCOLOR_PAIRS\fR.
- .PP
- The \fBinit_pair\fP routine accepts negative values of foreground
- and background color to support the \fBuse_default_colors\fP extension,
- but only if that routine has been first invoked.
- .PP
- The assumption that \fBCOLOR_BLACK\fR is the default
- background color for all terminals can be modified using the
- \fBassume_default_colors\fP extension.
- .PP
- This implementation checks the pointers,
- e.g., for the values returned by
- \fBcolor_content\fP and \fBpair_content\fP,
- and will treat those as optional parameters when null.
- .SH SEE ALSO
- \fBcurses\fR(3X),
- \fBcurs_initscr\fR(3X),
- \fBcurs_attr\fR(3X),
- \fBdefault_colors\fR(3X)
- .\"#
- .\"# The following sets edit modes for GNU EMACS
- .\"# Local Variables:
- .\"# mode:nroff
- .\"# fill-column:79
- .\"# End:
|