| Main index | Section 3 | 日本語 | Options |
#include <curses.h>WINDOW *newpad(int nlines, int ncols); WINDOW *subpad(WINDOW *parent, int nlines, int ncols, int begin_y, int begin_x);
int prefresh(WINDOW *pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol); int pnoutrefresh(WINDOW *pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol);
int pechochar(WINDOW *pad, chtype ch); int pecho_wchar(WINDOW *pad, const cchar_t *wch);
Pads cannot be refreshed with wrefresh(3X); use prefresh or pnoutrefresh instead.
| &#187; | pminrow and pmincol specify the upper left-hand corner of a rectangular view of the pad. |
| &#187; | sminrow, smincol, smaxrow, and smaxcol specify the vertices of the rectangle to be displayed on the screen. |
Functions that return pointers return NULL on error, and set errno to ENOMEM.
X/Open Curses does not specify any error conditions. In this implementation
prefresh and pnoutrefresh return an error if the window pointer is null, or if the window is not really a pad or if the area to refresh extends off-screen or if the minimum coordinates are greater than the maximum. pechochar returns an error if the window is not really a pad, and the associated call to wechochar returns an error. pecho_wchar returns an error if the window is not really a pad, and the associated call to wecho_wchar returns an error.
SVr2 curses (1986) provided the newpad and related functions, documenting them in a single line each. SVr3 (1987) provided more extensive documentation.
The documentation does not explain the term pad. However, the Apollo Aegis workstation operating system supported a graphical pad feature:
| &#187; | These graphical pads could be much larger than the computer's display. |
| &#187; | The read-only output from a command could be scrolled back to inspect, and select text from the pad. |
X/Open Curses, Issue 4 describes these functions, without significant change from the SVr3 documentation. It describes no error conditions. The behavior of subpad if the parent window is not a pad is undocumented, and is not checked by the vendor Unix implementations:
| &#187; | SVr4 curses sets a flag in the WINDOW structure in newpad which tells if the window is a pad. |
| However, it uses this information only in waddch (to decide if it should call wrefresh) and wscrl (to avoid scrolling a pad), and does not check in wrefresh to ensure that the pad is refreshed properly. | |
| &#187; | Solaris xcurses checks whether a window is a pad in wnoutrefresh, returning ERR in that case. |
| However, it only sets the flag for subwindows if the parent window is a pad. Its newpad function does not set this information. Consequently, the check will never fail. | |
| It makes no comparable check in pnoutrefresh, though interestingly enough, a comment in the source code states that the lack of a check was an MKS extension. | |
| &#187; | NetBSD 7 curses sets a flag in the WINDOW structure for newpad and subpad, using this to help with the distinction between wnoutrefresh and pnoutrefresh. |
| It does not check for the case where a subwindow is created in a pad using subwin or derwin. | |
| The dupwin function returns a regular window when duplicating a pad. Likewise, getwin always returns a window, even if the saved data was from a pad. | |
| &#187; | sets a flag in the WINDOW structure for newpad and subpad, |
| &#187; | allows a subwin or derwin call to succeed having a pad parent by forcing the subwindow to be a pad, |
| &#187; | checks in both wnoutrefresh and pnoutrefresh to ensure that pads and windows are handled distinctly, and |
| &#187; | ensures that dupwin and getwin treat pads versus windows consistently. |
| 2024-04-27 | curs_pad (3X) | ncurses 6.5 |
| Main index | Section 3 | 日本語 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.
| “ | If it wasn't for C, we'd be using BASI, PASAL and OBOL | ” |