]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/curs_attr.3x.html
ncurses 6.3 - patch 20220813
[ncurses.git] / doc / html / man / curs_attr.3x.html
index 56844fd7375cf9c5f155a2b91d58776d387d1741..70dc7455b36b96514d76736638973c2894c80d7e 100644 (file)
@@ -1,7 +1,8 @@
-<!-- 
+<!--
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc.              *
+  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -27,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_attr.3x,v 1.60 2017/10/14 20:01:13 tom Exp @
+  * @Id: curs_attr.3x,v 1.72 2022/04/16 19:18:32 tom Exp @
   * ---------------------------------------------------------------------------
   * attr_get
   * .br
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
-<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_attr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+
 </HEAD>
 <BODY>
 <H1 class="no-header">curs_attr 3x</H1>
 
 
 </PRE><H3><a name="h3-Legacy-window-attributes">Legacy window attributes</a></H3><PRE>
-       Most of the window attribute routines are extensions of older  routines
-       which  assume  that  color pairs are OR'd into the attribute parameter.
-       These older routines use the same name, omitting an underscore (<STRONG>_</STRONG>).
+       The X/Open window attribute routines which <EM>set</EM> or <EM>get</EM>, turn <EM>on</EM>  or  <EM>off</EM>
+       are extensions of older routines which assume that color pairs are OR'd
+       into the attribute parameter.  These newer routines use similar  names,
+       because X/Open simply added an underscore (<STRONG>_</STRONG>) for the newer names.
+
+       The <STRONG>int</STRONG> datatype used in the legacy routines is treated as if it is the
+       same size as <STRONG>chtype</STRONG> (used by <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>).  It holds the common video at-
+       tributes  (such  as  bold,  reverse),  as well as a few bits for color.
+       Those bits correspond to the <STRONG>A_COLOR</STRONG> symbol.  The <STRONG>COLOR_PAIR</STRONG> macro pro-
+       vides  a value which can be OR'd into the attribute parameter.  For ex-
+       ample, as long as that value fits into the  <STRONG>A_COLOR</STRONG>  mask,  then  these
+       calls produce similar results:
+
+           attrset(A_BOLD | COLOR_PAIR(<EM>pair</EM>));
+           attr_set(A_BOLD, <EM>pair</EM>, NULL);
+
+       However, if the value does not fit, then the <STRONG>COLOR_PAIR</STRONG> macro uses only
+       the bits that fit.  For example, because in ncurses <STRONG>A_COLOR</STRONG>  has  eight
+       (8) bits, then <STRONG>COLOR_PAIR(</STRONG><EM>259</EM><STRONG>)</STRONG> is 4 (i.e., 259 is 4 more than the limit
+       255).
+
+       The <STRONG>PAIR_NUMBER</STRONG> macro extracts a pair number from an <STRONG>int</STRONG>  (or  <STRONG>chtype</STRONG>).
+       For  example,  the <EM>input</EM> and <EM>output</EM> values in these statements would be
+       the same:
+
+           int value = A_BOLD | COLOR_PAIR(<EM>input</EM>);
+           int <EM>output</EM> = PAIR_NUMBER(value);
 
        The <STRONG>attrset</STRONG> routine is a legacy feature predating SVr4 curses but  kept
        in X/Open Curses for the same reason that SVr4 curses kept it: compati-
        the routines <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, and <STRONG>attrset</STRONG>, or OR'd with the  characters
        passed to <STRONG>addch</STRONG> (see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>).
 
-              <EM>Name</EM>           <EM>Description</EM>
-              -----------------------------------------------------------
+              <STRONG>Name</STRONG>           <STRONG>Description</STRONG>
+              -----------------------------------------------------------------
               <STRONG>A_NORMAL</STRONG>       Normal display (no highlight)
               <STRONG>A_STANDOUT</STRONG>     Best highlighting mode of the terminal.
               <STRONG>A_UNDERLINE</STRONG>    Underlining
               <STRONG>A_ALTCHARSET</STRONG>   Alternate character set
               <STRONG>A_ITALIC</STRONG>       Italics (non-X/Open extension)
               <STRONG>A_CHARTEXT</STRONG>     Bit-mask to extract a character
