]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/curs_color.3x.html
ncurses 6.4 - patch 20240420
[ncurses.git] / doc / html / man / curs_color.3x.html
index df4b22c765ed02f9b0fe4a3ad5dc722d4f0742bb..dc4505fbafc71bd680729a0cbd4451ad3b07be73 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2022,2023 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_color.3x,v 1.93 2023/12/16 21:07:24 tom Exp @
+  * @Id: curs_color.3x,v 1.100 2024/04/20 21:24:19 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_color 3x 2023-12-16 ncurses 6.4 Library calls</TITLE>
+<TITLE>curs_color 3x 2024-04-20 ncurses 6.4 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_color 3x 2023-12-16 ncurses 6.4 Library calls</H1>
+<H1 class="no-header">curs_color 3x 2024-04-20 ncurses 6.4 Library calls</H1>
 <PRE>
 <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
+       <EM>/*</EM> <EM>variables</EM> <EM>*/</EM>
+       <STRONG>int</STRONG> <STRONG>COLOR_PAIRS;</STRONG>
+       <STRONG>int</STRONG> <STRONG>COLORS;</STRONG>
+
        <STRONG>int</STRONG> <STRONG>start_color(void);</STRONG>
 
        <STRONG>bool</STRONG> <STRONG>has_colors(void);</STRONG>
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
 </PRE><H3><a name="h3-Overview">Overview</a></H3><PRE>
-       <EM>curses</EM> supports color attributes on terminals with that capability.  To
-       use  these  routines  <STRONG>start_color</STRONG>  must  be called, usually right after
-       <STRONG>initscr</STRONG>.  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
-       <STRONG>init_pair</STRONG>.  After it has been initialized, <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>) can be used to
-       convert the pair to a video attribute.
-
-       If  a  terminal is capable of redefining colors, the programmer can use
-       the routine <STRONG>init_color</STRONG> to  change  the  definition  of  a  color.   The
-       routines   <STRONG>has_colors</STRONG>   and  <STRONG>can_change_color</STRONG>  return  <STRONG>TRUE</STRONG>  or  <STRONG>FALSE</STRONG>,
-       depending on whether the terminal has color  capabilities  and  whether
-       the programmer can change the colors.  The routine <STRONG>color_content</STRONG> allows
-       a programmer to extract the amounts of red, green, and blue  components
-       in  an initialized color.  The routine <STRONG>pair_content</STRONG> allows a programmer
-       to find out how a given color pair is currently defined.
+       <EM>curses</EM> supports color attributes on  terminals  with  that  capability.
+       Call  <STRONG>start_color</STRONG>  (typically  right  after <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>) to enable this
+       feature.  Colors are always used in pairs.   A  <EM>color</EM>  <EM>pair</EM>  couples  a
+       foreground  color  for characters with a background color for the blank
+       field on which characters are rendered.  <STRONG>init_pair</STRONG> initializes a  color
+       pair.   The  macro  <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>)  can then convert the pair to a video
+       attribute.
+
+       If  a  terminal  has  the  relevant  capability,   <STRONG>init_color</STRONG>   permits
+       (re)definition of a color.  <STRONG>has_colors</STRONG> and <STRONG>can_change_color</STRONG> return <STRONG>TRUE</STRONG>
+       or <STRONG>FALSE</STRONG>, depending on whether the terminal has  color  capability  and
+       whether  the  programmer  can change the colors.  <STRONG>color_content</STRONG> permits
+       extraction of the red, green, and blue  components  of  an  initialized
+       color.   <STRONG>pair_content</STRONG>  permits  discovery  of  a  color  pair's current
+       definition.
 
 
-</PRE><H3><a name="h3-Color-Rendering">Color Rendering</a></H3><PRE>
-       The  <EM>curses</EM>  library  combines  these  inputs  to  produce  the  actual
-       foreground and background colors shown on the screen:
+</PRE><H3><a name="h3-Rendering">Rendering</a></H3><PRE>
+       <EM>curses</EM> combines the following data to render a character cell.  Any  of
+       them can include color information.
 
