missing ncurses sources
[tomato.git] / release / src / router / libncurses / doc / html / man / curs_color.3x.html
blob39a73184fccb26dd5f428d442c8583e2c7c8698b
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
2 <!--
3 ****************************************************************************
4 * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
5 * *
6 * Permission is hereby granted, free of charge, to any person obtaining a *
7 * copy of this software and associated documentation files (the *
8 * "Software"), to deal in the Software without restriction, including *
9 * without limitation the rights to use, copy, modify, merge, publish, *
10 * distribute, distribute with modifications, sublicense, and/or sell *
11 * copies of the Software, and to permit persons to whom the Software is *
12 * furnished to do so, subject to the following conditions: *
13 * *
14 * The above copyright notice and this permission notice shall be included *
15 * in all copies or substantial portions of the Software. *
16 * *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
20 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
21 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
22 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
23 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
24 * *
25 * Except as contained in this notice, the name(s) of the above copyright *
26 * holders shall not be used in advertising or otherwise to promote the *
27 * sale, use or other dealings in this Software without prior written *
28 * authorization. *
29 ****************************************************************************
30 * @Id: curs_color.3x,v 1.35 2010/12/20 00:50:58 tom Exp @
31 -->
32 <HTML>
33 <HEAD>
34 <TITLE>curs_color 3x</TITLE>
35 <link rev=made href="mailto:bug-ncurses@gnu.org">
36 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
37 </HEAD>
38 <BODY>
39 <H1>curs_color 3x</H1>
40 <HR>
41 <PRE>
42 <!-- Manpage converted by man2html 3.0.1 -->
43 <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
48 </PRE>
49 <H2>NAME</H2><PRE>
50 <STRONG>start_color</STRONG>, <STRONG>init_pair</STRONG>, <STRONG>init_color</STRONG>, <STRONG>has_colors</STRONG>,
51 <STRONG>can_change_color</STRONG>, <STRONG>color_content</STRONG>, <STRONG>pair_content</STRONG>, <STRONG>COLOR_PAIR</STRONG>
52 - <STRONG>curses</STRONG> color manipulation routines
55 </PRE>
56 <H2>SYNOPSIS</H2><PRE>
57 <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
59 <STRONG>int</STRONG> <STRONG>start_color(void);</STRONG>
60 <STRONG>int</STRONG> <STRONG>init_pair(short</STRONG> <STRONG>pair,</STRONG> <STRONG>short</STRONG> <STRONG>f,</STRONG> <STRONG>short</STRONG> <STRONG>b);</STRONG>
61 <STRONG>int</STRONG> <STRONG>init_color(short</STRONG> <STRONG>color,</STRONG> <STRONG>short</STRONG> <STRONG>r,</STRONG> <STRONG>short</STRONG> <STRONG>g,</STRONG> <STRONG>short</STRONG> <STRONG>b);</STRONG>
62 <STRONG>bool</STRONG> <STRONG>has_colors(void);</STRONG>
63 <STRONG>bool</STRONG> <STRONG>can_change_color(void);</STRONG>
64 <STRONG>int</STRONG> <STRONG>color_content(short</STRONG> <STRONG>color,</STRONG> <STRONG>short</STRONG> <STRONG>*r,</STRONG> <STRONG>short</STRONG> <STRONG>*g,</STRONG> <STRONG>short</STRONG>
65 <STRONG>*b);</STRONG>
66 <STRONG>int</STRONG> <STRONG>pair_content(short</STRONG> <STRONG>pair,</STRONG> <STRONG>short</STRONG> <STRONG>*f,</STRONG> <STRONG>short</STRONG> <STRONG>*b);</STRONG>
69 </PRE>
70 <H2>DESCRIPTION</H2><PRE>
71 <STRONG>Overview</STRONG>
72 <STRONG>curses</STRONG> support color attributes on terminals with that ca-
73 pability. To use these routines <STRONG>start_color</STRONG> must be
74 called, usually right after <STRONG>initscr</STRONG>. Colors are always
75 used in pairs (referred to as color-pairs). A color-pair
76 consists of a foreground color (for characters) and a
77 background color (for the blank field on which the charac-
78 ters are displayed). A programmer initializes a color-
79 pair with the routine <STRONG>init_pair</STRONG>. After it has been ini-
80 tialized, <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>), a macro defined in <STRONG>&lt;curses.h&gt;</STRONG>,
81 can be used as a new video attribute.
83 If a terminal is capable of redefining colors, the pro-
84 grammer can use the routine <STRONG>init_color</STRONG> to change the defi-
85 nition of a color. The routines <STRONG>has_colors</STRONG> and
86 <STRONG>can_change_color</STRONG> return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, depending on
87 whether the terminal has color capabilities and whether
88 the programmer can change the colors. The routine <STRONG>col-</STRONG>
89 <STRONG>or_content</STRONG> allows a programmer to extract the amounts of
90 red, green, and blue components in an initialized color.
91 The routine <STRONG>pair_content</STRONG> allows a programmer to find out
92 how a given color-pair is currently defined.
94 <STRONG>Routine</STRONG> <STRONG>Descriptions</STRONG>
95 The <STRONG>start_color</STRONG> routine requires no arguments. It must be
96 called if the programmer wants to use colors, and before
97 any other color manipulation routine is called. It is
98 good practice to call this routine right after <STRONG>initscr</STRONG>.
99 <STRONG>start_color</STRONG> initializes eight basic colors (black, red,
100 green, yellow, blue, magenta, cyan, and white), and two
101 global variables, <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG> (respectively
102 defining the maximum number of colors and color-pairs the
103 terminal can support). It also restores the colors on the
104 terminal to the values they had when the terminal was just
105 turned on.
107 The <STRONG>init_pair</STRONG> routine changes the definition of a color-
108 pair. It takes three arguments: the number of the color-
109 pair to be changed, the foreground color number, and the
110 background color number. For portable applications:
112 <STRONG>o</STRONG> The value of the first argument must be between <STRONG>1</STRONG> and
113 <STRONG>COLOR_PAIRS-1</STRONG>, except that if default colors are used
114 (see <STRONG>use_default_colors</STRONG>) the upper limit is adjusted
115 to allow for extra pairs which use a default color in
116 foreground and/or background.
118 <STRONG>o</STRONG> The value of the second and third arguments must be
119 between 0 and <STRONG>COLORS</STRONG>. Color pair 0 is assumed to be
120 white on black, but is actually whatever the terminal
121 implements before color is initialized. It cannot be
122 modified by the application.
124 If the color-pair was previously initialized, the screen
125 is refreshed and all occurrences of that color-pair are
126 changed to the new definition.
128 As an extension, ncurses allows you to set color pair 0
129 via the <STRONG>assume_default_colors</STRONG> routine, or to specify the
130 use of default colors (color number <STRONG>-1</STRONG>) if you first in-
131 voke the <STRONG>use_default_colors</STRONG> routine.
133 The <STRONG>init_color</STRONG> routine changes the definition of a color.
134 It takes four arguments: the number of the color to be
135 changed followed by three RGB values (for the amounts of
136 red, green, and blue components). The value of the first
137 argument must be between <STRONG>0</STRONG> and <STRONG>COLORS</STRONG>. (See the section
138 <STRONG>Colors</STRONG> for the default color index.) Each of the last
139 three arguments must be a value between 0 and 1000. When
140 <STRONG>init_color</STRONG> is used, all occurrences of that color on the
141 screen immediately change to the new definition.
143 The <STRONG>has_colors</STRONG> routine requires no arguments. It returns
144 <STRONG>TRUE</STRONG> if the terminal can manipulate colors; otherwise, it
145 returns <STRONG>FALSE</STRONG>. This routine facilitates writing terminal-
146 independent programs. For example, a programmer can use
147 it to decide whether to use color or some other video at-
148 tribute.
150 The <STRONG>can_change_color</STRONG> routine requires no arguments. It
151 returns <STRONG>TRUE</STRONG> if the terminal supports colors and can
152 change their definitions; other, it returns <STRONG>FALSE</STRONG>. This
153 routine facilitates writing terminal-independent programs.
155 The <STRONG>color_content</STRONG> routine gives programmers a way to find
156 the intensity of the red, green, and blue (RGB) components
157 in a color. It requires four arguments: the color number,
158 and three addresses of <STRONG>short</STRONG>s for storing the information
159 about the amounts of red, green, and blue components in
160 the given color. The value of the first argument must be
161 between 0 and <STRONG>COLORS</STRONG>. The values that are stored at the
162 addresses pointed to by the last three arguments are be-
163 tween 0 (no component) and 1000 (maximum amount of compo-
164 nent).
166 The <STRONG>pair_content</STRONG> routine allows programmers to find out
167 what colors a given color-pair consists of. It requires
168 three arguments: the color-pair number, and two addresses
169 of <STRONG>short</STRONG>s for storing the foreground and the background
170 color numbers. The value of the first argument must be
171 between 1 and <STRONG>COLOR_PAIRS-1</STRONG>. The values that are stored
172 at the addresses pointed to by the second and third argu-
173 ments are between 0 and <STRONG>COLORS</STRONG>.
175 <STRONG>Colors</STRONG>
176 In <STRONG>&lt;curses.h&gt;</STRONG> the following macros are defined. These are
177 the default colors. <STRONG>curses</STRONG> also assumes that <STRONG>COLOR_BLACK</STRONG>
178 is the default background color for all terminals.
180 <STRONG>COLOR_BLACK</STRONG>
181 <STRONG>COLOR_RED</STRONG>
182 <STRONG>COLOR_GREEN</STRONG>
183 <STRONG>COLOR_YELLOW</STRONG>
184 <STRONG>COLOR_BLUE</STRONG>
185 <STRONG>COLOR_MAGENTA</STRONG>
186 <STRONG>COLOR_CYAN</STRONG>
187 <STRONG>COLOR_WHITE</STRONG>
190 </PRE>
191 <H2>RETURN VALUE</H2><PRE>
192 The routines <STRONG>can_change_color()</STRONG> and <STRONG>has_colors()</STRONG> return
193 <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
195 All other routines return the integer <STRONG>ERR</STRONG> upon failure and
196 an <STRONG>OK</STRONG> (SVr4 specifies only "an integer value other than
197 <STRONG>ERR</STRONG>") upon successful completion.
199 X/Open defines no error conditions. This implementation
200 will return <STRONG>ERR</STRONG> on attempts to use color values outside
201 the range 0 to COLORS-1 (except for the default colors ex-
202 tension), or use color pairs outside the range 0 to COL-
203 OR_PAIRS-1. Color values used in <STRONG>init_color</STRONG> must be in
204 the range 0 to 1000. An error is returned from all func-
205 tions if the terminal has not been initialized. An error
206 is returned from secondary functions such as <STRONG>init_pair</STRONG> if
207 <STRONG>start_color</STRONG> was not called.
209 <STRONG>init_color</STRONG>
210 returns an error if the terminal does not support
211 this feature, e.g., if the <EM>initialize</EM><STRONG>_</STRONG><EM>color</EM> capa-
212 bility is absent from the terminal description.
214 <STRONG>start_color</STRONG>
215 returns an error if the color table cannot be al-
216 located.
219 </PRE>
220 <H2>NOTES</H2><PRE>
221 In the <EM>ncurses</EM> implementation, there is a separate color
222 activation flag, color palette, color pairs table, and as-
223 sociated COLORS and COLOR_PAIRS counts for each screen;
224 the <STRONG>start_color</STRONG> function only affects the current screen.
225 The SVr4/XSI interface is not really designed with this in
226 mind, and historical implementations may use a single
227 shared color palette.
229 Note that setting an implicit background color via a color
230 pair affects only character cells that a character write
231 operation explicitly touches. To change the background
232 color used when parts of a window are blanked by erasing
233 or scrolling operations, see <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>.
235 Several caveats apply on 386 and 486 machines with VGA-
236 compatible graphics:
238 <STRONG>o</STRONG> COLOR_YELLOW is actually brown. To get yellow, use
239 COLOR_YELLOW combined with the <STRONG>A_BOLD</STRONG> attribute.
241 <STRONG>o</STRONG> The A_BLINK attribute should in theory cause the back-
242 ground to go bright. This often fails to work, and
243 even some cards for which it mostly works (such as the
244 Paradise and compatibles) do the wrong thing when you
245 try to set a bright "yellow" background (you get a
246 blinking yellow foreground instead).
248 <STRONG>o</STRONG> Color RGB values are not settable.
251 </PRE>
252 <H2>PORTABILITY</H2><PRE>
253 This implementation satisfies XSI Curses's minimum maxi-
254 mums for <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG>.
256 The <STRONG>init_pair</STRONG> routine accepts negative values of fore-
257 ground and background color to support the <STRONG>use_de-</STRONG>
258 <STRONG>fault_colors</STRONG> extension, but only if that routine has been
259 first invoked.
261 The assumption that <STRONG>COLOR_BLACK</STRONG> is the default background
262 color for all terminals can be modified using the <STRONG>as-</STRONG>
263 <STRONG>sume_default_colors</STRONG> extension.
265 This implementation checks the pointers, e.g., for the
266 values returned by <STRONG>color_content</STRONG> and <STRONG>pair_content</STRONG>, and
267 will treat those as optional parameters when null.
270 </PRE>
271 <H2>SEE ALSO</H2><PRE>
272 <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG>curs_vari-</STRONG>
273 <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>, <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
277 <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
278 </PRE>
279 <HR>
280 <ADDRESS>
281 Man(1) output converted with
282 <a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
283 </ADDRESS>
284 </BODY>
285 </HTML>