CAN_CHANGE_COLOR(3XCURSES) X/Open Curses Library Functions
NAME
can_change_color, color_content, COLOR_PAIR, has_colors, init_color,
init_pair, pair_content, PAIR_NUMBER, start_color, COLOR_PAIRS,
COLORS - manipulate color information
SYNOPSIS
cc [
flag... ]
file...
-I /usr/xpg4/include
-L /usr/xpg4/lib \
-R /usr/xpg4/lib
-lcurses [
library... ]
c89 [
flag... ]
file...
-lcurses [
library... ]
#include <curses.h>
bool can_change_color(
void);
int color_content(
short color,
short *red,
short *green,
short *blue);
int COLOR_PAIR(
int n);
bool has_colors(
void);
int init_color(
short color,
short red,
short green,
short blue);
int init_pair(
short pair,
short f,
short b);
int pair_content(
short pair,
short *f,
short *b);
int PAIR_NUMBER(
int value);
int start_color(
voidextern int COLOR_PAIRS;
extern int COLORS;
DESCRIPTION
These functions manipulate color on terminals that support color.
Querying Capabilities The
has_colors() function indicates whether the terminal is a color
terminal. The
can_change_color() function indicates whether the
terminal is a color terminal on which colors can be redefined.
Initialization
The
start_color() function must be called to enable use of colors and
before any color manipulation function is called. The function
initializes eight basic colors (black, red, green, yellow, blue,
magenta, cyan, and white) that can be specified by the color macros
(such as
COLOR_BLACK) defined in <
curses.h>. The initial appearance
of these colors is unspecified.
The function also initializes two global external variables:
o
COLORS defines the number of colors that the terminal
supports. See
Color Identification below. If
COLORS is 0,
the terminal does not support redefinition of colors and
can_change_color() will return
FALSE.
o
COLOR_PAIRS defines the maximum number of color-pairs that
the terminal supports. See
User-defined Color Pairs below.
The
start_color() function also restores the colors on the terminal
to terminal-specific initial values. The initial background color is
assumed to be black for all terminals.
Color Identification
The
init_color() function redefines color number
color, on terminals
that support the redefinition of colors, to have the red, green, and
blue intensity components specified by
red,
green, and
blue,
respectively. Calling
init_color() also changes all occurrences of
the specified color on the screen to the new definition.
The
color_content() function identifies the intensity components of
color number
color. It stores the red, green, and blue intensity
components of this color in the addresses pointed to by
red,
green,
and
blue, respectively.
For both functions, the
color argument must be in the range from 0 to
and including
COLORS-1. Valid intensity value range from 0 (no
intensity component) up to and including 1000 (maximum intensity in
that component).
User-defined Color Pairs Calling
init_pair() defines or redefines color-pair number
pair to
have foreground color
f and background color
b. Calling
init_pair() changes any characters that were displayed in the color pair's old
definition to the new definition and refreshes the screen.
After defining the color pair, the macro
COLOR_PAIR(n) returns the
value of color pair
n. This value is the color attribute as it would
be extracted from a
chtype. Controversy, the macro
COLOR_NUMBER(value) returns the color pair number associated with the
color attribute
value.
The
pair_content() retrieves the component colors of a color-pair
number
pair. It stores the foreground and background color numbers in
the variables pointed to by
f and
b, respectively.
With
init_pair() and
pair_content(), the value of
pair must be in a
range from 0 to and including
COLOR_PAIRS-1. Valid values for
f and
b are the range from 0 to and including
COLORS-1.
PARAMETERS
color Is the number of the color for which to provide information
(0 to
COLORS-1).
red Is a pointer to the RGB value for the amount of red in
color.
green Is a pointer to the RGB value for the amount of green in
color.
blue Is a pointer to the RGB value for the amount of blue in
color.
n Is the number of a color pair.
pair Is the number of the color pair for which to provide
information (1 to
COLOR_PAIRS-1).
f Is a pointer to the number of the foreground color (0 to
COLORS-1) in
pair.
b Is a pointer to the number of the background color (0 to
COLORS-1) in
pair.
value Is a color attribute value.
RETURN VALUES
The
has_colors() function returns
TRUE if the terminal can manipulate
colors. Otherwise, it returns
FALSE.
The
can_change_color() function returns
TRUE if the terminal supports
colors and is able to change their definitions. Otherwise, it returns
FALSE.
Upon successful completion, the other functions return
OK. Otherwise,
they return
ERR.
ERRORS
No errors are defined.
USAGE
To use these functions,
start_color() must be called, usually right
after
initscr(3XCURSES).
The
can_change_color() and
has_colors() functions facilitate writing
terminal-independent applications. For example, a programmer can use
them to decide whether to use color or some other video attribute.
On color terminals, a typical value of
COLORS is 8 and the macros
such as
COLOR_BLACK return a value within the range from 0 to and
including 7. However, applications cannot rely on this to be true.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
|MT-Level | Unsafe |
+--------------------+-----------------+
SEE ALSO
attroff(3XCURSES),
delscreen(3XCURSES),
initscr(3XCURSES),
libcurses(3XCURSES),
attributes(7),
standards(7) June 5, 2002 CAN_CHANGE_COLOR(3XCURSES)