-       <STRONG>o</STRONG>   per-character video attributes (e.g., via <STRONG>waddch</STRONG>),
+       <STRONG>o</STRONG>   <EM>curses</EM> character attributes, as from <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG> or <STRONG><A HREF="curs_add_wch.3x.html">wadd_wch(3x)</A></STRONG>
 
-       <STRONG>o</STRONG>   the window attribute (e.g., by <STRONG>wattrset</STRONG>), and
+       <STRONG>o</STRONG>   window attributes, as from <STRONG><A HREF="curs_attr.3x.html">wattrset(3x)</A></STRONG> or <STRONG><A HREF="curs_attr.3x.html">wattr_set(3x)</A></STRONG>
 
-       <STRONG>o</STRONG>   the background character (e.g., <STRONG>wbkgdset</STRONG>).
+       <STRONG>o</STRONG>   window  background  character  attributes,  as from <STRONG><A HREF="curs_bkgd.3x.html">wbkgdset(3x)</A></STRONG> or
+           <STRONG><A HREF="curs_bkgrnd.3x.html">wbkgrndset(3x)</A></STRONG>
 
-       Per-character  and  window  attributes  are  usually set by a parameter
-       containing  video  attributes  including  a  color  pair  value.   Some
-       functions such as <STRONG>wattr_set</STRONG> use a separate parameter which is the color
-       pair number.
+       Per-character and window attributes are usually set through a  function
+       parameter  containing  attributes  including  a color pair value.  Some
+       functions,  such  as  <STRONG>wattr_set</STRONG>,  use  a  separate  color  pair  number
+       parameter.
 
-       The background character is a special case:  it  includes  a  character
-       value, just as if it were passed to <STRONG>waddch</STRONG>.
+       The  background  character  is  a special case: it includes a character
+       code, just as if it were passed to <STRONG>waddch</STRONG>.
 
-       The  <EM>curses</EM> library does the actual work of combining these color pairs
+       The <EM>curses</EM> library does the actual work of combining these color  pairs
        in an internal function called from <STRONG>waddch</STRONG>:
 
        <STRONG>o</STRONG>   If the parameter passed to <STRONG>waddch</STRONG> is <EM>blank</EM>, and it uses the special
 
            <STRONG>o</STRONG>   <EM>curses</EM> next checks the window attribute.
 
-           <STRONG>o</STRONG>   If  the window attribute does not use color pair 0, <EM>curses</EM> uses
+           <STRONG>o</STRONG>   If the window attribute does not use color pair 0, <EM>curses</EM>  uses
                the color pair from the window attribute.
 
            <STRONG>o</STRONG>   Otherwise, <EM>curses</EM> uses the background character.
 
-       <STRONG>o</STRONG>   If the parameter passed to <STRONG>waddch</STRONG> is <EM>not</EM> <EM>blank</EM>, or it does not  use
-           the  special  color  pair 0, <EM>curses</EM> prefers the color pair from the
-           parameter, if it  is  nonzero.   Otherwise,  it  tries  the  window
+       <STRONG>o</STRONG>   If  the parameter passed to <STRONG>waddch</STRONG> is <EM>not</EM> <EM>blank</EM>, or it does not use
+           the special color pair 0, <EM>curses</EM> prefers the color  pair  from  the
+           parameter,  if  it  is  nonzero.   Otherwise,  it  tries the window
            attribute next, and finally the background character.
 
-       Some  <EM>curses</EM>  functions  such  as  <STRONG>wprintw</STRONG>  call  <STRONG>waddch</STRONG>.  Those do not
-       combine its parameter with a color pair.  Consequently those calls  use
+       Some <EM>curses</EM> functions such  as  <STRONG>wprintw</STRONG>  call  <STRONG>waddch</STRONG>.   Those  do  not
+       combine  its parameter with a color pair.  Consequently those calls use
        only the window attribute or the background character.
 
 
              <STRONG>COLOR_CYAN</STRONG>
              <STRONG>COLOR_WHITE</STRONG>
 
