-<!--
+<!--
* 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 *
* 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.