X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=man%2Fcurs_bkgd.3x;h=051d5fda06830f9471072a62a6991055944f85ff;hp=ef00f7e7ba403c4ce5d3b3aba6487c5bf1d38f3e;hb=fae162795e065e5901068152e91f2962b6b247f3;hpb=fd1066cc97c836a67fa2623b6cf7ffd2ece39dc7;ds=sidebyside diff --git a/man/curs_bkgd.3x b/man/curs_bkgd.3x index ef00f7e7..051d5fda 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-2019,2020 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,9 +27,10 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_bkgd.3x,v 1.24 2015/11/21 01:53:42 tom Exp $ +.\" $Id: curs_bkgd.3x,v 1.31 2020/10/17 23:12:52 tom Exp $ .de bP -.IP \(bu 4 +.ie n .IP \(bu 4 +.el .IP \(bu 2 .. .TH curs_bkgd 3X "" .SH NAME @@ -41,11 +43,11 @@ \fBvoid bkgdset(chtype \fP\fIch\fP\fB);\fR .br \fBvoid wbkgdset(WINDOW *\fP\fIwin, chtype \fP\fIch\fP\fB);\fR -.br +.sp \fBint bkgd(chtype \fP\fIch\fP\fB);\fR .br \fBint wbkgd(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIch\fP\fB);\fR -.br +.sp \fBchtype getbkgd(WINDOW *\fP\fIwin\fP\fB);\fR .br .SH DESCRIPTION @@ -55,9 +57,10 @@ 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 +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 @@ -68,7 +71,8 @@ as the graphic rendition of the character put on the screen. .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: +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,23 +80,78 @@ 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 -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\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. -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