-       Some  terminals  support  more than the eight (8) "ANSI" colors.  There
+       Some terminals support more than the eight (8)  "ANSI"  colors.   There
        are no standard names for those additional colors.
 
 
 </PRE><H2><a name="h2-VARIABLES">VARIABLES</a></H2><PRE>
 
 </PRE><H3><a name="h3-COLORS">COLORS</a></H3><PRE>
-       is initialized by <STRONG>start_color</STRONG> to  the  maximum  number  of  colors  the
+       is  initialized  by  <STRONG>start_color</STRONG>  to  the  maximum number of colors the
        terminal can support.
 
 
 </PRE><H3><a name="h3-COLOR_PAIRS">COLOR_PAIRS</a></H3><PRE>
-       is  initialized by <STRONG>start_color</STRONG> to the maximum number of color pairs the
-       terminal can support.
+       is initialized by <STRONG>start_color</STRONG> to the maximum number of color pairs  the
+       terminal can support.  Often, its value is the product <STRONG>COLORS</STRONG> x <STRONG>COLORS</STRONG>,
+       but this is not always true.
+
+       <STRONG>o</STRONG>   A few terminals use the HLS color space  (see  <STRONG>start_color</STRONG>  below),
+           ignoring this rule; and
+
+       <STRONG>o</STRONG>   terminals  supporting  a  large number of colors are limited to the
+           number of color pairs that a <EM>signed</EM> <EM>short</EM> value can represent.
 
 
 </PRE><H2><a name="h2-FUNCTIONS">FUNCTIONS</a></H2><PRE>
 
 </PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
        The functions marked as extensions were designed for  <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>,  and
-       are  not  found  in  SVr4  curses, 4.4BSD curses, or any other previous
-       version of curses.
+       are  not  found  in  SVr4  <EM>curses</EM>, 4.4BSD <EM>curses</EM>, or any other previous
+       curses implementation.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       This implementation satisfies XSI Curses's minimum maximums for  <STRONG>COLORS</STRONG>
-       and <STRONG>COLOR_PAIRS</STRONG>.
+       Applications employing <EM>ncurses</EM> extensions should condition their use on
+       the visibility of the <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
+
+       This  implementation  satisfies  X/Open  Curses's  minimum maximums for
+       <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG>.
 
        The  <STRONG>init_pair</STRONG>  routine  accepts  negative  values  of  foreground  and
-       background color to support the <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>  extension,  but
+       background  color  to support the <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG> extension, but
        only if that routine has been first invoked.
 
        The assumption that <STRONG>COLOR_BLACK</STRONG> is the default background color for all
-       terminals  can  be   modified   using   the   <STRONG><A HREF="default_colors.3x.html">assume_default_colors(3x)</A></STRONG>
+       terminals   can   be   modified   using  the  <STRONG><A HREF="default_colors.3x.html">assume_default_colors(3x)</A></STRONG>
        extension.
 
-       This  implementation checks the pointers, e.g., for the values returned
-       by <STRONG>color_content</STRONG> and <STRONG>pair_content</STRONG>, and will  treat  those  as  optional
+       This implementation checks the pointers, e.g., for the values  returned
+       by  <STRONG>color_content</STRONG>  and  <STRONG>pair_content</STRONG>,  and will treat those as optional
        parameters when null.
 
-       X/Open  Curses  does  not  specify a limit for the number of colors and
+       X/Open Curses does not specify a limit for the  number  of  colors  and
        color pairs which a terminal can support.  However, in its use of <STRONG>short</STRONG>
-       for  the  parameters,  it carries over SVr4's implementation detail for
+       for the parameters, it carries over SVr4's  implementation  detail  for
        the compiled terminfo database, which uses signed 16-bit numbers.  This
-       implementation  provides extended versions of those functions which use
-       <STRONG>short</STRONG> parameters, allowing applications to use larger color- and  pair-
+       implementation provides extended versions of those functions which  use
+       <STRONG>short</STRONG>  parameters, allowing applications to use larger color- and pair-
        numbers.
 
        The <STRONG>reset_color_pairs</STRONG> function is an extension of <EM>ncurses</EM>.
 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
        SVr3.2 introduced color support to curses in 1987.
 