+              <STRONG>A_COLOR</STRONG>        Bit-mask to extract a color (legacy routines)
 
        These  video  attributes are supported by <STRONG>attr_on</STRONG> and related functions
        (which also support the attributes recognized by <STRONG>attron</STRONG>, etc.):
 
-              <EM>Name</EM>            <EM>Description</EM>
+              <STRONG>Name</STRONG>            <STRONG>Description</STRONG>
               -----------------------------------------
               <STRONG>WA_HORIZONTAL</STRONG>   Horizontal highlight
               <STRONG>WA_LEFT</STRONG>         Left highlight
        nate  character  set implementation.  A 32-bit library can be used on a
        64-bit system, but not necessarily the reverse.
 
-              <EM>Year</EM>   <EM>System</EM>        <EM>Arch</EM>    <EM>Color</EM>   <EM>Char</EM>   <EM>Notes</EM>
+              <STRONG>Year</STRONG>   <STRONG>System</STRONG>        <STRONG>Arch</STRONG>    <STRONG>Color</STRONG>   <STRONG>Char</STRONG>   <STRONG>Notes</STRONG>
               ----------------------------------------------------------------
               1992   Solaris 5.2   32      6       17     SVr4 curses
               1992   HPUX 9        32      no      8      SVr2 curses
               1995   Solaris 5.4   32/64   7       16     X/Open curses
               1996   AIX 4.2       32      7       16     X/Open curses
               1996   OSF/1 r4      32      6       16     X/Open curses
+
               1997   HP-UX 11.00   32      6       8      X/Open curses
               2000   U/Win         32/64   7/31    16     uses <STRONG>chtype</STRONG>
 
        Other interfaces are rarely used now:
 
        <STRONG>o</STRONG>   BSD  curses was improved slightly in 1993/1994 using Keith Bostic's
-           modification to make the library 8-bit clean  for  <STRONG>nvi</STRONG>.   He  moved
+           modification to make the library 8-bit clean for <STRONG>nvi(1)</STRONG>.  He  moved
            <EM>standout</EM> attribute to a structure member.
 
            The  resulting  4.4BSD curses was replaced by ncurses over the next
        have  the  <STRONG>enter_italics_mode</STRONG> (<STRONG>sitm</STRONG>) and <STRONG>exit_italics_mode</STRONG> (<STRONG>ritm</STRONG>) capa-
        bilities.  Italics are not mentioned in X/Open Curses.  Unlike the oth-
        er  video attributes, <STRONG>A_ITALIC</STRONG> is unrelated to the <STRONG>set_attributes</STRONG> capa-
-       bilities.  This  implementation  makes  the  assumption  that  <STRONG>exit_at-</STRONG>
-       <STRONG>tribute_mode</STRONG> may also reset italics.
+       bilities.  This implementation makes the  assumption  that  <STRONG>exit_attri-</STRONG>
+       <STRONG>bute_mode</STRONG> may also reset italics.
 
        Each  of  the functions added by XSI Curses has a parameter <EM>opts</EM>, which
        X/Open Curses still (after more than twenty  years)  documents  as  re-
        tion uses that parameter in ABI 6 for the functions which have a color-
        pair parameter to support <EM>extended</EM> <EM>color</EM> <EM>pairs</EM>:
 
-       <STRONG>o</STRONG>   For  functions  which modify the color, e.g., <STRONG>wattr_set</STRONG>, if <EM>opts</EM> is
-           set it is treated as a pointer to <STRONG>int</STRONG>, and used to  set  the  color
-           pair instead of the <STRONG>short</STRONG> <EM>pair</EM> parameter.
+       <STRONG>o</STRONG>   For functions which modify the color, e.g., <STRONG>wattr_set</STRONG> and <STRONG>wattr_on</STRONG>,
+           if <EM>opts</EM> is set it is treated as a pointer to <STRONG>int</STRONG>, and used  to  set
+           the color pair instead of the <STRONG>short</STRONG> <EM>pair</EM> parameter.
 
        <STRONG>o</STRONG>   For functions which retrieve the color, e.g., <STRONG>wattr_get</STRONG>, if <EM>opts</EM> is
            set it is treated as a pointer to <STRONG>int</STRONG>, and  used  to  retrieve  the
