]> ncurses.scripts.mit.edu Git - ncurses.git/blob - doc/html/man/curs_color.3x.html
ncurses 6.0 - patch 20150808
[ncurses.git] / doc / html / man / curs_color.3x.html
1 <!-- 
2   ****************************************************************************
3   * Copyright (c) 1998-2010,2015 Free Software Foundation, Inc.              *
4   *                                                                          *
5   * Permission is hereby granted, free of charge, to any person obtaining a  *
6   * copy of this software and associated documentation files (the            *
7   * "Software"), to deal in the Software without restriction, including      *
8   * without limitation the rights to use, copy, modify, merge, publish,      *
9   * distribute, distribute with modifications, sublicense, and/or sell       *
10   * copies of the Software, and to permit persons to whom the Software is    *
11   * furnished to do so, subject to the following conditions:                 *
12   *                                                                          *
13   * The above copyright notice and this permission notice shall be included  *
14   * in all copies or substantial portions of the Software.                   *
15   *                                                                          *
16   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23   *                                                                          *
24   * Except as contained in this notice, the name(s) of the above copyright   *
25   * holders shall not be used in advertising or otherwise to promote the     *
26   * sale, use or other dealings in this Software without prior written       *
27   * authorization.                                                           *
28   ****************************************************************************
29   * @Id: curs_color.3x,v 1.39 2015/06/06 23:29:02 tom Exp @
30 -->
31 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
32 <HTML>
33 <HEAD>
34 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
35 <meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
36 <TITLE>curs_color 3x</TITLE>
37 <link rev=made href="mailto:bug-ncurses@gnu.org">
38 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
39 </HEAD>
40 <BODY>
41 <H1 class="no-header">curs_color 3x</H1>
42 <PRE>
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><a name="h2-NAME">NAME</a></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><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
57        <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
58
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>
67
68
69 </PRE>
70 <H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
71
72 </PRE>
73 <H3><a name="h3-Overview">Overview</a></H3><PRE>
74        <STRONG>curses</STRONG> supports color attributes on  terminals  with  that
75        capability.   To  use  these  routines <STRONG>start_color</STRONG> must be
76        called, usually right after <STRONG>initscr</STRONG>.   Colors  are  always
77        used  in pairs (referred to as color-pairs).  A color-pair
78        consists of a foreground  color  (for  characters)  and  a
79        background color (for the blank field on which the charac-
80        ters are displayed).  A programmer  initializes  a  color-
81        pair  with  the routine <STRONG>init_pair</STRONG>.  After it has been ini-
82        tialized, <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>), a macro  defined  in  <STRONG>&lt;curses.h&gt;</STRONG>,
83        can be used as a new video attribute.
84
85        If  a  terminal  is capable of redefining colors, the pro-
86        grammer can use the routine <STRONG>init_color</STRONG> to change the defi-
87        nition   of   a   color.    The  routines  <STRONG>has_colors</STRONG>  and
88        <STRONG>can_change_color</STRONG>  return  <STRONG>TRUE</STRONG>  or  <STRONG>FALSE</STRONG>,  depending   on
89        whether  the  terminal  has color capabilities and whether
90        the programmer can change the colors.   The  routine  <STRONG>col-</STRONG>
91        <STRONG>or_content</STRONG>  allows  a programmer to extract the amounts of
92        red, green, and blue components in an  initialized  color.
93        The  routine  <STRONG>pair_content</STRONG> allows a programmer to find out
94        how a given color-pair is currently defined.
95
96
97 </PRE>
98 <H3><a name="h3-Color-Rendering">Color Rendering</a></H3><PRE>
99        The <STRONG>curses</STRONG> library combines these inputs  to  produce  the
100        actual  foreground  and  background  colors  shown  on the
101        screen:
102
103        <STRONG>o</STRONG>   per-character video attributes (e.g., via <STRONG>waddch</STRONG>),
104
105        <STRONG>o</STRONG>   the window attribute (e.g., by <STRONG>wattrset</STRONG>), and
106
107        <STRONG>o</STRONG>   the background character (e.g., <STRONG>wbkgdset</STRONG>).
108
109        Per-character and window attributes are usually set  by  a
110        parameter  containing  video  attributes  including a <STRONG>COL-</STRONG>
111        <STRONG>OR_PAIR</STRONG> value.  Some functions such  as  <STRONG>wattr_set</STRONG>  use  a
112        separate parameter which is the color pair number.
113
114        The  background character is a special case: it includes a
115        character value, just as if it were passed to <STRONG>waddch</STRONG>.
116
117        The <STRONG>curses</STRONG> library does the actual work of combining these
118        color pairs in an internal function called from <STRONG>waddch</STRONG>:
119
120        <STRONG>o</STRONG>   If the parameter passed to <STRONG>waddch</STRONG> is <EM>blank</EM>, and it us-
121            es the special color pair 0,
122
123            <STRONG>o</STRONG>   <STRONG>curses</STRONG> next checks the window attribute.
124
125            <STRONG>o</STRONG>   If the window attribute does not use color pair 0,
126                <STRONG>curses</STRONG>  uses  the  color  pair from the window at-
127                tribute.
128
129            <STRONG>o</STRONG>   Otherwise, <STRONG>curses</STRONG> uses the background character.
130
131        <STRONG>o</STRONG>   If the parameter passed to <STRONG>waddch</STRONG> is <EM>not</EM> <EM>blank</EM>, or  it
132            does  not use the special color pair 0, <STRONG>curses</STRONG> prefers
133            the color pair from the parameter, if it  is  nonzero.
134            Otherwise, it tries the window attribute next, and fi-
135            nally the background character.
136
137        Some <STRONG>curses</STRONG> functions such as <STRONG>wprintw</STRONG> call <STRONG>waddch</STRONG>.   Those
138        do  not  combine  its parameter with a color pair.  Conse-
139        quently those calls use only the window attribute  or  the
140        background character.
141
142
143 </PRE>
144 <H3><a name="h3-Routine-Descriptions">Routine Descriptions</a></H3><PRE>
145        The <STRONG>start_color</STRONG> routine requires no arguments.  It must be
146        called if the programmer wants to use colors,  and  before
147        any  other  color  manipulation  routine is called.  It is
148        good practice to call this routine  right  after  <STRONG>initscr</STRONG>.
149        <STRONG>start_color</STRONG> does this:
150
151        <STRONG>o</STRONG>   It  initializes  two global variables, <STRONG>COLORS</STRONG> and <STRONG>COL-</STRONG>
152            <STRONG>OR_PAIRS</STRONG> (respectively defining the maximum number  of
153            colors and color-pairs the terminal can support).
154
155        <STRONG>o</STRONG>   It initializes the special color pair <STRONG>0</STRONG> to the default
156            foreground and  background  colors.   No  other  color
157            pairs are initialized.
158
159        <STRONG>o</STRONG>   It  restores  the colors on the terminal to the values
160            they had when the terminal was just turned on.
161
162        <STRONG>o</STRONG>   If the terminal supports the <STRONG>initc</STRONG>  (<STRONG>initialize_color</STRONG>)
163            capability, <STRONG>start_color</STRONG> initializes its internal table
164            representing the red, green and blue components of the
165            color palette.
166
167            The components depend on whether the terminal uses CGA
168            (aka "ANSI") or HLS (i.e., the <STRONG>hls</STRONG> (<STRONG>hue_lightness_sat-</STRONG>
169            <STRONG>uration</STRONG>) capability is set).  The table is initialized
170            first for eight basic colors (black, red, green,  yel-
171            low,  blue,  magenta, cyan, and white), and after that
172            (if the terminal supports more than eight colors)  the
173            components are initialized to <STRONG>1000</STRONG>.
174
175            <STRONG>start_color</STRONG>  does  not  attempt  to set the terminal's
176            color palette to match its built-in table.  An  appli-
177            cation  may use <STRONG>init_color</STRONG> to alter the internal table
178            along with the terminal's color.
179
180        These limits apply to color values and color pairs.   Val-
181        ues  outside these limits are not legal, and may result in
182        a runtime error:
183
184        <STRONG>o</STRONG>   <STRONG>COLORS</STRONG> corresponds to the terminal database's <STRONG>max_col-</STRONG>
185            <STRONG>ors</STRONG> capability, which is typically a signed 16-bit in-
186            teger (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>).
187
188        <STRONG>o</STRONG>   color values are expected to be in the range <STRONG>0</STRONG> to <STRONG>COL-</STRONG>
189            <STRONG>ORS-1</STRONG>, inclusive (including <STRONG>0</STRONG> and <STRONG>COLORS-1</STRONG>).
190
191        <STRONG>o</STRONG>   a  special  color value <STRONG>-1</STRONG> is used in certain extended
192            functions to denote the  <EM>default</EM>  <EM>color</EM>  (see  <STRONG>use_de-</STRONG>
193            <STRONG>fault_colors</STRONG>).
194
195        <STRONG>o</STRONG>   <STRONG>COLOR_PAIRS</STRONG>  corresponds  to  the  terminal database's
196            <STRONG>max_pairs</STRONG> capability,  which  is  typically  a  signed
197            16-bit integer (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>).
198
199        <STRONG>o</STRONG>   legal  color  pair  values  are in the range <STRONG>1</STRONG> to <STRONG>COL-</STRONG>
200            <STRONG>OR_PAIRS-1</STRONG>, inclusive.
201
202        <STRONG>o</STRONG>   color pair <STRONG>0</STRONG> is special; it denotes "no color".
203
204            Color pair <STRONG>0</STRONG> is assumed to be white on black,  but  is
205            actually whatever the terminal implements before color
206            is initialized.  It cannot be modified by the applica-
207            tion.
208
209        The  <STRONG>init_pair</STRONG>  routine changes the definition of a color-
210        pair.  It takes three arguments: the number of the  color-
211        pair  to  be changed, the foreground color number, and the
212        background color number.  For portable applications:
213
214        <STRONG>o</STRONG>   The first argument must be a legal color  pair  value.
215            If  default  colors  are used (see <STRONG>use_default_colors</STRONG>)
216            the upper limit is adjusted to allow for  extra  pairs
217            which  use  a default color in foreground and/or back-
218            ground.
219
220        <STRONG>o</STRONG>   The second and third arguments  must  be  legal  color
221            values.
222
223        If  the  color-pair was previously initialized, the screen
224        is refreshed and all occurrences of  that  color-pair  are
225        changed to the new definition.
226
227        As  an  extension,  ncurses allows you to set color pair <STRONG>0</STRONG>
228        via the <STRONG>assume_default_colors</STRONG> routine, or to  specify  the
229        use  of  default colors (color number <STRONG>-1</STRONG>) if you first in-
230        voke the <STRONG>use_default_colors</STRONG> routine.
231
232        The <STRONG>init_color</STRONG> routine changes the definition of a  color.
233        It  takes  four  arguments:  the number of the color to be
234        changed followed by three RGB values (for the  amounts  of
235        red, green, and blue components).  The first argument must
236        be a legal color value; default  colors  are  not  allowed
237        here.   (See  the section <STRONG>Colors</STRONG> for the default color in-
238        dex.)  Each of the last three arguments must be a value in
239        the  range  <STRONG>0</STRONG>  through <STRONG>1000</STRONG>.  When <STRONG>init_color</STRONG> is used, all
240        occurrences of that color on the screen immediately change
241        to the new definition.
242
243        The  <STRONG>has_colors</STRONG> routine requires no arguments.  It returns
244        <STRONG>TRUE</STRONG> if the terminal can manipulate colors; otherwise,  it
245        returns <STRONG>FALSE</STRONG>.  This routine facilitates writing terminal-
246        independent programs.  For example, a programmer  can  use
247        it  to decide whether to use color or some other video at-
248        tribute.
249
250        The <STRONG>can_change_color</STRONG> routine requires  no  arguments.   It
251        returns  <STRONG>TRUE</STRONG>  if  the  terminal  supports  colors and can
252        change their definitions; other, it returns  <STRONG>FALSE</STRONG>.   This
253        routine facilitates writing terminal-independent programs.
254
255        The  <STRONG>color_content</STRONG> routine gives programmers a way to find
256        the intensity of the red, green, and blue (RGB) components
257        in a color.  It requires four arguments: the color number,
258        and three addresses of <STRONG>short</STRONG>s for storing the  information
259        about  the  amounts  of red, green, and blue components in
260        the given color.  The first argument must be a legal color
261        value,  i.e.,  <STRONG>0</STRONG>  through <STRONG>COLORS-1</STRONG>, inclusive.  The values
262        that are stored at the addresses pointed to  by  the  last
263        three  arguments are in the range <STRONG>0</STRONG> (no component) through
264        <STRONG>1000</STRONG> (maximum amount of component), inclusive.
265
266        The <STRONG>pair_content</STRONG> routine allows programmers  to  find  out
267        what  colors  a given color-pair consists of.  It requires
268        three arguments: the color-pair number, and two  addresses
269        of  <STRONG>short</STRONG>s  for  storing the foreground and the background
270        color numbers.  The first argument must be a  legal  color
271        value,  i.e., in the range <STRONG>1</STRONG> through <STRONG>COLOR_PAIRS-1</STRONG>, inclu-
272        sive.  The values that are stored at the addresses pointed
273        to  by  the  second and third arguments are in the range <STRONG>0</STRONG>
274        through <STRONG>COLORS</STRONG>, inclusive.
275
276
277 </PRE>
278 <H3><a name="h3-Colors">Colors</a></H3><PRE>
279        In <STRONG>&lt;curses.h&gt;</STRONG> the following macros are defined.  These are
280        the  standard colors (ISO-6429).  <STRONG>curses</STRONG> also assumes that
281        <STRONG>COLOR_BLACK</STRONG> is the default background color for all termi-
282        nals.
283
284              <STRONG>COLOR_BLACK</STRONG>
285              <STRONG>COLOR_RED</STRONG>
286              <STRONG>COLOR_GREEN</STRONG>
287              <STRONG>COLOR_YELLOW</STRONG>
288              <STRONG>COLOR_BLUE</STRONG>
289              <STRONG>COLOR_MAGENTA</STRONG>
290              <STRONG>COLOR_CYAN</STRONG>
291              <STRONG>COLOR_WHITE</STRONG>
292
293
294 </PRE>
295 <H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
296        The  routines  <STRONG>can_change_color()</STRONG>  and <STRONG>has_colors()</STRONG> return
297        <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
298
299        All other routines return the integer <STRONG>ERR</STRONG> upon failure and
300        an  <STRONG>OK</STRONG>  (SVr4  specifies only "an integer value other than
301        <STRONG>ERR</STRONG>") upon successful completion.
302
303        X/Open defines no error conditions.   This  implementation
304        will  return  <STRONG>ERR</STRONG>  on attempts to use color values outside
305        the range <STRONG>0</STRONG> to COLORS-1 (except for the default colors ex-
306        tension),  or  use color pairs outside the range <STRONG>0</STRONG> to <STRONG>COL-</STRONG>
307        <STRONG>OR_PAIRS-1</STRONG>.  Color values used in <STRONG>init_color</STRONG>  must  be  in
308        the  range <STRONG>0</STRONG> to <STRONG>1000</STRONG>.  An error is returned from all func-
309        tions if the terminal has not been initialized.  An  error
310        is  returned from secondary functions such as <STRONG>init_pair</STRONG> if
311        <STRONG>start_color</STRONG> was not called.
312
313           <STRONG>init_color</STRONG>
314                returns an error if the terminal does not  support
315                this  feature, e.g., if the <EM>initialize</EM><STRONG>_</STRONG><EM>color</EM> capa-
316                bility is absent from the terminal description.
317
318           <STRONG>start_color</STRONG>
319                returns an error if the color table cannot be  al-
320                located.
321
322
323 </PRE>
324 <H2><a name="h2-NOTES">NOTES</a></H2><PRE>
325        In  the  <EM>ncurses</EM> implementation, there is a separate color
326        activation flag, color palette, color pairs table, and as-
327        sociated  COLORS  and  COLOR_PAIRS counts for each screen;
328        the <STRONG>start_color</STRONG> function only affects the current  screen.
329        The SVr4/XSI interface is not really designed with this in
330        mind, and historical  implementations  may  use  a  single
331        shared color palette.
332
333        Note that setting an implicit background color via a color
334        pair affects only character cells that a  character  write
335        operation  explicitly  touches.   To change the background
336        color used when parts of a window are blanked  by  erasing
337        or scrolling operations, see <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>.
338
339        Several  caveats  apply  on 386 and 486 machines with VGA-
340        compatible graphics:
341
342        <STRONG>o</STRONG>   COLOR_YELLOW is actually brown.  To  get  yellow,  use
343            COLOR_YELLOW combined with the <STRONG>A_BOLD</STRONG> attribute.
344
345        <STRONG>o</STRONG>   The A_BLINK attribute should in theory cause the back-
346            ground to go bright.  This often fails  to  work,  and
347            even some cards for which it mostly works (such as the
348            Paradise and compatibles) do the wrong thing when  you
349            try  to  set  a  bright "yellow" background (you get a
350            blinking yellow foreground instead).
351
352        <STRONG>o</STRONG>   Color RGB values are not settable.
353
354
355 </PRE>
356 <H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
357        This implementation satisfies XSI Curses's  minimum  maxi-
358        mums for <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG>.
359
360        The  <STRONG>init_pair</STRONG>  routine  accepts  negative values of fore-
361        ground  and  background  color  to  support  the   <STRONG>use_de-</STRONG>
362        <STRONG>fault_colors</STRONG>  extension, but only if that routine has been
363        first invoked.
364
365        The assumption that <STRONG>COLOR_BLACK</STRONG> is the default  background
366        color  for  all  terminals  can  be modified using the <STRONG>as-</STRONG>
367        <STRONG>sume_default_colors</STRONG> extension.
368
369        This implementation checks the  pointers,  e.g.,  for  the
370        values  returned  by  <STRONG>color_content</STRONG>  and <STRONG>pair_content</STRONG>, and
371        will treat those as optional parameters when null.
372
373
374 </PRE>
375 <H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
376        <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>
377        <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>, <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
378
379
380
381                                                          <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
382 </PRE>
383 <div class="nav">
384 <ul>
385 <li><a href="#h2-NAME">NAME</a></li>
386 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
387 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
388 <ul>
389 <li><a href="#h3-Overview">Overview</a></li>
390 <li><a href="#h3-Color-Rendering">Color Rendering</a></li>
391 <li><a href="#h3-Routine-Descriptions">Routine Descriptions</a></li>
392 <li><a href="#h3-Colors">Colors</a></li>
393 </ul>
394 </li>
395 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
396 <li><a href="#h2-NOTES">NOTES</a></li>
397 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
398 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
399 </ul>
400 </div>
401 </BODY>
402 </HTML>