| .\"*************************************************************************** |
| .\" Copyright 2018-2020,2021 Thomas E. Dickey * |
| .\" Copyright 1998-2015,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 * |
| .\" "Software"), to deal in the Software without restriction, including * |
| .\" without limitation the rights to use, copy, modify, merge, publish, * |
| .\" distribute, distribute with modifications, sublicense, and/or sell * |
| .\" copies of the Software, and to permit persons to whom the Software is * |
| .\" furnished to do so, subject to the following conditions: * |
| .\" * |
| .\" The above copyright notice and this permission notice shall be included * |
| .\" in all copies or substantial portions of the Software. * |
| .\" * |
| .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * |
| .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * |
| .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * |
| .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * |
| .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * |
| .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * |
| .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * |
| .\" * |
| .\" Except as contained in this notice, the name(s) of the above copyright * |
| .\" holders shall not be used in advertising or otherwise to promote the * |
| .\" sale, use or other dealings in this Software without prior written * |
| .\" authorization. * |
| .\"*************************************************************************** |
| .\" |
| .\" $Id: curs_bkgd.3x,v 1.32 2021/06/17 21:30:22 tom Exp $ |
| .de bP |
| .ie n .IP \(bu 4 |
| .el .IP \(bu 2 |
| .. |
| .TH curs_bkgd 3X "" |
| .SH NAME |
| \fBbkgdset\fR, \fBwbkgdset\fR, |
| \fBbkgd\fR, \fBwbkgd\fR, |
| \fBgetbkgd\fR \- \fBcurses\fR window background manipulation routines |
| .SH SYNOPSIS |
| \fB#include <curses.h>\fR |
| .PP |
| \fBvoid bkgdset(chtype \fP\fIch\fP\fB);\fR |
| .br |
| \fBvoid wbkgdset(WINDOW *\fP\fIwin, chtype \fP\fIch\fP\fB);\fR |
| .sp |
| \fBint bkgd(chtype \fP\fIch\fP\fB);\fR |
| .br |
| \fBint wbkgd(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIch\fP\fB);\fR |
| .sp |
| \fBchtype getbkgd(WINDOW *\fP\fIwin\fP\fB);\fR |
| .br |
| .SH DESCRIPTION |
| .SS bkgdset |
| The \fBbkgdset\fR and \fBwbkgdset\fR routines manipulate the |
| background of the named window. |
| The window background is a \fBchtype\fR consisting of |
| any combination of attributes (i.e., rendition) and a character. |
| The attribute part of the background is combined (OR'ed) with all non-blank |
| characters that are written into the window with \fBwaddch\fR. |
| Both the character and attribute parts of the background are combined with |
| the blank characters. |
| The background becomes a property of the |
| character and moves with the character through any scrolling and |
| insert/delete line/character operations. |
| .PP |
| To the extent possible on a particular terminal, |
| the attribute part of the background is displayed |
| as the graphic rendition of the character put on the screen. |
| .SS bkgd |
| .PP |
| The \fBbkgd\fR and \fBwbkgd\fR functions |
| set the background property of the current or specified window |
| and then apply this setting to every character position in that window. |
| According to X/Open Curses, it should do this: |
| .PP |
| .bP |
| The rendition of every character on the screen is changed to |
| the new background rendition. |
| .bP |
| Wherever the former background character |
| appears, it is changed to the new background character. |
| .PP |
| Neither X/Open Curses nor the SVr4 manual pages give details about |
| the way the rendition of characters on the screen is updated when |
| \fBbkgd\fP or \fBwbkgd\fP is used to change the background character. |
| .PP |
| This implementation, like SVr4 curses, does not store the background |
| and window attribute contributions to each cell separately. |
| It updates the rendition by comparing the character, non-color attributes and |
| colors contained in the background. |
| For each cell in the window, whether or not it is blank: |
| .bP |
| The library first compares the \fIcharacter\fP, |
| and if it matches the current character part of the background, |
| it replaces that with the new background character. |
| .bP |
| The library then checks if the cell uses color, |
| i.e., its color pair value is nonzero. |
| If not, it simply replaces the attributes and color pair in the |
| cell with those from the new background character. |
| .bP |
| If the cell uses color, |
| and that matches the color in the current background, |
| the library removes attributes |
| which may have come from the current background |
| and adds attributes from the new background. |
| It finishes by setting the cell |
| to use the color from the new background. |
| .bP |
| If the cell uses color, |
| and that does not match the color in the current background, |
| the library updates only the non-color attributes, |
| first removing those which may have come from the current background, |
| and then adding attributes from the new background. |
| .PP |
| If the background's character value is zero, a space is assumed. |
| .PP |
| If the terminal does not support color, |
| or if color has not been started with \fBstart_color\fP, |
| the new background character's color attribute will be ignored. |
| .SS getbkgd |
| .PP |
| The \fBgetbkgd\fR function returns the given window's current background |
| character/attribute pair. |
| .SH RETURN VALUE |
| .PP |
| These functions are described in the XSI Curses standard, Issue 4. |
| It specifies that \fBbkgd\fR and \fBwbkgd\fR return \fBERR\fR on failure, |
| but gives no failure conditions. |
| .PP |
| The routines \fBbkgd\fR and \fBwbkgd\fR return the integer \fBOK\fR, |
| unless the library has not been initialized. |
| .PP |
| In contrast, |
| the SVr4.0 manual says \fBbkgd\fR and \fBwbkgd\fR may return \fBOK\fP |
| "or a non-negative integer if \fBimmedok\fR is set", |
| which refers to the return value from \fBwrefresh\fP |
| (used to implement the immediate repainting). |
| The SVr4 curses \fBwrefresh\fP returns the number of characters |
| written to the screen during the refresh. |
| This implementation does not do that. |
| .SH NOTES |
| .PP |
| Note that \fBbkgdset\fR and \fBbkgd\fR may be macros. |
| .PP |
| X/Open Curses mentions that the character part of the background must |
| be a single-byte value. |
| This implementation, like SVr4, checks to ensure that, |
| and will reuse the old background character if the check fails. |
| .SH PORTABILITY |
| .PP |
| These functions are described in the XSI Curses standard, Issue 4 |
| (X/Open Curses). |
| .SH SEE ALSO |
| .na |
| .PP |
| \fBcurses\fR(3X), |
| \fBcurs_addch\fR(3X), |
| \fBcurs_attr\fR(3X), |
| \fBcurs_outopts\fR(3X) |