-       SVr4  made  internal  changes,  e.g.,  moving the storage for the color
-       state  from  <STRONG>SP</STRONG>  (the  <STRONG>SCREEN</STRONG>  structure)  to  <STRONG>cur_term</STRONG>  (the  <STRONG>TERMINAL</STRONG>
+       SVr4 made internal changes, e.g., moving  the  storage  for  the  color
+       state  from  <STRONG>SP</STRONG>  (the  <EM>SCREEN</EM>  structure)  to  <STRONG>cur_term</STRONG>  (the  <EM>TERMINAL</EM>
        structure), but provided the same set of library functions.
 
-       SVr4  curses  limits  the  number of color pairs to 64, reserving color
-       pair zero (0) as the terminal's initial uncolored  state.   This  limit
-       arises  because  the color pair information is a bitfield in the <STRONG>chtype</STRONG>
+       SVr4 curses limits the number of color pairs  to  64,  reserving  color
+       pair  zero  (0)  as the terminal's initial uncolored state.  This limit
+       arises because the color pair information is a bitfield in  the  <STRONG>chtype</STRONG>
        data type (denoted by <STRONG>A_COLOR</STRONG>).
 
        Other implementations of curses had different limits:
 
        <STRONG>o</STRONG>   X/Open Curses (1992-present) added a new structure <STRONG>cchar_t</STRONG> to store
            the character, attributes and color pair values, allowing increased
-           range of color pairs.  Both color pairs  and  color-values  used  a
+           range  of  color  pairs.   Both color pairs and color-values used a
            signed <STRONG>short</STRONG>, limiting values to 15 bits.
 
-       <STRONG>o</STRONG>   <EM>ncurses</EM>  (1992-present)  uses  eight  bits  for  <STRONG>A_COLOR</STRONG>  in <STRONG>chtype</STRONG>
+       <STRONG>o</STRONG>   <EM>ncurses</EM> (1992-present)  uses  eight  bits  for  <STRONG>A_COLOR</STRONG>  in  <STRONG>chtype</STRONG>
            values.
 
-           Version 5.3 provided a wide-character interface  (2002),  but  left
+           Version  5.3  provided  a wide-character interface (2002), but left
            color pairs as part of the attributes-field.
 
            Since version 6 (2015), ncurses uses a separate <STRONG>int</STRONG> for color pairs
            in the <STRONG>cchar_t</STRONG> values.  When those color pair values fit in 8 bits,
-           ncurses  allows  color  pairs  to  be manipulated via the functions
+           ncurses allows color pairs to  be  manipulated  via  the  functions
            using <STRONG>chtype</STRONG> values.
 
-       <STRONG>o</STRONG>   NetBSD curses used  6  bits  from  2000  (when  colors  were  first
-           supported)  until  2004.   At  that point, NetBSD changed to use 10
-           bits.  As of 2021, that size is  unchanged.   Like  <EM>ncurses</EM>  before
-           version  6,  the  NetBSD  color  pair  information is stored in the
-           attributes field of <STRONG>cchar_t</STRONG>, limiting the number of color pairs  by
+       <STRONG>o</STRONG>   NetBSD  curses  used  6  bits  from  2000  (when  colors were first
+           supported) until 2004.  At that point, NetBSD  changed  to  use  10
+           bits.   As  of  2021,  that size is unchanged.  Like <EM>ncurses</EM> before
+           version 6, the NetBSD color  pair  information  is  stored  in  the
+           attributes  field of <STRONG>cchar_t</STRONG>, limiting the number of color pairs by
            the size of the bitfield.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,    <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,   <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,    <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
        <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
 
 
 
-ncurses 6.4                       2023-12-16                    <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
+ncurses 6.4                       2024-04-20                    <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
@@ -535,7 +548,7 @@ ncurses 6.4                       2023-12-16                    <STRONG><A HREF=
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
 <li><a href="#h3-Overview">Overview</a></li>
-<li><a href="#h3-Color-Rendering">Color Rendering</a></li>
+<li><a href="#h3-Rendering">Rendering</a></li>
 </ul>
 </li>
 <li><a href="#h2-CONSTANTS">CONSTANTS</a></li>