+ <STRONG>int</STRONG> <STRONG>add_wch(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wadd_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvadd_wch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvwadd_wch(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>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+
+ <STRONG>int</STRONG> <STRONG>echo_wchar(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wecho_wchar(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE><H3><a name="h3-wadd_wch">wadd_wch</a></H3><PRE>
+ <STRONG>wadd_wch</STRONG> writes the complex character <EM>wch</EM> to the window <EM>win</EM>, then may
+ advance the cursor position, analogously to the standard C library's
+ <STRONG>putwchar(3)</STRONG>. <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> describes the variants of this function.
+
+ Much behavior depends on whether the wide characters in <EM>wch</EM> are spacing
+ or non-spacing; see subsection "Complex Characters" below.
+
+ <STRONG>o</STRONG> If <EM>wch</EM> contains a spacing character, then any character at the
+ cursor is first removed. The complex character <EM>wch</EM>, with its
+ attributes and color pair identifier, becomes the <EM>base</EM> of the
+ <EM>active</EM> <EM>complex</EM> <EM>character</EM>.
+
+ <STRONG>o</STRONG> If <EM>wch</EM> contains only non-spacing characters, they are combined with
+ the active complex character. <EM>curses</EM> ignores its attributes and
+ color pair identifier, and does not advance the cursor.
+
+ Further non-spacing characters added with <STRONG>wadd_wch</STRONG> are not written at
+ the new cursor position but combine with the active complex character
+ until another spacing character is written to the window or the cursor
+ is moved.
+
+ If advancement occurs at the right margin,
+
+ <STRONG>o</STRONG> the cursor automatically wraps to the beginning of the next line,
+ then,
+
+ <STRONG>o</STRONG> if it was at the bottom of the scrolling region, and if
+ <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG> is enabled for <EM>win</EM>, the scrolling region scrolls up
+ one line.
+
+ If <EM>wch</EM> is a backspace, carriage return, line feed, or tab, the cursor
+ moves appropriately within the window.
+
+ <STRONG>o</STRONG> Backspace moves the cursor one character left; at the left margin
+ of a window, it does nothing.
+
+ <STRONG>o</STRONG> Carriage return moves the cursor to the left margin on the current
+ line of the window.
+
+ <STRONG>o</STRONG> Line feed does a <STRONG><A HREF="curs_clear.3x.html">clrtoeol(3x)</A></STRONG>, then advances as if from the right
+ margin.
+
+ <STRONG>o</STRONG> Tab advances the cursor to the next tab stop (possibly on the next
+ line); these are placed at every eighth column by default. Alter
+ the tab interval with the <STRONG>TABSIZE</STRONG> extension; see
+ <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+
+ If <EM>wch</EM> is any other nonprintable character, it is drawn in printable
+ form using the same convention as <STRONG><A HREF="curs_util.3x.html">wunctrl(3x)</A></STRONG>.
+
+ Calling <STRONG><A HREF="curs_in_wch.3x.html">win_wch(3x)</A></STRONG> on the location of a nonprintable character does
+ not return the character itself, but its <STRONG><A HREF="curs_util.3x.html">wunctrl(3x)</A></STRONG> representation.
+
+
+</PRE><H3><a name="h3-wecho_wchar">wecho_wchar</a></H3><PRE>
+ <STRONG>echo_wchar</STRONG> and <STRONG>wecho_wchar</STRONG> are equivalent to calling (<STRONG>w</STRONG>)<STRONG>add_wch</STRONG>
+ followed by (<STRONG>w</STRONG>)<STRONG>refresh</STRONG>. <EM>curses</EM> interprets these functions as a hint
+ that only a single (complex) character is being output; for non-control
+ characters, a considerable performance gain may be enjoyed by employing
+ them.
+
+
+</PRE><H3><a name="h3-Forms-Drawing-Characters">Forms-Drawing Characters</a></H3><PRE>
+ <EM>curses</EM> defines macros starting with <STRONG>WACS_</STRONG> that can be used with
+ <STRONG>wadd_wch</STRONG> to write line-drawing and other special characters to the
+ screen. <EM>ncurses</EM> terms these <EM>forms-drawing</EM> <EM>characters.</EM> The ACS default
+ listed below is used if the <STRONG>acs_chars</STRONG> (<STRONG>acsc</STRONG>) <EM>terminfo</EM> capability does
+ not define a terminal-specific replacement for it, or if the terminal
+ and locale configuration requires Unicode to access these characters
+ but the library is unable to use Unicode. The "acsc char" column
+ corresponds to how the characters are specified in the <STRONG>acs_chars</STRONG> (<STRONG>acsc</STRONG>)
+ string capability, and the characters in it may appear on the screen if
+ the terminal type's database entry incorrectly advertises ACS support.
+ The name "ACS" originates in the Alternate Character Set feature of the
+ DEC VT100 terminal.
+
+ <STRONG>Unicode</STRONG> <STRONG>ACS</STRONG> <STRONG>acsc</STRONG>
+ <STRONG>Symbol</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>char</STRONG> <STRONG>Glyph</STRONG> <STRONG>Name</STRONG>
+ ------------------------------------------------------------------------
+ <STRONG>WACS_BLOCK</STRONG> 0x25ae # 0 solid square block
+ <STRONG>WACS_BOARD</STRONG> 0x2592 # h board of squares
+ <STRONG>WACS_BTEE</STRONG> 0x2534 + v bottom tee
+ <STRONG>WACS_BULLET</STRONG> 0x00b7 o ~ bullet
+ <STRONG>WACS_CKBOARD</STRONG> 0x2592 : a checker board (stipple)
+ <STRONG>WACS_DARROW</STRONG> 0x2193 v . arrow pointing down
+ <STRONG>WACS_DEGREE</STRONG> 0x00b0 ' f degree symbol
+ <STRONG>WACS_DIAMOND</STRONG> 0x25c6 + ` diamond
+ <STRONG>WACS_GEQUAL</STRONG> 0x2265 > > greater-than-or-equal-to
+ <STRONG>WACS_HLINE</STRONG> 0x2500 - q horizontal line
+ <STRONG>WACS_LANTERN</STRONG> 0x2603 # i lantern symbol
+ <STRONG>WACS_LARROW</STRONG> 0x2190 < , arrow pointing left
+ <STRONG>WACS_LEQUAL</STRONG> 0x2264 < y less-than-or-equal-to
+ <STRONG>WACS_LLCORNER</STRONG> 0x2514 + m lower left-hand corner
+ <STRONG>WACS_LRCORNER</STRONG> 0x2518 + j lower right-hand corner
+ <STRONG>WACS_LTEE</STRONG> 0x2524 + t left tee
+ <STRONG>WACS_NEQUAL</STRONG> 0x2260 ! | not-equal
+ <STRONG>WACS_PI</STRONG> 0x03c0 * { greek pi
+ <STRONG>WACS_PLMINUS</STRONG> 0x00b1 # g plus/minus
+ <STRONG>WACS_PLUS</STRONG> 0x253c + n plus
+ <STRONG>WACS_RARROW</STRONG> 0x2192 > + arrow pointing right
+ <STRONG>WACS_RTEE</STRONG> 0x251c + u right tee
+ <STRONG>WACS_S1</STRONG> 0x23ba - o scan line 1
+ <STRONG>WACS_S3</STRONG> 0x23bb - p scan line 3
+ <STRONG>WACS_S7</STRONG> 0x23bc - r scan line 7
+ <STRONG>WACS_S9</STRONG> 0x23bd _ s scan line 9
+ <STRONG>WACS_STERLING</STRONG> 0x00a3 f } pound-sterling symbol
+ <STRONG>WACS_TTEE</STRONG> 0x252c + w top tee
+ <STRONG>WACS_UARROW</STRONG> 0x2191 ^ - arrow pointing up
+ <STRONG>WACS_ULCORNER</STRONG> 0x250c + l upper left-hand corner
+ <STRONG>WACS_URCORNER</STRONG> 0x2510 + k upper right-hand corner
+ <STRONG>WACS_VLINE</STRONG> 0x2502 | x vertical line
+
+ The wide-character configuration of <EM>ncurses</EM> also defines symbols for
+ thick lines (<STRONG>acsc</STRONG> "J" to "V"):
+
+ <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG>
+ <STRONG>ACS</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>Char</STRONG> <STRONG>Glyph</STRONG> <STRONG>Name</STRONG>
+ ------------------------------------------------------------------------
+ <STRONG>WACS_T_BTEE</STRONG> 0x253b + V thick tee pointing up
+ <STRONG>WACS_T_HLINE</STRONG> 0x2501 - Q thick horizontal line
+ <STRONG>WACS_T_LLCORNER</STRONG> 0x2517 + M thick lower left corner
+ <STRONG>WACS_T_LRCORNER</STRONG> 0x251b + J thick lower right corner
+ <STRONG>WACS_T_LTEE</STRONG> 0x252b + T thick tee pointing right
+ <STRONG>WACS_T_PLUS</STRONG> 0x254b + N thick large plus
+ <STRONG>WACS_T_RTEE</STRONG> 0x2523 + U thick tee pointing left
+ <STRONG>WACS_T_TTEE</STRONG> 0x2533 + W thick tee pointing down
+ <STRONG>WACS_T_ULCORNER</STRONG> 0x250f + L thick upper left corner
+ <STRONG>WACS_T_URCORNER</STRONG> 0x2513 + K thick upper right corner
+ <STRONG>WACS_T_VLINE</STRONG> 0x2503 | X thick vertical line
+
+ and for double-lines (<STRONG>acsc</STRONG> "A" to "I"):
+
+ <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG>
+ <STRONG>ACS</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>Char</STRONG> <STRONG>Glyph</STRONG> <STRONG>Name</STRONG>
+ ------------------------------------------------------------------------
+ <STRONG>WACS_D_BTEE</STRONG> 0x2569 + H double tee pointing up
+ <STRONG>WACS_D_HLINE</STRONG> 0x2550 - R double horizontal line
+ <STRONG>WACS_D_LLCORNER</STRONG> 0x255a + D double lower left corner
+ <STRONG>WACS_D_LRCORNER</STRONG> 0x255d + A double lower right corner
+ <STRONG>WACS_D_LTEE</STRONG> 0x2560 + F double tee pointing right
+ <STRONG>WACS_D_PLUS</STRONG> 0x256c + E double large plus
+ <STRONG>WACS_D_RTEE</STRONG> 0x2563 + G double tee pointing left
+ <STRONG>WACS_D_TTEE</STRONG> 0x2566 + I double tee pointing down
+ <STRONG>WACS_D_ULCORNER</STRONG> 0x2554 + C double upper left corner
+ <STRONG>WACS_D_URCORNER</STRONG> 0x2557 + B double upper right corner
+ <STRONG>WACS_D_VLINE</STRONG> 0x2551 | Y double vertical line
+
+ Unicode's descriptions for these characters differs slightly from
+ <EM>ncurses</EM>, by introducing the term "light" (along with less important
+ details). Here are its descriptions for the normal, thick, and double
+ horizontal lines:
+
+ <STRONG>o</STRONG> U+2500 BOX DRAWINGS LIGHT HORIZONTAL
+
+ <STRONG>o</STRONG> U+2501 BOX DRAWINGS HEAVY HORIZONTAL
+
+ <STRONG>o</STRONG> U+2550 BOX DRAWINGS DOUBLE HORIZONTAL
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ These functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure. In <EM>ncurses</EM>,
+ <STRONG>wadd_wch</STRONG> returns <STRONG>ERR</STRONG> if
+
+ <STRONG>o</STRONG> <EM>win</EM> is <STRONG>NULL</STRONG>,
+
+ <STRONG>o</STRONG> wrapping to a new line is impossible because <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG> has not
+ been called on <EM>win</EM> when writing to its bottom right location is
+ attempted, or
+
+ <STRONG>o</STRONG> it is not possible to add a complete character at the cursor
+ position.
+
+ 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>
+ <STRONG>add_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>, and <STRONG>echo_wchar</STRONG> may be implemented as
+ macros.
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+
+</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
+ The <STRONG>TABSIZE</STRONG> variable is implemented in SVr4 and other versions of
+ <EM>curses</EM>, but is not specified by X/Open Curses (see <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>).
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in X/Open Curses, Issue 4. It specifies
+ no error conditions for them.
+
+ SVr4 <EM>curses</EM> describes a successful return value only as "an integer
+ value other than <STRONG>ERR</STRONG>".