b7bd241aab38eb716b82843db0cff07d2065c7fa
[ncurses.git] / doc / html / man / curs_color.3x.html
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.30 2010/07/31 16:12:01 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>
44
45
46
47
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
53
54
55 </PRE>
56 <H2>SYNOPSIS</H2><PRE>
57        <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
58        <STRONG>int</STRONG> <STRONG>start_color(void);</STRONG>
59        <STRONG>int</STRONG> <STRONG>init_pair(short</STRONG> <STRONG>pair,</STRONG> <STRONG>short</STRONG> <STRONG>f,</STRONG> <STRONG>short</STRONG> <STRONG>b);</STRONG>
60        <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>
61        <STRONG>bool</STRONG> <STRONG>has_colors(void);</STRONG>
62        <STRONG>bool</STRONG> <STRONG>can_change_color(void);</STRONG>
63        <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>
64        <STRONG>*b);</STRONG>
65        <STRONG>int</STRONG> <STRONG>pair_content(short</STRONG> <STRONG>pair,</STRONG> <STRONG>short</STRONG> <STRONG>*f,</STRONG> <STRONG>short</STRONG> <STRONG>*b);</STRONG>
66
67
68 </PRE>
69 <H2>DESCRIPTION</H2><PRE>
70    <STRONG>Overview</STRONG>
71        <STRONG>curses</STRONG> support color attributes on terminals with that ca-
72        pability.   To  use  these  routines  <STRONG>start_color</STRONG>  must be
73        called, usually right after <STRONG>initscr</STRONG>.   Colors  are  always
74        used  in pairs (referred to as color-pairs).  A color-pair
75        consists of a foreground  color  (for  characters)  and  a
76        background color (for the blank field on which the charac-
77        ters are displayed).  A programmer  initializes  a  color-
78        pair  with  the routine <STRONG>init_pair</STRONG>.  After it has been ini-
79        tialized, <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>), a macro  defined  in  <STRONG>&lt;curses.h&gt;</STRONG>,
80        can be used as a new video attribute.
81
82        If  a  terminal  is capable of redefining colors, the pro-
83        grammer can use the routine <STRONG>init_color</STRONG> to change the defi-
84        nition   of   a   color.    The  routines  <STRONG>has_colors</STRONG>  and
85        <STRONG>can_change_color</STRONG>  return  <STRONG>TRUE</STRONG>  or  <STRONG>FALSE</STRONG>,  depending   on
86        whether  the  terminal  has color capabilities and whether
87        the programmer can change the colors.   The  routine  <STRONG>col-</STRONG>
88        <STRONG>or_content</STRONG>  allows  a programmer to extract the amounts of
89        red, green, and blue components in an  initialized  color.
90        The  routine  <STRONG>pair_content</STRONG> allows a programmer to find out
91        how a given color-pair is currently defined.
92
93    <STRONG>Routine</STRONG> <STRONG>Descriptions</STRONG>
94        The <STRONG>start_color</STRONG> routine requires no arguments.  It must be
95        called  if  the programmer wants to use colors, and before
96        any other color manipulation routine  is  called.   It  is
97        good  practice  to  call this routine right after <STRONG>initscr</STRONG>.
98        <STRONG>start_color</STRONG> initializes eight basic  colors  (black,  red,
99        green,  yellow,  blue,  magenta, cyan, and white), and two
100        global variables,  <STRONG>COLORS</STRONG>  and  <STRONG>COLOR_PAIRS</STRONG>  (respectively
101        defining  the maximum number of colors and color-pairs the
102        terminal can support).  It also restores the colors on the
103        terminal to the values they had when the terminal was just
104        turned on.
105
106        The <STRONG>init_pair</STRONG> routine changes the definition of  a  color-
107        pair.   It takes three arguments: the number of the color-
108        pair to be changed, the foreground color number,  and  the
109        background color number.  For portable applications:
110
111        -    The value of the first argument must be between <STRONG>1</STRONG> and
112             <STRONG>COLOR_PAIRS-1</STRONG>, except that if default colors are used
113             (see  <STRONG>use_default_colors</STRONG>) the upper limit is adjusted
114             to allow for extra pairs which use a default color in
115             foreground and/or background.
116
117        -    The  value  of the second and third arguments must be
118             between 0 and <STRONG>COLORS</STRONG>.  Color pair 0 is assumed to  be
119             white on black, but is actually whatever the terminal
120             implements before color is initialized.  It cannot be
121             modified by the application.
122
123        If  the  color-pair was previously initialized, the screen
124        is refreshed and all occurrences of  that  color-pair  are
125        changed to the new definition.
126
127        As  an  extension,  ncurses allows you to set color pair 0
128        via the <STRONG>assume_default_colors</STRONG> routine, or to  specify  the
129        use  of  default colors (color number <STRONG>-1</STRONG>) if you first in-
130        voke the <STRONG>use_default_colors</STRONG> routine.
131
132        The <STRONG>init_color</STRONG> routine changes the definition of a  color.
133        It  takes  four  arguments:  the number of the color to be
134        changed followed by three RGB values (for the  amounts  of
135        red,  green, and blue components).  The value of the first
136        argument must be between <STRONG>0</STRONG> and <STRONG>COLORS</STRONG>.  (See  the  section
137        <STRONG>Colors</STRONG>  for  the  default  color index.)  Each of the last
138        three arguments must be a value between 0 and 1000.   When
139        <STRONG>init_color</STRONG>  is  used, all occurrences of that color on the
140        screen immediately change to the new definition.
141
142        The <STRONG>has_colors</STRONG> routine requires no arguments.  It  returns
143        <STRONG>TRUE</STRONG>  if the terminal can manipulate colors; otherwise, it
144        returns <STRONG>FALSE</STRONG>.  This routine facilitates writing terminal-
145        independent  programs.   For example, a programmer can use
146        it to decide whether to use color or some other video  at-
147        tribute.
148
149        The  <STRONG>can_change_color</STRONG>  routine  requires no arguments.  It
150        returns <STRONG>TRUE</STRONG> if  the  terminal  supports  colors  and  can
151        change  their  definitions; other, it returns <STRONG>FALSE</STRONG>.  This
152        routine facilitates writing terminal-independent programs.
153
154        The <STRONG>color_content</STRONG> routine gives programmers a way to  find
155        the intensity of the red, green, and blue (RGB) components
156        in a color.  It requires four arguments: the color number,
157        and  three addresses of <STRONG>short</STRONG>s for storing the information
158        about the amounts of red, green, and  blue  components  in
159        the  given color.  The value of the first argument must be
160        between 0 and <STRONG>COLORS</STRONG>.  The values that are stored  at  the
161        addresses  pointed  to by the last three arguments are be-
162        tween 0 (no component) and 1000 (maximum amount of  compo-
163        nent).
164
165        The  <STRONG>pair_content</STRONG>  routine  allows programmers to find out
166        what colors a given color-pair consists of.   It  requires
167        three  arguments: the color-pair number, and two addresses
168        of <STRONG>short</STRONG>s for storing the foreground  and  the  background
169        color  numbers.   The  value of the first argument must be
170        between 1 and <STRONG>COLOR_PAIRS-1</STRONG>.  The values that  are  stored
171        at  the addresses pointed to by the second and third argu-
172        ments are between 0 and <STRONG>COLORS</STRONG>.
173
174    <STRONG>Colors</STRONG>
175        In <STRONG>&lt;curses.h&gt;</STRONG> the following macros are defined.  These are
176        the  default colors.  <STRONG>curses</STRONG> also assumes that <STRONG>COLOR_BLACK</STRONG>
177        is the default background color for all terminals.
178
179              <STRONG>COLOR_BLACK</STRONG>
180              <STRONG>COLOR_RED</STRONG>
181              <STRONG>COLOR_GREEN</STRONG>
182              <STRONG>COLOR_YELLOW</STRONG>
183              <STRONG>COLOR_BLUE</STRONG>
184              <STRONG>COLOR_MAGENTA</STRONG>
185              <STRONG>COLOR_CYAN</STRONG>
186              <STRONG>COLOR_WHITE</STRONG>
187
188
189 </PRE>
190 <H2>RETURN VALUE</H2><PRE>
191        The routines <STRONG>can_change_color()</STRONG>  and  <STRONG>has_colors()</STRONG>  return
192        <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
193
194        All other routines return the integer <STRONG>ERR</STRONG> upon failure and
195        an <STRONG>OK</STRONG> (SVr4 specifies only "an integer  value  other  than
196        <STRONG>ERR</STRONG>") upon successful completion.
197
198        X/Open  defines  no error conditions.  This implementation
199        will return <STRONG>ERR</STRONG> on attempts to use  color  values  outside
200        the range 0 to COLORS-1 (except for the default colors ex-
201        tension), or use color pairs outside the range 0  to  COL-
202        OR_PAIR-1.  Color values used in <STRONG>init_color</STRONG> must be in the
203        range 0 to 1000.  An error is returned from all  functions
204        if the terminal has not been initialized.  An error is re-
205        turned from  secondary  functions  such  as  <STRONG>init_pair</STRONG>  if
206        <STRONG>start_color</STRONG> was not called.
207
208               <STRONG>init_color</STRONG>
209                    returns an error if the terminal does not sup-
210                    port  this  feature,  e.g.,  if  the  <EM>initial-</EM>
211                    <EM>ize</EM><STRONG>_</STRONG><EM>color</EM> capability is absent from the termi-
212                    nal description.
213
214               <STRONG>start_color</STRONG>
215                    returns an error If the color table cannot  be
216                    allocated.
217
218
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.
228
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>.
234
235        Several  caveats  apply  on 386 and 486 machines with VGA-
236        compatible graphics:
237
238        -    COLOR_YELLOW is actually brown.  To get  yellow,  use
239             COLOR_YELLOW combined with the <STRONG>A_BOLD</STRONG> attribute.
240
241        -    The  A_BLINK  attribute  should  in  theory cause the
242             background to go bright.  This often fails  to  work,
243             and  even  some cards for which it mostly works (such
244             as the Paradise and compatibles) do the  wrong  thing
245             when you try to set a bright "yellow" background (you
246             get a blinking yellow foreground instead).
247
248        -    Color RGB values are not settable.
249
250
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>.
255
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.
260
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.
264
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.
268
269
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>default_col-</STRONG>
273        <STRONG><A HREF="default_colors.3x.html">ors(3x)</A></STRONG>
274
275
276
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>