]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - man/curs_bkgd.3x
ncurses 6.3 - patch 20211225
[ncurses.git] / man / curs_bkgd.3x
index 757186cf558bbc1964fd5ec501fa115468be901b..db5680d22b80f372afdbaf55824715c290f17e92 100644 (file)
@@ -1,5 +1,6 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998-2015,2017 Free Software Foundation, Inc.              *
+.\" 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            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_bkgd.3x,v 1.25 2017/11/18 23:56:00 tom Exp $
+.\" $Id: curs_bkgd.3x,v 1.33 2021/12/25 17:39:16 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
+\fBbkgdset\fP, \fBwbkgdset\fP,
+\fBbkgd\fP, \fBwbkgd\fP,
+\fBgetbkgd\fP \- \fBcurses\fP window background manipulation routines
 .SH SYNOPSIS
-\fB#include <curses.h>\fR
+\fB#include <curses.h>\fP
 .PP
-\fBvoid bkgdset(chtype \fP\fIch\fP\fB);\fR
+\fBvoid bkgdset(chtype \fP\fIch\fP\fB);\fP
 .br
-\fBvoid wbkgdset(WINDOW *\fP\fIwin, chtype \fP\fIch\fP\fB);\fR
+\fBvoid wbkgdset(WINDOW *\fP\fIwin, chtype \fP\fIch\fP\fB);\fP
+.sp
+\fBint bkgd(chtype \fP\fIch\fP\fB);\fP
 .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 *\fP\fIwin\fP\fB, chtype \fP\fIch\fP\fB);\fP
+.sp
+\fBchtype getbkgd(WINDOW *\fP\fIwin\fP\fB);\fP
 .br
 .SH DESCRIPTION
 .SS bkgdset
-The \fBbkgdset\fR and \fBwbkgdset\fR routines manipulate the
+The \fBbkgdset\fP and \fBwbkgdset\fP routines manipulate the
 background of the named window.
-The window background is a \fBchtype\fR consisting of
+The window background is a \fBchtype\fP 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\fP.
+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
@@ -67,9 +69,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
@@ -77,27 +80,82 @@ 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
+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)