-           color pair as an <STRONG>int</STRONG> value, in addition retrieving it via the stan-
-           dard pointer to <STRONG>short</STRONG> parameter.
+           color  pair  as  an <STRONG>int</STRONG> value, in addition to retrieving it via the
+           standard pointer to <STRONG>short</STRONG> parameter.
 
-       The remaining functions which have <EM>opts</EM>, but do not  manipulate  color,
-       e.g., <STRONG>wattr_on</STRONG> and <STRONG>wattr_off</STRONG> are not used by this implementation except
-       to check that they are <STRONG>NULL</STRONG>.
+       <STRONG>o</STRONG>   For functions which turn attributes off, e.g., <STRONG>wattr_off</STRONG>, the  <EM>opts</EM>
+           parameter is ignored except except to check that it is <STRONG>NULL</STRONG>.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These functions are supported in the XSI Curses standard, Issue 4.  The
-       standard  defined  the dedicated type for highlights, <STRONG>attr_t</STRONG>, which was
+       standard defined the dedicated type for highlights, <STRONG>attr_t</STRONG>,  which  was
        not defined in SVr4 curses.  The functions taking <STRONG>attr_t</STRONG> arguments were
        not supported under SVr4.
 
        Very old versions of this library did not force an update of the screen
-       when changing the attributes.  Use <STRONG>touchwin</STRONG>  to  force  the  screen  to
+       when  changing  the  attributes.   Use  <STRONG>touchwin</STRONG> to force the screen to
        match the updated attributes.
 
