X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=man%2Fcurs_bkgd.3x;h=f9199ce077bb6741303246b3c80482ee37b255bd;hb=3183ac61c6bf0a75ee65dc8cbebf54f7c143df46;hp=ef00f7e7ba403c4ce5d3b3aba6487c5bf1d38f3e;hpb=fd1066cc97c836a67fa2623b6cf7ffd2ece39dc7;p=ncurses.git diff --git a/man/curs_bkgd.3x b/man/curs_bkgd.3x index ef00f7e7..f9199ce0 100644 --- a/man/curs_bkgd.3x +++ b/man/curs_bkgd.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2010,2015 Free Software Foundation, Inc. * +.\" Copyright 2018-2021,2022 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 * @@ -26,38 +27,43 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_bkgd.3x,v 1.24 2015/11/21 01:53:42 tom Exp $ +.\" $Id: curs_bkgd.3x,v 1.35 2022/06/25 21:55:45 tom Exp $ .de bP -.IP \(bu 4 +.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 +\fBbkgdset\fP, \fBwbkgdset\fP, +\fBbkgd\fP, \fBwbkgd\fP, +\fBgetbkgd\fP \- \fBcurses\fP window background manipulation routines .SH SYNOPSIS -\fB#include \fR +\fB#include \fP .PP -\fBvoid bkgdset(chtype \fP\fIch\fP\fB);\fR +\fBvoid bkgdset(chtype \fIch\fB);\fR .br -\fBvoid wbkgdset(WINDOW *\fP\fIwin, chtype \fP\fIch\fP\fB);\fR +\fBvoid wbkgdset(WINDOW *\fIwin, chtype \fIch\fB);\fR +.sp +\fBint bkgd(chtype \fIch\fB);\fR .br -\fBint bkgd(chtype \fP\fIch\fP\fB);\fR -.br -\fBint wbkgd(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIch\fP\fB);\fR -.br -\fBchtype getbkgd(WINDOW *\fP\fIwin\fP\fB);\fR +\fBint wbkgd(WINDOW *\fIwin\fB, chtype \fIch\fB);\fR +.sp +\fBchtype getbkgd(WINDOW *\fIwin\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 \fBbkgdset\fP and \fBwbkgdset\fP routines +set the \fIbackground\fP for a window. +A window's background is a \fBchtype\fP consisting of +any combination of attributes (i.e., rendition) and a character: +.bP 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 +characters that are written into the window with \fBwaddch\fP. +.bP +Both the character and attribute parts of the background are combined with +blank characters that are written into the window. +.PP +The background becomes a property of each character and moves with the character through any scrolling and insert/delete line/character operations. .PP @@ -66,9 +72,10 @@ 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 +The \fBbkgd\fP and \fBwbkgd\fP functions set the background property of the current or specified window -and then apply this setting to every character position in that 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 @@ -76,27 +83,87 @@ 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. +.IP +When \fBbkgdset\fP is used to set the background character, +that does not update each cell in the window. +A subsequent call to \fBbkgd\fP will only modify the \fIcharacter\fP in +cells which match the current 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 (0), 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 +The \fBgetbkgd\fP function returns the given window's current background character/attribute pair. .SH RETURN VALUE .PP -The routines \fBbkgd\fR and \fBwbkgd\fR return the integer \fBOK\fR. -The SVr4.0 manual says "or a non-negative integer if \fBimmedok\fR is set", -but this appears to be an error. +These functions are described in the XSI Curses standard, Issue 4. +It specifies that \fBbkgd\fP and \fBwbkgd\fP return \fBERR\fP on failure, +but gives no failure conditions. +.PP +The routines \fBbkgd\fP and \fBwbkgd\fP return the integer \fBOK\fP, +unless the library has not been initialized. +.PP +In contrast, +the SVr4.0 manual says \fBbkgd\fP and \fBwbkgd\fP may return \fBOK\fP +"or a non-negative integer if \fBimmedok\fP 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. +Note that \fBbkgdset\fP and \fBbkgd\fP 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. -It specifies that \fBbkgd\fR and \fBwbkgd\fR return \fBERR\fR on failure, -but gives no failure conditions. +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) +\fBcurses\fP(3X), +\fBcurs_addch\fP(3X), +\fBcurs_attr\fP(3X), +\fBcurs_outopts\fP(3X)