<!--
* t
****************************************************************************
- * 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_attr.3x,v 1.86 2023/09/30 21:38:11 tom Exp @
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
- * ---------------------------------------------------------------------------
+ * @Id: curs_attr.3x,v 1.106 2024/05/11 20:39:53 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_attr 3x 2023-09-30 ncurses 6.4 Library calls</TITLE>
+<TITLE>curs_attr 3x 2024-05-11 ncurses 6.5 Library calls</TITLE>
<link rel="author" href="mailto:bug-ncurses@gnu.org">
</HEAD>
<BODY>
-<H1 class="no-header">curs_attr 3x 2023-09-30 ncurses 6.4 Library calls</H1>
+<H1 class="no-header">curs_attr 3x 2024-05-11 ncurses 6.5 Library calls</H1>
<PRE>
<STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> Library calls <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
<STRONG>int</STRONG> <STRONG>attr_on(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>wattr_on(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <EM>attrs);</EM>
+ <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>wattroff(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>attron(int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>wattron(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>mvchgat(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG>
<STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>int</EM> <EM>y,</EM> <EM>int</EM> <EM>x</EM><STRONG>,</STRONG>
- <STRONG>int</STRONG> <EM>n,</EM> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>color_set(short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts);</EM>
+ <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>standend(void);</STRONG>
<STRONG>int</STRONG> <STRONG>wstandend(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
of the window. See <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> for functions which modify the
attributes used for erasing and clearing.
- Routines which do not have a <STRONG>WINDOW*</STRONG> parameter apply to <STRONG>stdscr</STRONG>. For
- example, <STRONG>attr_set</STRONG> is the <STRONG>stdscr</STRONG> variant of <STRONG>wattr_set</STRONG>.
-
-</PRE><H3><a name="h3-Window-attributes">Window attributes</a></H3><PRE>
+</PRE><H3><a name="h3-Window-Attributes">Window Attributes</a></H3><PRE>
There are two sets of functions:
- <STRONG>o</STRONG> functions for manipulating the window attributes and color:
+ <STRONG>o</STRONG> functions for manipulating the window attributes and color:
<STRONG>wattr_set</STRONG> and <STRONG>wattr_get</STRONG>.
- <STRONG>o</STRONG> functions for manipulating only the window attributes (not color):
+ <STRONG>o</STRONG> functions for manipulating only the window attributes (not color):
<STRONG>wattr_on</STRONG> and <STRONG>wattr_off</STRONG>.
- The <STRONG>wattr_set</STRONG> function sets the current attributes of the given window
+ The <STRONG>wattr_set</STRONG> function sets the current attributes of the given window
to <EM>attrs</EM>, with color specified by <EM>pair</EM>.
Use <STRONG>wattr_get</STRONG> to retrieve attributes for the given window.
- Use <STRONG>attr_on</STRONG> and <STRONG>wattr_on</STRONG> to turn on window attributes, i.e., values
+ Use <STRONG>attr_on</STRONG> and <STRONG>wattr_on</STRONG> to turn on window attributes, i.e., values
OR'd together in <EM>attr</EM>, without affecting other attributes. Use
<STRONG>attr_off</STRONG> and <STRONG>wattr_off</STRONG> to turn off window attributes, again values OR'd
together in <EM>attr</EM>, without affecting other attributes.
-</PRE><H3><a name="h3-Legacy-window-attributes">Legacy window attributes</a></H3><PRE>
- The X/Open window attribute routines which <EM>set</EM> or <EM>get</EM>, turn <EM>on</EM> or <EM>off</EM>
+</PRE><H3><a name="h3-Legacy-Window-Attributes">Legacy Window Attributes</a></H3><PRE>
+ 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,
+ 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
- attributes (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
- provides a value which can be OR'd into the attribute parameter. For
- example, as long as that value fits into the <STRONG>A_COLOR</STRONG> mask, then these
+ same size as <STRONG>chtype</STRONG> (used by <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>). It holds the common video
+ attributes (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
+ provides a value which can be OR'd into the attribute parameter. For
+ example, 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
+ the bits that fit. For example, because in <EM>ncurses</EM> <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 <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:
+ 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:
compatibility.
- The remaining <STRONG>attr</STRONG>* functions operate exactly like the corresponding
- <STRONG>attr_</STRONG>* functions, except that they take arguments of type <STRONG>int</STRONG> rather
+ The remaining <STRONG>attr</STRONG>* functions operate exactly like the corresponding
+ <STRONG>attr_</STRONG>* functions, except that they take arguments of type <STRONG>int</STRONG> rather
than <STRONG>attr_t</STRONG>.
- There is no corresponding <STRONG>attrget</STRONG> function as such in X/Open Curses,
- although ncurses provides <STRONG>getattrs</STRONG> (see <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>).
+ There is no corresponding <STRONG>attrget</STRONG> function as such in X/Open Curses,
+ although <EM>ncurses</EM> provides <STRONG>getattrs</STRONG> (see <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>).
-</PRE><H3><a name="h3-Change-character-rendition">Change character rendition</a></H3><PRE>
+</PRE><H3><a name="h3-Change-Character-Rendition">Change Character Rendition</a></H3><PRE>
The routine <STRONG>chgat</STRONG> changes the attributes of a given number of
- characters starting at the current cursor location of <STRONG>stdscr</STRONG>. It does
+ characters starting at the current cursor location of <STRONG>stdscr</STRONG>. It does
not update the cursor and does not perform wrapping. A character count
- of -1 or greater than the remaining window width means to change
- attributes all the way to the end of the current line. The <STRONG>wchgat</STRONG>
- function generalizes this to any window; the <STRONG>mvwchgat</STRONG> function does a
+ of -1 or greater than the remaining window width means to change
+ attributes all the way to the end of the current line. The <STRONG>wchgat</STRONG>
+ function generalizes this to any window; the <STRONG>mvwchgat</STRONG> function does a
cursor move before acting.
- In these functions, the color <EM>pair</EM> argument is a color-pair index (as
+ In these functions, the color <EM>pair</EM> argument is a color pair index (as
in the first argument of <STRONG>init_pair</STRONG>, see <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>).
-</PRE><H3><a name="h3-Change-window-color">Change window color</a></H3><PRE>
+</PRE><H3><a name="h3-Change-Window-Color">Change Window Color</a></H3><PRE>
The routine <STRONG>color_set</STRONG> sets the current color of the given window to the
- foreground/background combination described by the color <EM>pair</EM>
+ foreground/background combination described by the color <EM>pair</EM>
parameter.
</PRE><H3><a name="h3-Standout">Standout</a></H3><PRE>
- The routine <STRONG>standout</STRONG> is the same as <STRONG>attron(A_STANDOUT)</STRONG>. The routine
- <STRONG>standend</STRONG> is the same as <STRONG>attrset(A_NORMAL)</STRONG> or <STRONG>attrset(0)</STRONG>, that is, it
+ The routine <STRONG>standout</STRONG> is the same as <STRONG>attron(A_STANDOUT)</STRONG>. The routine
+ <STRONG>standend</STRONG> is the same as <STRONG>attrset(A_NORMAL)</STRONG> or <STRONG>attrset(0)</STRONG>, that is, it
turns off all attributes.
- X/Open does not mark these "restricted", because
+ X/Open Curses does not mark these "restricted", because
<STRONG>o</STRONG> they have well established legacy use, and
- <STRONG>o</STRONG> there is no ambiguity about the way the attributes might be
+ <STRONG>o</STRONG> there is no ambiguity about the way the attributes might be
combined with a color pair.
-</PRE><H2><a name="h2-VIDEO-ATTRIBUTES">VIDEO ATTRIBUTES</a></H2><PRE>
+</PRE><H3><a name="h3-Video-Attributes">Video Attributes</a></H3><PRE>
The following video attributes, defined in <STRONG><curses.h></STRONG>, can be passed to
- the routines <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, and <STRONG>attrset</STRONG>, or OR'd with the characters
+ 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>).
<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_STANDOUT</STRONG> Best highlighting mode of the terminal
<STRONG>A_UNDERLINE</STRONG> Underlining
<STRONG>A_REVERSE</STRONG> Reverse video
<STRONG>A_BLINK</STRONG> Blinking
<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
+ You can thus use <STRONG>A_CHARTEXT</STRONG> to extract the character from a <EM>chtype</EM>,
+ <STRONG>A_ATTRIBUTES</STRONG> to obtain its rendering attributes, and <STRONG>A_COLOR</STRONG> to find
+ the color pair it uses.
+
+ These video attributes are supported by <STRONG>attr_on</STRONG> and related functions
(which also support the attributes recognized by <STRONG>attron</STRONG>, etc.):
<STRONG>Name</STRONG> <STRONG>Description</STRONG>
- -----------------------------------------
+ -----------------------------------------------------------------
<STRONG>WA_HORIZONTAL</STRONG> Horizontal highlight
<STRONG>WA_LEFT</STRONG> Left highlight
<STRONG>WA_LOW</STRONG> Low highlight
<STRONG>WA_TOP</STRONG> Top highlight
<STRONG>WA_VERTICAL</STRONG> Vertical highlight
- The return values of many of these routines are not meaningful (they
- are implemented as macro-expanded assignments and simply return their
- argument). The SVr4 manual page claims (falsely) that these routines
+ The return values of many of these routines are not meaningful (they
+ are implemented as macro-expanded assignments and simply return their
+ argument). The SVr4 manual page claims (falsely) that these routines
always return <STRONG>1</STRONG>.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return the integer <STRONG>OK</STRONG> on success, or <STRONG>ERR</STRONG> on failure.
+
+ X/Open Curses does not specify any error conditions.
+
+ This implementation
+
+ <STRONG>o</STRONG> returns an error if the window pointer is null.
+
+ <STRONG>o</STRONG> returns an error if the color pair parameter for <STRONG>wcolor_set</STRONG> is
+ outside the range 0..COLOR_PAIRS-1.
+
+ <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 prefixed with "mv" first perform cursor movement and fail if
+ the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+
</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
These functions may be macros:
Color pair values can only be OR'd with attributes if the pair number
is less than 256. The alternate functions such as <STRONG>color_set</STRONG> can pass a
- color pair value directly. However, ncurses ABI 4 and 5 simply OR this
- value within the alternate functions. You must use ncurses ABI 6 to
+ color pair value directly. However, <EM>ncurses</EM> ABI 4 and 5 simply OR this
+ value within the alternate functions. You must use <EM>ncurses</EM> ABI 6 to
support more than 256 color pairs.
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+ This implementation provides the <STRONG>A_ITALIC</STRONG> attribute for terminals which
+ have the <STRONG>enter_italics_mode</STRONG> (<STRONG>sitm</STRONG>) and <STRONG>exit_italics_mode</STRONG> (<STRONG>ritm</STRONG>)
+ capabilities. Italics are not mentioned in X/Open Curses. Unlike the
+ other video attributes, <STRONG>A_ITALIC</STRONG> is unrelated to the <STRONG>set_attributes</STRONG>
+ capabilities. This implementation makes the assumption that
+ <STRONG>exit_attribute_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
+ reserved for future use, saying that it should be <STRONG>NULL</STRONG>. This
+ implementation 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> 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 to retrieving it via the
+ standard pointer to <STRONG>short</STRONG> parameter.
+
+ <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 described in X/Open Curses, Issue 4. The 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
+ match the updated attributes.
+
+ X/Open Curses 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
+ correctly manipulate all other highlights (specifically, <STRONG>A_ALTCHARSET</STRONG>,
+ <STRONG>A_PROTECT</STRONG>, and <STRONG>A_INVIS</STRONG>).
+
+ X/Open 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>wattr_get</STRONG>, <STRONG>wattr_set</STRONG>
+
+ 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:
+
+ <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_UNDERLINE</STRONG> Underlining
+ <STRONG>WA_REVERSE</STRONG> Reverse video
+ <STRONG>WA_BLINK</STRONG> Blinking
+ <STRONG>WA_DIM</STRONG> Half bright
+ <STRONG>WA_BOLD</STRONG> Extra bright or bold
+ <STRONG>WA_ALTCHARSET</STRONG> Alternate character set
+
+ X/Open 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> X/Open Curses 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
+ values.
+
+ 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
+ integer (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>
+ and <STRONG>cchar_t</STRONG> variables.
+
+ <STRONG>o</STRONG> Because <EM>ncurses</EM>'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
+ parameter 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 X/Open Curses extended conformance level adds new highlights
+ <STRONG>A_HORIZONTAL</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).
+
+
</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
X/Open Curses is largely based on SVr4 curses, adding support for
"wide-characters" (not specific to Unicode). Some of the X/Open
alternate character set implementation. A 32-bit library can be used
on a 64-bit system, but not necessarily the reverse.
- <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
- 1992 AIX 3.2 32 no 23 SVr2 curses
- 1994 OSF/1 r3 32 no 23 SVr2 curses
- 1995 HP-UX 10.00 32 6 16 SVr3 "curses_colr"
- 1995 HP-UX 10.00 32 6 8 SVr4, X/Open 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>
+ <STRONG>Bits</STRONG>
+ <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 <EM>curses</EM>
+ 1992 HP-UX 9 32 no 8 SVr2 <EM>curses</EM>
+ 1992 AIX 3.2 32 no 23 SVr2 <EM>curses</EM>
+ 1994 OSF/1 r3 32 no 23 SVr2 <EM>curses</EM>
+ 1995 HP-UX 10.00 32 6 16 SVr3 <EM>curses</EM><STRONG>_</STRONG><EM>colr</EM>
+ 1995 HP-UX 10.00 32 6 8 SVr4, X/Open <EM>curses</EM>
+ 1995 Solaris 5.4 32/64 7 16 X/Open <EM>curses</EM>
+ 1996 AIX 4.2 32 7 16 X/Open <EM>curses</EM>
+ 1996 OSF/1 r4 32 6 16 X/Open <EM>curses</EM>
+ 1997 HP-UX 11.00 32 6 8 X/Open <EM>curses</EM>
+ 2000 U/Win 32/64 7/31 16 uses <EM>chtype</EM>
Notes:
Regarding OSF/1 (and Tru64),
- <STRONG>o</STRONG> These used 64-bit hardware. Like ncurses, the OSF/1 curses
+ <STRONG>o</STRONG> These used 64-bit hardware. Like <EM>ncurses</EM>, the OSF/1 curses
interface is not customized for 32-bit and 64-bit versions.
<STRONG>o</STRONG> Unlike other systems which evolved from AT&T code, OSF/1
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
+ The resulting 4.4BSD curses was replaced by <EM>ncurses</EM> over the next
ten years.
<STRONG>o</STRONG> U/Win is rarely used now.
-</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
- This implementation provides the <STRONG>A_ITALIC</STRONG> attribute for terminals which
- have the <STRONG>enter_italics_mode</STRONG> (<STRONG>sitm</STRONG>) and <STRONG>exit_italics_mode</STRONG> (<STRONG>ritm</STRONG>)
- capabilities. Italics are not mentioned in X/Open Curses. Unlike the
- other video attributes, <STRONG>A_ITALIC</STRONG> is unrelated to the <STRONG>set_attributes</STRONG>
- capabilities. This implementation makes the assumption that
- <STRONG>exit_attribute_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
- reserved for future use, saying that it should be <STRONG>NULL</STRONG>. This
- implementation 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> 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 to retrieving it via the
- standard pointer to <STRONG>short</STRONG> parameter.
-
- <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
- 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
- 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
- correctly 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>wattr_get</STRONG>, <STRONG>wattr_set</STRONG>
-
- 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:
-
- <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_UNDERLINE</STRONG> Underlining
- <STRONG>WA_REVERSE</STRONG> Reverse video
- <STRONG>WA_BLINK</STRONG> Blinking
- <STRONG>WA_DIM</STRONG> Half bright
- <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
- 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
- information.
-
- <STRONG>o</STRONG> However, in some implementations, those symbols have unrelated
- values.
-
- 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
- integer (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>
- 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
- parameter 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_HORIZONTAL</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).
-
-
-</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
- All routines return the integer <STRONG>OK</STRONG> on success, or <STRONG>ERR</STRONG> on failure.
-
- X/Open does not define any error conditions.
-
- This implementation
-
- <STRONG>o</STRONG> returns an error if the window pointer is null.
-
- <STRONG>o</STRONG> returns an error if the color pair parameter for <STRONG>wcolor_set</STRONG> is
- outside the range 0..COLOR_PAIRS-1.
-
- <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
- <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
- the window pointer is null.
-
-
</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_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>, <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>,
<STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
-ncurses 6.4 2023-09-30 <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+ncurses 6.5 2024-05-11 <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
</PRE>
<div class="nav">
<ul>
<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
<ul>
-<li><a href="#h3-Window-attributes">Window attributes</a></li>
-<li><a href="#h3-Legacy-window-attributes">Legacy window attributes</a></li>
-<li><a href="#h3-Change-character-rendition">Change character rendition</a></li>
-<li><a href="#h3-Change-window-color">Change window color</a></li>
+<li><a href="#h3-Window-Attributes">Window Attributes</a></li>
+<li><a href="#h3-Legacy-Window-Attributes">Legacy Window Attributes</a></li>
+<li><a href="#h3-Change-Character-Rendition">Change Character Rendition</a></li>
+<li><a href="#h3-Change-Window-Color">Change Window Color</a></li>
<li><a href="#h3-Standout">Standout</a></li>
+<li><a href="#h3-Video-Attributes">Video Attributes</a></li>
</ul>
</li>
-<li><a href="#h2-VIDEO-ATTRIBUTES">VIDEO ATTRIBUTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
<li><a href="#h2-NOTES">NOTES</a></li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
-<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
</ul>
</div>