1999-08-24 01:06:48 +00:00
|
|
|
.\"***************************************************************************
|
2020-02-19 16:58:06 +00:00
|
|
|
.\" Copyright 2018-2019,2020 Thomas E. Dickey *
|
|
|
|
.\" Copyright 1998-2010,2016 Free Software Foundation, Inc. *
|
1999-08-24 01:06:48 +00:00
|
|
|
.\" *
|
|
|
|
.\" 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. *
|
|
|
|
.\"***************************************************************************
|
|
|
|
.\"
|
2020-02-19 16:58:06 +00:00
|
|
|
.\" $Id: curs_refresh.3x,v 1.21 2020/02/02 23:34:34 tom Exp $
|
1999-08-24 01:06:48 +00:00
|
|
|
.TH curs_refresh 3X ""
|
2020-02-07 08:36:41 +00:00
|
|
|
.ie \n(.g .ds `` \(lq
|
|
|
|
.el .ds `` ``
|
|
|
|
.ie \n(.g .ds '' \(rq
|
|
|
|
.el .ds '' ''
|
|
|
|
.de bP
|
|
|
|
.ie n .IP \(bu 4
|
|
|
|
.el .IP \(bu 2
|
|
|
|
..
|
2007-01-20 07:32:02 +00:00
|
|
|
.na
|
|
|
|
.hy 0
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH NAME
|
2000-07-03 09:24:12 +00:00
|
|
|
\fBdoupdate\fR,
|
|
|
|
\fBredrawwin\fR,
|
2002-05-21 05:30:25 +00:00
|
|
|
\fBrefresh\fR,
|
|
|
|
\fBwnoutrefresh\fR,
|
|
|
|
\fBwredrawln\fR,
|
2014-02-28 19:18:07 +00:00
|
|
|
\fBwrefresh\fR \- refresh \fBcurses\fR windows and lines
|
2007-01-20 07:32:02 +00:00
|
|
|
.ad
|
|
|
|
.hy
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH SYNOPSIS
|
|
|
|
\fB#include <curses.h>\fR
|
2007-01-20 07:32:02 +00:00
|
|
|
.sp
|
1999-08-24 01:06:48 +00:00
|
|
|
\fBint refresh(void);\fR
|
|
|
|
.br
|
|
|
|
\fBint wrefresh(WINDOW *win);\fR
|
|
|
|
.br
|
|
|
|
\fBint wnoutrefresh(WINDOW *win);\fR
|
|
|
|
.br
|
|
|
|
\fBint doupdate(void);\fR
|
|
|
|
.br
|
|
|
|
\fBint redrawwin(WINDOW *win);\fR
|
|
|
|
.br
|
|
|
|
\fBint wredrawln(WINDOW *win, int beg_line, int num_lines);\fR
|
|
|
|
.br
|
|
|
|
.SH DESCRIPTION
|
2020-02-07 08:36:41 +00:00
|
|
|
.SS refresh/wrefresh
|
1999-08-24 01:06:48 +00:00
|
|
|
The \fBrefresh\fR and \fBwrefresh\fR routines (or \fBwnoutrefresh\fR and
|
2020-02-07 08:36:41 +00:00
|
|
|
\fBdoupdate\fR) must be called to get actual output to the terminal,
|
|
|
|
as other routines merely manipulate data structures.
|
2002-05-21 05:30:25 +00:00
|
|
|
The routine \fBwrefresh\fR copies
|
2020-02-07 08:36:41 +00:00
|
|
|
the named window to the \fIphysical screen\fP,
|
|
|
|
taking into account what is already there to do optimizations.
|
2002-05-21 05:30:25 +00:00
|
|
|
The \fBrefresh\fR routine is the
|
|
|
|
same, using \fBstdscr\fR as the default window.
|
|
|
|
Unless \fBleaveok\fR has been
|
1999-08-24 01:06:48 +00:00
|
|
|
enabled, the physical cursor of the terminal is left at the location of the
|
|
|
|
cursor for that window.
|
2020-02-07 08:36:41 +00:00
|
|
|
.SS wnoutrefresh/doupdate
|
2007-01-20 07:32:02 +00:00
|
|
|
.PP
|
1999-08-24 01:06:48 +00:00
|
|
|
The \fBwnoutrefresh\fR and \fBdoupdate\fR routines allow multiple updates with
|
2002-05-21 05:30:25 +00:00
|
|
|
more efficiency than \fBwrefresh\fR alone.
|
|
|
|
In addition to all the window
|
1999-08-24 01:06:48 +00:00
|
|
|
structures, \fBcurses\fR keeps two data structures representing the terminal
|
2020-02-07 08:36:41 +00:00
|
|
|
screen:
|
|
|
|
.bP
|
|
|
|
a \fIphysical screen\fP, describing what is actually on the screen, and
|
|
|
|
.bP
|
|
|
|
a \fIvirtual screen\fP, describing what the programmer wants to have on the screen.
|
|
|
|
.PP
|
|
|
|
The routine \fBwrefresh\fR works by
|
|
|
|
.bP
|
|
|
|
first calling \fBwnoutrefresh\fR,
|
|
|
|
which copies the named window to the \fIvirtual screen\fP, and
|
|
|
|
.bP
|
|
|
|
then calling \fBdoupdate\fR, which compares
|
|
|
|
the \fIvirtual screen\fP to the \fIphysical screen\fP
|
|
|
|
and does the actual update.
|
2007-01-20 07:32:02 +00:00
|
|
|
.PP
|
2002-05-21 05:30:25 +00:00
|
|
|
If the programmer wishes to output several windows at once, a series
|
1999-08-24 01:06:48 +00:00
|
|
|
of calls to \fBwrefresh\fR results in alternating calls to \fBwnoutrefresh\fR
|
2002-05-21 05:30:25 +00:00
|
|
|
and \fBdoupdate\fR, causing several bursts of output to the screen.
|
|
|
|
By first
|
1999-08-24 01:06:48 +00:00
|
|
|
calling \fBwnoutrefresh\fR for each window, it is then possible to call
|
|
|
|
\fBdoupdate\fR once, resulting in only one burst of output, with fewer total
|
2002-05-21 05:30:25 +00:00
|
|
|
characters transmitted and less CPU time used.
|
2020-02-07 08:36:41 +00:00
|
|
|
.PP
|
2002-05-21 05:30:25 +00:00
|
|
|
If the \fIwin\fR argument to
|
2020-02-07 08:36:41 +00:00
|
|
|
\fBwrefresh\fR is the \fIphysical screen\fP
|
|
|
|
(i.e., the global variable \fBcurscr\fR),
|
|
|
|
the screen is immediately cleared and repainted from scratch.
|
2007-01-20 07:32:02 +00:00
|
|
|
.PP
|
2020-02-07 08:36:41 +00:00
|
|
|
The phrase \*(``copies the named window
|
|
|
|
to the virtual screen\*('' above is ambiguous.
|
1999-08-24 01:06:48 +00:00
|
|
|
What actually happens is that all \fItouched\fR (changed) lines in the window
|
2002-05-21 05:30:25 +00:00
|
|
|
are copied to the virtual screen.
|
|
|
|
This affects programs that use overlapping
|
1999-08-24 01:06:48 +00:00
|
|
|
windows; it means that if two windows overlap, you can refresh them in either
|
|
|
|
order and the overlap region will be modified only when it is explicitly
|
2002-05-21 05:30:25 +00:00
|
|
|
changed.
|
|
|
|
(But see the section on \fBPORTABILITY\fR below for a warning about
|
1999-08-24 01:06:48 +00:00
|
|
|
exploiting this behavior.)
|
2020-02-07 08:36:41 +00:00
|
|
|
.SS wredrawln/redrawwin
|
2007-01-20 07:32:02 +00:00
|
|
|
.PP
|
1999-08-24 01:06:48 +00:00
|
|
|
The \fBwredrawln\fR routine indicates to \fBcurses\fR that some screen lines
|
|
|
|
are corrupted and should be thrown away before anything is written over them.
|
|
|
|
It touches the indicated lines (marking them changed).
|
2020-02-07 08:36:41 +00:00
|
|
|
The routine \fBredrawwin\fR touches the entire window.
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH RETURN VALUE
|
|
|
|
Routines that return an integer return \fBERR\fR upon failure, and \fBOK\fR
|
|
|
|
(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful
|
|
|
|
completion.
|
2007-01-20 07:32:02 +00:00
|
|
|
.PP
|
|
|
|
X/Open does not define any error conditions.
|
|
|
|
In this implementation
|
2020-02-07 08:36:41 +00:00
|
|
|
.RS 3
|
2007-01-20 07:32:02 +00:00
|
|
|
.TP 5
|
|
|
|
\fBwnoutrefresh\fP
|
|
|
|
returns an error
|
|
|
|
if the window pointer is null, or
|
|
|
|
if the window is really a pad.
|
|
|
|
.TP 5
|
|
|
|
\fBwredrawln\fP
|
|
|
|
returns an error
|
|
|
|
if the associated call to \fBtouchln\fP returns an error.
|
|
|
|
.RE
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH NOTES
|
|
|
|
Note that \fBrefresh\fR and \fBredrawwin\fR may be macros.
|
|
|
|
.SH PORTABILITY
|
|
|
|
The XSI Curses standard, Issue 4 describes these functions.
|
2007-01-20 07:32:02 +00:00
|
|
|
.PP
|
2020-02-07 08:36:41 +00:00
|
|
|
Whether \fBwnoutrefresh\fR copies to the virtual screen the entire contents
|
1999-08-24 01:06:48 +00:00
|
|
|
of a window or just its changed portions has never been well-documented in
|
2002-05-21 05:30:25 +00:00
|
|
|
historic curses versions (including SVr4).
|
|
|
|
It might be unwise to rely on
|
1999-08-24 01:06:48 +00:00
|
|
|
either behavior in programs that might have to be linked with other curses
|
2002-05-21 05:30:25 +00:00
|
|
|
implementations.
|
2020-02-07 08:36:41 +00:00
|
|
|
Instead, you can do an explicit \fBtouchwin\fR before the
|
|
|
|
\fBwnoutrefresh\fR call to guarantee an entire-contents copy anywhere.
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH SEE ALSO
|
2014-02-28 19:18:07 +00:00
|
|
|
\fBcurses\fR(3X),
|
|
|
|
\fBcurs_outopts\fR(3X)
|
|
|
|
\fBcurs_variables\fR(3X).
|