-       The  XSI  Curses standard states that whether the traditional functions
-       <STRONG>attron</STRONG>/<STRONG>attroff</STRONG>/<STRONG>attrset</STRONG> can manipulate attributes  other  than  <STRONG>A_BLINK</STRONG>,
-       <STRONG>A_BOLD</STRONG>,  <STRONG>A_DIM</STRONG>, <STRONG>A_REVERSE</STRONG>, <STRONG>A_STANDOUT</STRONG>, or <STRONG>A_UNDERLINE</STRONG> is "unspecified".
-       Under this implementation as well as SVr4 curses, these functions  cor-
-       rectly  manipulate  all  other  highlights (specifically, <STRONG>A_ALTCHARSET</STRONG>,
+       The XSI Curses standard states that whether the  traditional  functions
+       <STRONG>attron</STRONG>/<STRONG>attroff</STRONG>/<STRONG>attrset</STRONG>  can  manipulate  attributes other than <STRONG>A_BLINK</STRONG>,
+       <STRONG>A_BOLD</STRONG>, <STRONG>A_DIM</STRONG>, <STRONG>A_REVERSE</STRONG>, <STRONG>A_STANDOUT</STRONG>, or <STRONG>A_UNDERLINE</STRONG> is  "unspecified".
+       Under  this implementation as well as SVr4 curses, these functions cor-
+       rectly manipulate all  other  highlights  (specifically,  <STRONG>A_ALTCHARSET</STRONG>,
        <STRONG>A_PROTECT</STRONG>, and <STRONG>A_INVIS</STRONG>).
 
        XSI Curses added these entry points:
               <STRONG>attr_get</STRONG>, <STRONG>attr_on</STRONG>, <STRONG>attr_off</STRONG>, <STRONG>attr_set</STRONG>, <STRONG>wattr_on</STRONG>, <STRONG>wattr_off</STRONG>, <STRONG>wat-</STRONG>
               <STRONG>tr_get</STRONG>, <STRONG>wattr_set</STRONG>
 
-       The  new  functions are intended to work with a new series of highlight
+       The new functions are intended to work with a new series  of  highlight
        macros prefixed with <STRONG>WA_</STRONG>.  The older macros have direct counterparts in
        the newer set of names:
 
-              <EM>Name</EM>            <EM>Description</EM>
+              <STRONG>Name</STRONG>            <STRONG>Description</STRONG>
               ------------------------------------------------------------
               <STRONG>WA_NORMAL</STRONG>       Normal display (no highlight)
               <STRONG>WA_STANDOUT</STRONG>     Best highlighting mode of the terminal.
               <STRONG>WA_BOLD</STRONG>         Extra bright or bold
               <STRONG>WA_ALTCHARSET</STRONG>   Alternate character set
 
-       XSI  curses  does not assign values to these symbols, nor does it state
+       XSI curses does not assign values to these symbols, nor does  it  state
        whether or not they are related to the similarly-named A_NORMAL, etc.:
 
-       <STRONG>o</STRONG>   The XSI curses standard specifies that each pair  of  corresponding
-           <STRONG>A_</STRONG>  and  <STRONG>WA_</STRONG>-using functions operates on the same current-highlight
+       <STRONG>o</STRONG>   The  XSI  curses standard specifies that each pair of corresponding
+           <STRONG>A_</STRONG> and <STRONG>WA_</STRONG>-using functions operates on the  same  current-highlight
            information.
 
        <STRONG>o</STRONG>   However, in some implementations, those symbols have unrelated val-
 
            For example, the Solaris <EM>xpg4</EM> (X/Open) curses declares <STRONG>attr_t</STRONG> to be
            an unsigned short integer (16-bits), while <STRONG>chtype</STRONG> is a unsigned in-
-           teger  (32-bits).   The <STRONG>WA_</STRONG> symbols in this case are different from
-           the <STRONG>A_</STRONG> symbols because they are used for a smaller  datatype  which
+           teger (32-bits).  The <STRONG>WA_</STRONG> symbols in this case are  different  from
+           the  <STRONG>A_</STRONG>  symbols because they are used for a smaller datatype which
            does not represent <STRONG>A_CHARTEXT</STRONG> or <STRONG>A_COLOR</STRONG>.
 
            In this implementation (as in many others), the values happen to be
-           the same because it simplifies copying information  between  <STRONG>chtype</STRONG>
+           the  same  because it simplifies copying information between <STRONG>chtype</STRONG>
            and <STRONG>cchar_t</STRONG> variables.
 
+       <STRONG>o</STRONG>   Because ncurses's <STRONG>attr_t</STRONG> can hold a  color  pair  (in  the  <STRONG>A_COLOR</STRONG>
+           field),  a  call to <STRONG>wattr_on</STRONG>, <STRONG>wattr_off</STRONG>, or <STRONG>wattr_set</STRONG> may alter the
+           window's color.  If the color pair information in the attribute pa-
+           rameter is zero, no change is made to the window's color.
+
+           This is consistent with SVr4 curses; X/Open Curses does not specify
+           this.
+
        The XSI standard extended conformance level adds new highlights <STRONG>A_HORI-</STRONG>
-       <STRONG>ZONTAL</STRONG>, <STRONG>A_LEFT</STRONG>, <STRONG>A_LOW</STRONG>, <STRONG>A_RIGHT</STRONG>, <STRONG>A_TOP</STRONG>,  <STRONG>A_VERTICAL</STRONG>  (and  corresponding
-       <STRONG>WA_</STRONG>  macros  for  each).  As of August 2013, no known terminal provides
+       <STRONG>ZONTAL</STRONG>,  <STRONG>A_LEFT</STRONG>,  <STRONG>A_LOW</STRONG>,  <STRONG>A_RIGHT</STRONG>, <STRONG>A_TOP</STRONG>, <STRONG>A_VERTICAL</STRONG> (and corresponding
+       <STRONG>WA_</STRONG> macros for each).  As of August 2013, no  known  terminal  provides
        these highlights (i.e., via the <STRONG>sgr1</STRONG> capability).
 
 
        <STRONG>o</STRONG>   returns an error if the color pair parameter for <STRONG>wcolor_set</STRONG> is out-
            side the range 0..COLOR_PAIRS-1.
 
-       <STRONG>o</STRONG>   does  not  return an error if either of the parameters of <STRONG>wattr_get</STRONG>
+       <STRONG>o</STRONG>   does not return an error if either of the parameters  of  <STRONG>wattr_get</STRONG>
            used for retrieving attribute or color-pair values is <STRONG>NULL</STRONG>.
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
+       Functions  with  a  "mv"  prefix  first perform a cursor movement using
        <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
        the window pointer is null.