-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<!--
+<!--
* t
****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright 2018-2019,2020 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.36 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_attr.3x,v 1.66 2020/02/02 23:34:34 tom Exp @
+ * ---------------------------------------------------------------------------
+ * attr_get
+ * .br
+ * .br
+ * .br
+ * .br
+ * .br
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
-<TITLE>curs_attr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<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</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_attr 3x</H1>
-<HR>
+<H1 class="no-header">curs_attr 3X</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+<B><A HREF="curs_attr.3X.html">curs_attr(3X)</A></B> <B><A HREF="curs_attr.3X.html">curs_attr(3X)</A></B>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>attroff</STRONG>, <STRONG>wattroff</STRONG>, <STRONG>attron</STRONG>, <STRONG>wattron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>wattrset</STRONG>,
- <STRONG>color_set</STRONG>, <STRONG>wcolor_set</STRONG>, <STRONG>standend</STRONG>, <STRONG>wstandend</STRONG>, <STRONG>standout</STRONG>,
- <STRONG>wstandout</STRONG>, <STRONG>attr_get</STRONG>, <STRONG>wattr_get</STRONG>, <STRONG>attr_off</STRONG>, <STRONG>wattr_off</STRONG>,
- <STRONG>attr_on</STRONG>, <STRONG>wattr_on</STRONG>, <STRONG>attr_set</STRONG>, <STRONG>wattr_set</STRONG>, <STRONG>chgat</STRONG>, <STRONG>wchgat</STRONG>,
- <STRONG>mvchgat</STRONG>, <STRONG>mvwchgat</STRONG>, <STRONG>PAIR_NUMBER</STRONG> - <STRONG>curses</STRONG> character and
- window attribute control routines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <B>attr_get</B>, <B>wattr_get</B>, <B>attr_set</B>, <B>wattr_set</B>, <B>attr_off</B>, <B>wattr_off</B>, <B>attr_on</B>,
+ <B>wattr_on</B>, <B>attroff</B>, <B>wattroff</B>, <B>attron</B>, <B>wattron</B>, <B>attrset</B>, <B>wattrset</B>, <B>chgat</B>,
+ <B>wchgat</B>, <B>mvchgat</B>, <B>mvwchgat</B>, <B>color_set</B>, <B>wcolor_set</B>, <B>standend</B>, <B>wstandend</B>,
+ <B>standout</B>, <B>wstandout</B> - <B>curses</B> character and window attribute control
+ routines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
- <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattroff(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>attron(int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattron(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>attrset(int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattrset(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>color_set(short</STRONG> <STRONG>color_pair_number,</STRONG> <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>short</STRONG> <STRONG>color_pair_number,</STRONG>
- <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>standend(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wstandend(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>standout(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wstandout(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>attr_get(attr_t</STRONG> <STRONG>*attrs,</STRONG> <STRONG>short</STRONG> <STRONG>*pair,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattr_get(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>*attrs,</STRONG> <STRONG>short</STRONG> <STRONG>*pair,</STRONG>
- <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>attr_off(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattr_off(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>attr_on(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattr_on(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>attr_set(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>short</STRONG> <STRONG>pair,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattr_set(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>short</STRONG> <STRONG>pair,</STRONG> <STRONG>void</STRONG>
- <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>chgat(int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG> <STRONG>short</STRONG> <STRONG>color,</STRONG>
- <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
- <STRONG>int</STRONG> <STRONG>wchgat(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG>
- <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
- <STRONG>int</STRONG> <STRONG>mvchgat(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG>
- <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG>
- <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG> <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+ <B>int</B> <B>attr_get(attr_t</B> <B>*</B><I>attrs</I><B>,</B> <B>short</B> <B>*</B><I>pair</I><B>,</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+ <B>int</B> <B>wattr_get(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>attr_t</B> <B>*</B><I>attrs</I><B>,</B> <B>short</B> <B>*</B><I>pair</I><B>,</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+ <B>int</B> <B>attr_set(attr_t</B> <I>attrs</I><B>,</B> <B>short</B> <I>pair</I><B>,</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+ <B>int</B> <B>wattr_set(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>attr_t</B> <I>attrs</I><B>,</B> <B>short</B> <I>pair</I><B>,</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These routines manipulate the current attributes of the
- named window. The current attributes of a window apply to
- all characters that are written into the window with <STRONG>wadd-</STRONG>
- <STRONG>ch</STRONG>, <STRONG>waddstr</STRONG> and <STRONG>wprintw</STRONG>. Attributes are a property of the
- character, and move with the character through any
- scrolling and insert/delete line/character operations. To
- the extent possible, they are displayed as appropriate
- modifications to the graphic rendition of characters put
- on the screen.
-
- The routine <STRONG>attrset</STRONG> sets the current attributes of the
- given window to <EM>attrs</EM>. The routine <STRONG>attroff</STRONG> turns off the
- named attributes without turning any other attributes on
- or off. The routine <STRONG>attron</STRONG> turns on the named attributes
- without affecting any others. 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.
-
- The <STRONG>attrset</STRONG> and related routines do not affect the at-
- tributes used when erasing portions 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.
-
- The routine <STRONG>color_set</STRONG> sets the current color of the given
- window to the foreground/background combination described
- by the color_pair_number. The parameter opts is reserved
- for future use, applications must supply a null pointer.
-
- The routine <STRONG>wattr_get</STRONG> returns the current attribute and
- color pair for the given window; <STRONG>attr_get</STRONG> returns the cur-
- rent attribute and color pair for <STRONG>stdscr</STRONG>. The remaining
- <STRONG>attr_</STRONG>* functions operate exactly like the corresponding
- <STRONG>attr</STRONG>* functions, except that they take arguments of type
- <STRONG>attr_t</STRONG> rather than <STRONG>int</STRONG>.
-
- 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 not update the cursor and does not per-
- form 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> func-
- tion generalizes this to any window; the <STRONG>mvwchgat</STRONG> function
- does a cursor move before acting. In these functions, the
- color argument is a color-pair index (as in the first ar-
- gument of <EM>init</EM><STRONG>_</STRONG><EM>pair</EM>, see <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>). The <STRONG>opts</STRONG> argu-
- ment is not presently used, but is reserved for the future
- (leave it <STRONG>NULL</STRONG>).
-
- <STRONG>Attributes</STRONG>
- 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 passed to <STRONG>addch</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_REVERSE</STRONG> Reverse video
- <STRONG>A_BLINK</STRONG> Blinking
- <STRONG>A_DIM</STRONG> Half bright
- <STRONG>A_BOLD</STRONG> Extra bright or bold
- <STRONG>A_PROTECT</STRONG> Protected mode
- <STRONG>A_INVIS</STRONG> Invisible or blank mode
- <STRONG>A_ALTCHARSET</STRONG> Alternate character set
- <STRONG>A_CHARTEXT</STRONG> Bit-mask to extract a character
- <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG> Color-pair number <EM>n</EM>
-
- The following macro is the reverse of <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG>:
-
- <STRONG>PAIR_NUMBER(</STRONG><EM>attrs</EM>) Returns the pair number associated
- with the <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG> attribute.
-
- The return values of many of these routines are not mean-
- ingful (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>.
+ <B>int</B> <B>attr_off(attr_t</B> <I>attrs</I><B>,</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+ <B>int</B> <B>wattr_off(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>attr_t</B> <I>attrs</I><B>,</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+ <B>int</B> <B>attr_on(attr_t</B> <I>attrs</I><B>,</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+ <B>int</B> <B>wattr_on(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>attr_t</B> <I>attrs</I><B>,</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+ <B>int</B> <B>attroff(int</B> <I>attrs);</I>
+ <B>int</B> <B>wattroff(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>int</B> <I>attrs</I><B>);</B>
+ <B>int</B> <B>attron(int</B> <I>attrs</I><B>);</B>
+ <B>int</B> <B>wattron(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>int</B> <I>attrs</I><B>);</B>
+ <B>int</B> <B>attrset(int</B> <I>attrs</I><B>);</B>
+ <B>int</B> <B>wattrset(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>int</B> <I>attrs</I><B>);</B>
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>attroff</STRONG>, <STRONG>wattroff</STRONG>, <STRONG>attron</STRONG>, <STRONG>wattron</STRONG>, <STRONG>attrset</STRONG>,
- <STRONG>wattrset</STRONG>, <STRONG>standend</STRONG> and <STRONG>standout</STRONG> may be macros.
-
- <STRONG>COLOR_PAIR</STRONG> 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
+ <B>int</B> <B>chgat(int</B> <I>n</I><B>,</B> <B>attr_t</B> <I>attr</I><B>,</B> <B>short</B> <I>pair</I><B>,</B> <B>const</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+ <B>int</B> <B>wchgat(WINDOW</B> <B>*</B><I>win</I><B>,</B>
+ <B>int</B> <I>n</I><B>,</B> <B>attr_t</B> <I>attr</I><B>,</B> <B>short</B> <I>pair</I><B>,</B> <B>const</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+ <B>int</B> <B>mvchgat(int</B> <I>y</I><B>,</B> <B>int</B> <I>x</I><B>,</B>
+ <B>int</B> <I>n</I><B>,</B> <B>attr_t</B> <I>attr</I><B>,</B> <B>short</B> <I>pair</I><B>,</B> <B>const</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+ <B>int</B> <B>mvwchgat(WINDOW</B> <B>*</B><I>win,</I> <I>int</I> <I>y,</I> <I>int</I> <I>x</I><B>,</B>
+ <B>int</B> <I>n,</I> <B>attr_t</B> <I>attr</I><B>,</B> <B>short</B> <I>pair</I><B>,</B> <B>const</B> <B>void</B> <B>*</B><I>opts</I><B>);</B>
+
+ <B>int</B> <B>color_set(short</B> <I>pair</I><B>,</B> <B>void*</B> <I>opts</I><B>);</B>
+ <B>int</B> <B>wcolor_set(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>short</B> <I>pair</I><B>,</B> <B>void*</B> <I>opts);</I>
+
+ <B>int</B> <B>standend(void);</B>
+ <B>int</B> <B>wstandend(WINDOW</B> <B>*</B><I>win</I><B>);</B>
+ <B>int</B> <B>standout(void);</B>
+ <B>int</B> <B>wstandout(WINDOW</B> <B>*</B><I>win</I><B>);</B>
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These routines manipulate the current attributes of the named window,
+ which then apply to all characters that are written into the window
+ with <B>waddch</B>, <B>waddstr</B> and <B>wprintw</B>. Attributes are a property of the
+ character, and move with the character through any scrolling and in-
+ sert/delete line/character operations. To the extent possible, they
+ are displayed as appropriate modifications to the graphic rendition of
+ characters put on the screen.
+
+ These routines do not affect the attributes used when erasing portions
+ of the window. See <B><A HREF="curs_bkgd.3X.html">curs_bkgd(3X)</A></B> for functions which modify the at-
+ tributes used for erasing and clearing.
+
+ Routines which do not have a <B>WINDOW*</B> parameter apply to <B>stdscr</B>. For
+ example, <B>attr_set</B> is the <B>stdscr</B> variant of <B>wattr_set</B>.
+
+
+</PRE><H3><a name="h3-Window-attributes">Window attributes</a></H3><PRE>
+ There are two sets of functions:
+
+ <B>o</B> functions for manipulating the window attributes and color: <B>wat-</B>
+ <B>tr_set</B> and <B>wattr_get</B>.
+
+ <B>o</B> functions for manipulating only the window attributes (not color):
+ <B>wattr_on</B> and <B>wattr_off</B>.
+
+ The <B>wattr_set</B> function sets the current attributes of the given window
+ to <I>attrs</I>, with color specified by <I>pair</I>.
+
+ Use <B>wattr_get</B> to retrieve attributes for the given window.
+
+ Use <B>attr_on</B> and <B>wattr_on</B> to turn on window attributes, i.e., values
+ OR'd together in <I>attr</I>, without affecting other attributes. Use <B>at-</B>
+ <B>tr_off</B> and <B>wattr_off</B> to turn off window attributes, again values OR'd
+ together in <I>attr</I>, 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 <I>set</I> or <I>get</I>, turn <I>on</I> or <I>off</I>
+ 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 (<B>_</B>) for the newer names.
+
+ The <B>int</B> datatype used in the legacy routines is treated as if it is the
+ same size as <B>chtype</B> (used by <B><A HREF="curs_addch.3X.html">addch(3X)</A></B>). It holds the common video at-
+ tributes (such as bold, reverse), as well as a few bits for color.
+ Those bits correspond to the <B>A_COLOR</B> symbol. The <B>COLOR_PAIR</B> 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 <B>A_COLOR</B> mask, then these
+ calls produce similar results:
+
+ attrset(A_BOLD | COLOR_PAIR(<I>pair</I>));
+ attr_set(A_BOLD, <I>pair</I>, NULL);
+
+ However, if the value does not fit, then the <B>COLOR_PAIR</B> macro uses only
+ the bits that fit. For example, because in ncurses <B>A_COLOR</B> has eight
+ (8) bits, then <B>COLOR_PAIR(</B><I>259</I><B>)</B> is 4 (i.e., 259 is 4 more than the limit
+ 255).
+
+ The <B>PAIR_NUMBER</B> macro extracts a pair number from an <B>int</B> (or <B>chtype</B>).
+ For example, the <I>input</I> and <I>output</I> values in these statements would be
+ the same:
+
+ int value = A_BOLD | COLOR_PAIR(<I>input</I>);
+ int <I>output</I> = PAIR_NUMBER(value);
+
+ The <B>attrset</B> routine is a legacy feature predating SVr4 curses but kept
+ in X/Open Curses for the same reason that SVr4 curses kept it: compati-
+ bility.
+
+ The remaining <B>attr</B>* functions operate exactly like the corresponding
+ <B>attr_</B>* functions, except that they take arguments of type <B>int</B> rather
+ than <B>attr_t</B>.
+
+ There is no corresponding <B>attrget</B> function as such in X/Open Curses,
+ although ncurses provides <B>getattrs</B> (see <B><A HREF="curs_legacy.3X.html">curs_legacy(3X)</A></B>).
+
+
+</PRE><H3><a name="h3-Change-character-rendition">Change character rendition</a></H3><PRE>
+ The routine <B>chgat</B> changes the attributes of a given number of charac-
+ ters starting at the current cursor location of <B>stdscr</B>. 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 at-
+ tributes all the way to the end of the current line. The <B>wchgat</B> func-
+ tion generalizes this to any window; the <B>mvwchgat</B> function does a cur-
+ sor move before acting.
+
+ In these functions, the color <I>pair</I> argument is a color-pair index (as
+ in the first argument of <B>init_pair</B>, see <B><A HREF="curs_color.3X.html">curs_color(3X)</A></B>).
+
+
+</PRE><H3><a name="h3-Change-window-color">Change window color</a></H3><PRE>
+ The routine <B>color_set</B> sets the current color of the given window to the
+ foreground/background combination described by the color <I>pair</I> parame-
+ ter.
+
+
+</PRE><H3><a name="h3-Standout">Standout</a></H3><PRE>
+ The routine <B>standout</B> is the same as <B>attron(A_STANDOUT)</B>. The routine
+ <B>standend</B> is the same as <B>attrset(A_NORMAL)</B> or <B>attrset(0)</B>, that is, it
+ turns off all attributes.
+
+ X/Open does not mark these "restricted", because
+
+ <B>o</B> they have well established legacy use, and
+
+ <B>o</B> there is no ambiguity about the way the attributes might be com-
+ bined with a color pair.
+
+
+</PRE><H2><a name="h2-VIDEO-ATTRIBUTES">VIDEO ATTRIBUTES</a></H2><PRE>
+ The following video attributes, defined in <B><curses.h></B>, can be passed to
+ the routines <B>attron</B>, <B>attroff</B>, and <B>attrset</B>, or OR'd with the characters
+ passed to <B>addch</B> (see <B><A HREF="curs_addch.3X.html">curs_addch(3X)</A></B>).
+
+ <I>Name</I> <I>Description</I>
+ -----------------------------------------------------------------
+ <B>A_NORMAL</B> Normal display (no highlight)
+ <B>A_STANDOUT</B> Best highlighting mode of the terminal.
+ <B>A_UNDERLINE</B> Underlining
+ <B>A_REVERSE</B> Reverse video
+ <B>A_BLINK</B> Blinking
+ <B>A_DIM</B> Half bright
+ <B>A_BOLD</B> Extra bright or bold
+ <B>A_PROTECT</B> Protected mode
+ <B>A_INVIS</B> Invisible or blank mode
+ <B>A_ALTCHARSET</B> Alternate character set
+ <B>A_ITALIC</B> Italics (non-X/Open extension)
+ <B>A_CHARTEXT</B> Bit-mask to extract a character
+ <B>A_COLOR</B> Bit-mask to extract a color (legacy routines)
+
+ These video attributes are supported by <B>attr_on</B> and related functions
+ (which also support the attributes recognized by <B>attron</B>, etc.):
+
+ <I>Name</I> <I>Description</I>
+ -----------------------------------------
+ <B>WA_HORIZONTAL</B> Horizontal highlight
+ <B>WA_LEFT</B> Left highlight
+ <B>WA_LOW</B> Low highlight
+ <B>WA_RIGHT</B> Right highlight
+ <B>WA_TOP</B> Top highlight
+ <B>WA_VERTICAL</B> 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
+ always return <B>1</B>.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ These functions may be macros:
+
+ <B>attroff</B>, <B>wattroff</B>, <B>attron</B>, <B>wattron</B>, <B>attrset</B>, <B>wattrset</B>, <B>standend</B>
+ and <B>standout</B>.
+
+ Color pair values can only be OR'd with attributes if the pair number
+ is less than 256. The alternate functions such as <B>color_set</B> 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
support more than 256 color pairs.
-</PRE>
-<H2>PORTABILITY</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 is not defined in SVr4 curses.
- The functions taking <STRONG>attr_t</STRONG> arguments are not supported
- under SVr4.
-
- The XSI Curses standard states that whether the tradition-
- al functions <STRONG>attron</STRONG>/<STRONG>attroff</STRONG>/<STRONG>attrset</STRONG> can manipulate at-
- tributes 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 the new 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>wat-</STRONG>
- <STRONG>tr_set</STRONG>. These are intended to work with a new series of
- highlight macros prefixed with <STRONG>WA_</STRONG>.
-
- Older 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.
-
-
- <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
-
- The XSI curses standard specifies that each pair of corre-
- sponding <STRONG>A_</STRONG> and <STRONG>WA_</STRONG>-using functions operates on the same
- current-highlight information.
-
- The XSI standard extended conformance level adds new high-
- lights <STRONG>A_HORIZONTAL</STRONG>, <STRONG>A_LEFT</STRONG>, <STRONG>A_LOW</STRONG>, <STRONG>A_RIGHT</STRONG>, <STRONG>A_TOP</STRONG>, <STRONG>A_VER-</STRONG>
- <STRONG>TICAL</STRONG> (and corresponding <STRONG>WA_</STRONG> macros for each) which this
- implementation does not yet support.
+</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 dif-
+ ferences from SVr4 curses address the way video attributes can be ap-
+ plied to wide-characters. But aside from that, <B>attrset</B> and <B>attr_set</B>
+ are similar. SVr4 curses provided the basic features for manipulating
+ video attributes. However, earlier versions of curses provided a part
+ of these features.
+ As seen in 2.8BSD, curses assumed 7-bit characters, using the eighth
+ bit of a byte to represent the <I>standout</I> feature (often implemented as
+ bold and/or reverse video). The BSD curses library provided functions
+ <B>standout</B> and <B>standend</B> which were carried along into X/Open Curses due
+ to their pervasive use in legacy applications.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All routines return the integer <STRONG>OK</STRONG> on success, or <STRONG>ERR</STRONG> on
- failure.
+ Some terminals in the 1980s could support a variety of video at-
+ tributes, although the BSD curses library could do nothing with those.
+ System V (1983) provided an improved curses library. It defined the <B>A_</B>
+ symbols for use by applications to manipulate the other attributes.
+ There are few useful references for the chronology.
+
+ Goodheart's book <I>UNIX</I> <I>Curses</I> <I>Explained</I> (1991) describes SVr3 (1987),
+ commenting on several functions:
+
+ <B>o</B> the <B>attron</B>, <B>attroff</B>, <B>attrset</B> functions (and most of the functions
+ found in SVr4 but not in BSD curses) were introduced by System V,
+
+ <B>o</B> the alternate character set feature with <B>A_ALTCHARSET</B> was added in
+ SVr2 and improved in SVr3 (by adding <B>acs_map[]</B>),
+
+ <B>o</B> <B>start_color</B> and related color-functions were introduced by System
+ V.3.2,
+
+ <B>o</B> pads, soft-keys were added in SVr3, and
+
+ Goodheart did not mention the background character or the <B>cchar_t</B> type.
+ Those are respectively SVr4 and X/Open features. He did mention the <B>A_</B>
+ constants, but did not indicate their values. Those were not the same
+ in different systems, even for those marked as System V.
+
+ Different Unix systems used different sizes for the bit-fields in
+ <B>chtype</B> for <I>characters</I> and <I>colors</I>, and took into account the different
+ integer sizes (32-bit versus 64-bit).
+
+ This table showing the number of bits for <B>A_COLOR</B> and <B>A_CHARTEXT</B> was
+ gleaned from the curses header files for various operating systems and
+ architectures. The inferred architecture and notes reflect the format
+ and size of the defined constants as well as clues such as the alter-
+ nate character set implementation. A 32-bit library can be used on a
+ 64-bit system, but not necessarily the reverse.
+
+ <I>Year</I> <I>System</I> <I>Arch</I> <I>Color</I> <I>Char</I> <I>Notes</I>
+ ----------------------------------------------------------------
+ 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 <B>chtype</B>
+
+ Notes:
+
+ Regarding HP-UX,
+
+ <B>o</B> HP-UX 10.20 (1996) added support for 64-bit PA-RISC processors
+ in 1996.
+
+ <B>o</B> HP-UX 10.30 (1997) marked "curses_colr" obsolete. That version
+ of curses was dropped with HP-UX 11.30 in 2006.
+
+ Regarding OSF/1 (and Tru64),
+
+ <B>o</B> These used 64-bit hardware. Like ncurses, the OSF/1 curses in-
+ terface is not customized for 32-bit and 64-bit versions.
+
+ <B>o</B> Unlike other systems which evolved from AT&T code, OSF/1 provid-
+ ed a new implementation for X/Open curses.
+
+ Regarding Solaris,
+
+ <B>o</B> The initial release of Solaris was in 1992.
+
+ <B>o</B> The <I>xpg4</I> (X/Open) curses was developed by MKS from 1990 to 1995.
+ Sun's copyright began in 1996.
+
+ <B>o</B> Sun updated the X/Open curses interface after 64-bit support was
+ introduced in 1997, but did not modify the SVr4 curses inter-
+ face.
+
+ Regarding U/Win,
+
+ <B>o</B> Development of the curses library began in 1991, stopped in
+ 2000.
+
+ <B>o</B> Color support was added in 1998.
+
+ <B>o</B> The library uses only <B>chtype</B> (no <B>cchar_t</B>).
+
+ Once X/Open curses was adopted in the mid-1990s, the constraint of a
+ 32-bit interface with many colors and wide-characters for <B>chtype</B> became
+ a moot point. The <B>cchar_t</B> structure (whose size and members are not
+ specified in X/Open Curses) could be extended as needed.
+
+ Other interfaces are rarely used now:
+
+ <B>o</B> BSD curses was improved slightly in 1993/1994 using Keith Bostic's
+ modification to make the library 8-bit clean for <B>nvi</B>. He moved
+ <I>standout</I> attribute to a structure member.
+
+ The resulting 4.4BSD curses was replaced by ncurses over the next
+ ten years.
+
+ <B>o</B> U/Win is rarely used now.
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+ This implementation provides the <B>A_ITALIC</B> attribute for terminals which
+ have the <B>enter_italics_mode</B> (<B>sitm</B>) and <B>exit_italics_mode</B> (<B>ritm</B>) capa-
+ bilities. Italics are not mentioned in X/Open Curses. Unlike the oth-
+ er video attributes, <B>A_ITALIC</B> is unrelated to the <B>set_attributes</B> capa-
+ bilities. This implementation makes the assumption that <B>exit_attri-</B>
+ <B>bute_mode</B> may also reset italics.
+
+ Each of the functions added by XSI Curses has a parameter <I>opts</I>, which
+ X/Open Curses still (after more than twenty years) documents as re-
+ served for future use, saying that it should be <B>NULL</B>. This implementa-
+ tion uses that parameter in ABI 6 for the functions which have a color-
+ pair parameter to support <I>extended</I> <I>color</I> <I>pairs</I>:
+
+ <B>o</B> For functions which modify the color, e.g., <B>wattr_set</B>, if <I>opts</I> is
+ set it is treated as a pointer to <B>int</B>, and used to set the color
+ pair instead of the <B>short</B> <I>pair</I> parameter.
+
+ <B>o</B> For functions which retrieve the color, e.g., <B>wattr_get</B>, if <I>opts</I> is
+ set it is treated as a pointer to <B>int</B>, and used to retrieve the
+ color pair as an <B>int</B> value, in addition retrieving it via the stan-
+ dard pointer to <B>short</B> parameter.
+
+ The remaining functions which have <I>opts</I>, but do not manipulate color,
+ e.g., <B>wattr_on</B> and <B>wattr_off</B> are not used by this implementation except
+ to check that they are <B>NULL</B>.
+
+
+</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, <B>attr_t</B>, which was
+ not defined in SVr4 curses. The functions taking <B>attr_t</B> 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 <B>touchwin</B> to force the screen to
+ match the updated attributes.
+
+ The XSI Curses standard states that whether the traditional functions
+ <B>attron</B>/<B>attroff</B>/<B>attrset</B> can manipulate attributes other than <B>A_BLINK</B>,
+ <B>A_BOLD</B>, <B>A_DIM</B>, <B>A_REVERSE</B>, <B>A_STANDOUT</B>, or <B>A_UNDERLINE</B> is "unspecified".
+ Under this implementation as well as SVr4 curses, these functions cor-
+ rectly manipulate all other highlights (specifically, <B>A_ALTCHARSET</B>,
+ <B>A_PROTECT</B>, and <B>A_INVIS</B>).
+
+ XSI Curses added these entry points:
+
+ <B>attr_get</B>, <B>attr_on</B>, <B>attr_off</B>, <B>attr_set</B>, <B>wattr_on</B>, <B>wattr_off</B>, <B>wat-</B>
+ <B>tr_get</B>, <B>wattr_set</B>
+
+ The new functions are intended to work with a new series of highlight
+ macros prefixed with <B>WA_</B>. The older macros have direct counterparts in
+ the newer set of names:
+
+ <I>Name</I> <I>Description</I>
+ ------------------------------------------------------------
+ <B>WA_NORMAL</B> Normal display (no highlight)
+ <B>WA_STANDOUT</B> Best highlighting mode of the terminal.
+ <B>WA_UNDERLINE</B> Underlining
+ <B>WA_REVERSE</B> Reverse video
+ <B>WA_BLINK</B> Blinking
+ <B>WA_DIM</B> Half bright
+ <B>WA_BOLD</B> Extra bright or bold
+ <B>WA_ALTCHARSET</B> 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.:
+
+ <B>o</B> The XSI curses standard specifies that each pair of corresponding
+ <B>A_</B> and <B>WA_</B>-using functions operates on the same current-highlight
+ information.
+
+ <B>o</B> However, in some implementations, those symbols have unrelated val-
+ ues.
+
+ For example, the Solaris <I>xpg4</I> (X/Open) curses declares <B>attr_t</B> to be
+ an unsigned short integer (16-bits), while <B>chtype</B> is a unsigned in-
+ teger (32-bits). The <B>WA_</B> symbols in this case are different from
+ the <B>A_</B> symbols because they are used for a smaller datatype which
+ does not represent <B>A_CHARTEXT</B> or <B>A_COLOR</B>.
+
+ In this implementation (as in many others), the values happen to be
+ the same because it simplifies copying information between <B>chtype</B>
+ and <B>cchar_t</B> variables.
+
+ The XSI standard extended conformance level adds new highlights <B>A_HORI-</B>
+ <B>ZONTAL</B>, <B>A_LEFT</B>, <B>A_LOW</B>, <B>A_RIGHT</B>, <B>A_TOP</B>, <B>A_VERTICAL</B> (and corresponding
+ <B>WA_</B> macros for each). As of August 2013, no known terminal provides
+ these highlights (i.e., via the <B>sgr1</B> capability).
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return the integer <B>OK</B> on success, or <B>ERR</B> on failure.
X/Open does not define any error conditions.
- This implementation returns an error if the window pointer
- is null. The <STRONG>wcolor_set</STRONG> function returns an error if the
- color pair parameter is outside the range 0..COL-
- OR_PAIRS-1. This implementation also provides <STRONG>getattrs</STRONG>
- for compatibility with older versions of curses.
+ This implementation
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ <B>o</B> returns an error if the window pointer is null.
+ <B>o</B> returns an error if the color pair parameter for <B>wcolor_set</B> is out-
+ side the range 0..COLOR_PAIRS-1.
-</PRE>
-<H2>SEE ALSO</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>
+ <B>o</B> does not return an error if either of the parameters of <B>wattr_get</B>
+ used for retrieving attribute or color-pair values is <B>NULL</B>.
+
+ Functions with a "mv" prefix first perform a cursor movement using
+ <B>wmove</B>, 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>
+ <B><A HREF="curses.3X.html">curses(3X)</A></B>, <B><A HREF="curs_addch.3X.html">curs_addch(3X)</A></B>, <B><A HREF="curs_addstr.3X.html">curs_addstr(3X)</A></B>, <B><A HREF="curs_bkgd.3X.html">curs_bkgd(3X)</A></B>,
+ <B><A HREF="curs_printw.3X.html">curs_printw(3X)</A></B>, <B><A HREF="curs_variables.3X.html">curs_variables(3X)</A></B>
- <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+ <B><A HREF="curs_attr.3X.html">curs_attr(3X)</A></B>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<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-Standout">Standout</a></li>
+</ul>
+</li>
+<li><a href="#h2-VIDEO-ATTRIBUTES">VIDEO ATTRIBUTES</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-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>