curses 1.4.6 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/push_gem.yml +6 -4
- data/README.md +8 -1
- data/curses.gemspec +2 -2
- data/ext/curses/curses.c +188 -12
- data/ext/curses/extconf.rb +3 -2
- data/lib/curses.rb +7 -0
- data/sample/attr_demo.rb +4 -2
- data/sample/screen.rb +9 -0
- data/vendor/PDCurses/.gitignore +47 -0
- data/vendor/PDCurses/.travis.yml +49 -0
- data/vendor/PDCurses/CMakeLists.txt +68 -0
- data/vendor/PDCurses/HISTORY.md +2036 -0
- data/vendor/PDCurses/IMPLEMNT.md +327 -0
- data/vendor/PDCurses/Makefile +27 -0
- data/vendor/PDCurses/README.md +77 -0
- data/vendor/PDCurses/acs_defs.h +265 -0
- data/vendor/PDCurses/appveyor.yml +218 -0
- data/vendor/PDCurses/cmake/README.md +71 -0
- data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
- data/vendor/PDCurses/cmake/build_options.cmake +25 -0
- data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
- data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
- data/vendor/PDCurses/cmake/get_version.cmake +17 -0
- data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
- data/vendor/PDCurses/cmake/project_common.cmake +121 -0
- data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
- data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
- data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
- data/vendor/PDCurses/cmake/version.in.cmake +73 -0
- data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
- data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
- data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
- data/vendor/PDCurses/curses.h +1846 -0
- data/vendor/PDCurses/curspriv.h +134 -0
- data/vendor/PDCurses/demos/README.md +25 -0
- data/vendor/PDCurses/demos/firework.c +144 -0
- data/vendor/PDCurses/demos/newtest.c +581 -0
- data/vendor/PDCurses/demos/ozdemo.c +447 -0
- data/vendor/PDCurses/demos/ptest.c +283 -0
- data/vendor/PDCurses/demos/rain.c +157 -0
- data/vendor/PDCurses/demos/testcurs.c +1607 -0
- data/vendor/PDCurses/demos/tui.c +1048 -0
- data/vendor/PDCurses/demos/tui.h +65 -0
- data/vendor/PDCurses/demos/tuidemo.c +233 -0
- data/vendor/PDCurses/demos/version.c +61 -0
- data/vendor/PDCurses/demos/worm.c +432 -0
- data/vendor/PDCurses/demos/xmas.c +955 -0
- data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
- data/vendor/PDCurses/dos/Makefile +105 -0
- data/vendor/PDCurses/dos/Makefile.bcc +83 -0
- data/vendor/PDCurses/dos/Makefile.dmc +257 -0
- data/vendor/PDCurses/dos/Makefile.msc +113 -0
- data/vendor/PDCurses/dos/Makefile.wcc +107 -0
- data/vendor/PDCurses/dos/README.md +51 -0
- data/vendor/PDCurses/dos/bccdos.lrf +9 -0
- data/vendor/PDCurses/dos/mscdos.lrf +50 -0
- data/vendor/PDCurses/dos/pdcclip.c +132 -0
- data/vendor/PDCurses/dos/pdcdisp.c +135 -0
- data/vendor/PDCurses/dos/pdcdos.h +194 -0
- data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
- data/vendor/PDCurses/dos/pdckbd.c +513 -0
- data/vendor/PDCurses/dos/pdcscrn.c +785 -0
- data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
- data/vendor/PDCurses/dos/pdcutil.c +212 -0
- data/vendor/PDCurses/libobjs.mif +26 -0
- data/vendor/PDCurses/makedist.mif +20 -0
- data/vendor/PDCurses/man/Makefile +37 -0
- data/vendor/PDCurses/man/README.md +21 -0
- data/vendor/PDCurses/man/intro.md +361 -0
- data/vendor/PDCurses/man/manext.c +119 -0
- data/vendor/PDCurses/man/sdl.md +152 -0
- data/vendor/PDCurses/man/sdl2.md +58 -0
- data/vendor/PDCurses/man/x11.md +407 -0
- data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
- data/vendor/PDCurses/ncurses/README.md +26 -0
- data/vendor/PDCurses/ncurses/makefile +29 -0
- data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
- data/vendor/PDCurses/os2/Makefile +132 -0
- data/vendor/PDCurses/os2/Makefile.bcc +90 -0
- data/vendor/PDCurses/os2/Makefile.wcc +43 -0
- data/vendor/PDCurses/os2/README.md +43 -0
- data/vendor/PDCurses/os2/iccos2.lrf +50 -0
- data/vendor/PDCurses/os2/iccos2.mak +256 -0
- data/vendor/PDCurses/os2/pdcclip.c +188 -0
- data/vendor/PDCurses/os2/pdcdisp.c +93 -0
- data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
- data/vendor/PDCurses/os2/pdckbd.c +521 -0
- data/vendor/PDCurses/os2/pdcos2.h +55 -0
- data/vendor/PDCurses/os2/pdcscrn.c +449 -0
- data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
- data/vendor/PDCurses/os2/pdcutil.c +52 -0
- data/vendor/PDCurses/panel.h +56 -0
- data/vendor/PDCurses/pdcurses/README.md +25 -0
- data/vendor/PDCurses/pdcurses/addch.c +693 -0
- data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
- data/vendor/PDCurses/pdcurses/addstr.c +240 -0
- data/vendor/PDCurses/pdcurses/attr.c +359 -0
- data/vendor/PDCurses/pdcurses/beep.c +68 -0
- data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
- data/vendor/PDCurses/pdcurses/border.c +411 -0
- data/vendor/PDCurses/pdcurses/clear.c +159 -0
- data/vendor/PDCurses/pdcurses/color.c +298 -0
- data/vendor/PDCurses/pdcurses/debug.c +109 -0
- data/vendor/PDCurses/pdcurses/delch.c +96 -0
- data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
- data/vendor/PDCurses/pdcurses/deprec.c +27 -0
- data/vendor/PDCurses/pdcurses/getch.c +417 -0
- data/vendor/PDCurses/pdcurses/getstr.c +474 -0
- data/vendor/PDCurses/pdcurses/getyx.c +139 -0
- data/vendor/PDCurses/pdcurses/inch.c +127 -0
- data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
- data/vendor/PDCurses/pdcurses/initscr.c +367 -0
- data/vendor/PDCurses/pdcurses/inopts.c +324 -0
- data/vendor/PDCurses/pdcurses/insch.c +271 -0
- data/vendor/PDCurses/pdcurses/insstr.c +264 -0
- data/vendor/PDCurses/pdcurses/instr.c +246 -0
- data/vendor/PDCurses/pdcurses/kernel.c +259 -0
- data/vendor/PDCurses/pdcurses/keyname.c +157 -0
- data/vendor/PDCurses/pdcurses/mouse.c +438 -0
- data/vendor/PDCurses/pdcurses/move.c +57 -0
- data/vendor/PDCurses/pdcurses/outopts.c +159 -0
- data/vendor/PDCurses/pdcurses/overlay.c +214 -0
- data/vendor/PDCurses/pdcurses/pad.c +260 -0
- data/vendor/PDCurses/pdcurses/panel.c +633 -0
- data/vendor/PDCurses/pdcurses/printw.c +126 -0
- data/vendor/PDCurses/pdcurses/refresh.c +279 -0
- data/vendor/PDCurses/pdcurses/scanw.c +578 -0
- data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
- data/vendor/PDCurses/pdcurses/scroll.c +101 -0
- data/vendor/PDCurses/pdcurses/slk.c +591 -0
- data/vendor/PDCurses/pdcurses/termattr.c +182 -0
- data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
- data/vendor/PDCurses/pdcurses/touch.c +163 -0
- data/vendor/PDCurses/pdcurses/util.c +312 -0
- data/vendor/PDCurses/pdcurses/window.c +569 -0
- data/vendor/PDCurses/sdl1/Makefile +129 -0
- data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
- data/vendor/PDCurses/sdl1/README.md +31 -0
- data/vendor/PDCurses/sdl1/deffont.h +385 -0
- data/vendor/PDCurses/sdl1/deficon.h +23 -0
- data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
- data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
- data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
- data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
- data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
- data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
- data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
- data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
- data/vendor/PDCurses/sdl1/sdltest.c +79 -0
- data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
- data/vendor/PDCurses/sdl2/Makefile +135 -0
- data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
- data/vendor/PDCurses/sdl2/README.md +34 -0
- data/vendor/PDCurses/sdl2/deffont.h +385 -0
- data/vendor/PDCurses/sdl2/deficon.h +23 -0
- data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
- data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
- data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
- data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
- data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
- data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
- data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
- data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
- data/vendor/PDCurses/sdl2/sdltest.c +81 -0
- data/vendor/PDCurses/term.h +48 -0
- data/vendor/PDCurses/version.mif +7 -0
- data/vendor/PDCurses/vt/CMakeLists.txt +28 -0
- data/vendor/PDCurses/vt/Makefile +135 -0
- data/vendor/PDCurses/vt/Makefile.bcc +111 -0
- data/vendor/PDCurses/vt/Makefile.dmc +258 -0
- data/vendor/PDCurses/vt/Makefile.vc +144 -0
- data/vendor/PDCurses/vt/Makefile.wcc +107 -0
- data/vendor/PDCurses/vt/README.md +64 -0
- data/vendor/PDCurses/vt/pdcclip.c +20 -0
- data/vendor/PDCurses/vt/pdcdisp.c +284 -0
- data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
- data/vendor/PDCurses/vt/pdckbd.c +394 -0
- data/vendor/PDCurses/vt/pdcscrn.c +434 -0
- data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
- data/vendor/PDCurses/vt/pdcutil.c +43 -0
- data/vendor/PDCurses/vt/pdcvt.h +16 -0
- data/vendor/PDCurses/watcom.mif +68 -0
- data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
- data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
- data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
- data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
- data/vendor/PDCurses/wincon/Makefile.mng +176 -0
- data/vendor/PDCurses/wincon/Makefile.vc +144 -0
- data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
- data/vendor/PDCurses/wincon/README.md +85 -0
- data/vendor/PDCurses/wincon/pdcclip.c +174 -0
- data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
- data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
- data/vendor/PDCurses/wincon/pdckbd.c +786 -0
- data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
- data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
- data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
- data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
- data/vendor/PDCurses/wincon/pdcutil.c +41 -0
- data/vendor/PDCurses/wincon/pdcwin.h +31 -0
- data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
- data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
- data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
- data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
- data/vendor/PDCurses/wingui/Makefile.mng +171 -0
- data/vendor/PDCurses/wingui/Makefile.vc +144 -0
- data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
- data/vendor/PDCurses/wingui/README.md +93 -0
- data/vendor/PDCurses/wingui/pdcclip.c +174 -0
- data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
- data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
- data/vendor/PDCurses/wingui/pdckbd.c +143 -0
- data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
- data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
- data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
- data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
- data/vendor/PDCurses/wingui/pdcutil.c +61 -0
- data/vendor/PDCurses/wingui/pdcwin.h +122 -0
- data/vendor/PDCurses/x11/Makefile.in +754 -0
- data/vendor/PDCurses/x11/PDCurses.spec +82 -0
- data/vendor/PDCurses/x11/README.md +62 -0
- data/vendor/PDCurses/x11/ScrollBox.c +319 -0
- data/vendor/PDCurses/x11/ScrollBox.h +51 -0
- data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
- data/vendor/PDCurses/x11/aclocal.m4 +994 -0
- data/vendor/PDCurses/x11/big_icon.xbm +46 -0
- data/vendor/PDCurses/x11/compose.h +201 -0
- data/vendor/PDCurses/x11/config.guess +1500 -0
- data/vendor/PDCurses/x11/config.h.in +100 -0
- data/vendor/PDCurses/x11/config.sub +1616 -0
- data/vendor/PDCurses/x11/configure +6700 -0
- data/vendor/PDCurses/x11/configure.ac +295 -0
- data/vendor/PDCurses/x11/debian/changelog +6 -0
- data/vendor/PDCurses/x11/debian/compat +1 -0
- data/vendor/PDCurses/x11/debian/control +11 -0
- data/vendor/PDCurses/x11/debian/copyright +27 -0
- data/vendor/PDCurses/x11/debian/rules +98 -0
- data/vendor/PDCurses/x11/install-sh +253 -0
- data/vendor/PDCurses/x11/little_icon.xbm +14 -0
- data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
- data/vendor/PDCurses/x11/pdcclip.c +173 -0
- data/vendor/PDCurses/x11/pdcdisp.c +85 -0
- data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
- data/vendor/PDCurses/x11/pdckbd.c +104 -0
- data/vendor/PDCurses/x11/pdcscrn.c +258 -0
- data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
- data/vendor/PDCurses/x11/pdcutil.c +52 -0
- data/vendor/PDCurses/x11/pdcx11.c +316 -0
- data/vendor/PDCurses/x11/pdcx11.h +191 -0
- data/vendor/PDCurses/x11/sb.c +155 -0
- data/vendor/PDCurses/x11/x11.c +3686 -0
- data/vendor/PDCurses/x11/xcurses-config.in +81 -0
- metadata +249 -8
@@ -0,0 +1,213 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include <curspriv.h>
|
4
|
+
|
5
|
+
/*man-start**************************************************************
|
6
|
+
|
7
|
+
scr_dump
|
8
|
+
--------
|
9
|
+
|
10
|
+
### Synopsis
|
11
|
+
|
12
|
+
int putwin(WINDOW *win, FILE *filep);
|
13
|
+
WINDOW *getwin(FILE *filep);
|
14
|
+
int scr_dump(const char *filename);
|
15
|
+
int scr_init(const char *filename);
|
16
|
+
int scr_restore(const char *filename);
|
17
|
+
int scr_set(const char *filename);
|
18
|
+
|
19
|
+
### Description
|
20
|
+
|
21
|
+
getwin() reads window-related data previously stored in a file
|
22
|
+
by putwin(). It then creates and initialises a new window using
|
23
|
+
that data.
|
24
|
+
|
25
|
+
putwin() writes all data associated with a window into a file,
|
26
|
+
using an unspecified format. This information can be retrieved
|
27
|
+
later using getwin().
|
28
|
+
|
29
|
+
scr_dump() writes the current contents of the virtual screen to
|
30
|
+
the file named by filename in an unspecified format.
|
31
|
+
|
32
|
+
scr_restore() function sets the virtual screen to the contents
|
33
|
+
of the file named by filename, which must have been written
|
34
|
+
using scr_dump(). The next refresh operation restores the screen
|
35
|
+
to the way it looked in the dump file.
|
36
|
+
|
37
|
+
In PDCurses, scr_init() does nothing, and scr_set() is a synonym
|
38
|
+
for scr_restore(). Also, scr_dump() and scr_restore() save and
|
39
|
+
load from curscr. This differs from some other implementations,
|
40
|
+
where scr_init() works with curscr, and scr_restore() works with
|
41
|
+
newscr; but the effect should be the same. (PDCurses has no
|
42
|
+
newscr.)
|
43
|
+
|
44
|
+
### Return Value
|
45
|
+
|
46
|
+
On successful completion, getwin() returns a pointer to the
|
47
|
+
window it created. Otherwise, it returns a null pointer. Other
|
48
|
+
functions return OK or ERR.
|
49
|
+
|
50
|
+
### Portability
|
51
|
+
X/Open BSD SYS V
|
52
|
+
putwin Y
|
53
|
+
getwin Y
|
54
|
+
scr_dump Y
|
55
|
+
scr_init Y
|
56
|
+
scr_restore Y
|
57
|
+
scr_set Y
|
58
|
+
|
59
|
+
**man-end****************************************************************/
|
60
|
+
|
61
|
+
#include <stdlib.h>
|
62
|
+
#include <string.h>
|
63
|
+
|
64
|
+
#define DUMPVER 1 /* Should be updated whenever the WINDOW struct is
|
65
|
+
changed */
|
66
|
+
|
67
|
+
int putwin(WINDOW *win, FILE *filep)
|
68
|
+
{
|
69
|
+
static const char *marker = "PDC";
|
70
|
+
static const unsigned char version = DUMPVER;
|
71
|
+
|
72
|
+
PDC_LOG(("putwin() - called\n"));
|
73
|
+
|
74
|
+
/* write the marker and the WINDOW struct */
|
75
|
+
|
76
|
+
if (filep && fwrite(marker, strlen(marker), 1, filep)
|
77
|
+
&& fwrite(&version, 1, 1, filep)
|
78
|
+
&& fwrite(win, sizeof(WINDOW), 1, filep))
|
79
|
+
{
|
80
|
+
int i;
|
81
|
+
|
82
|
+
/* write each line */
|
83
|
+
|
84
|
+
for (i = 0; i < win->_maxy && win->_y[i]; i++)
|
85
|
+
if (!fwrite(win->_y[i], win->_maxx * sizeof(chtype), 1, filep))
|
86
|
+
return ERR;
|
87
|
+
|
88
|
+
return OK;
|
89
|
+
}
|
90
|
+
|
91
|
+
return ERR;
|
92
|
+
}
|
93
|
+
|
94
|
+
WINDOW *getwin(FILE *filep)
|
95
|
+
{
|
96
|
+
WINDOW *win;
|
97
|
+
char marker[4];
|
98
|
+
int i, nlines, ncols;
|
99
|
+
|
100
|
+
PDC_LOG(("getwin() - called\n"));
|
101
|
+
|
102
|
+
if ( !(win = malloc(sizeof(WINDOW))) )
|
103
|
+
return (WINDOW *)NULL;
|
104
|
+
|
105
|
+
/* check for the marker, and load the WINDOW struct */
|
106
|
+
|
107
|
+
if (!filep || !fread(marker, 4, 1, filep) || strncmp(marker, "PDC", 3)
|
108
|
+
|| marker[3] != DUMPVER || !fread(win, sizeof(WINDOW), 1, filep))
|
109
|
+
{
|
110
|
+
free(win);
|
111
|
+
return (WINDOW *)NULL;
|
112
|
+
}
|
113
|
+
|
114
|
+
nlines = win->_maxy;
|
115
|
+
ncols = win->_maxx;
|
116
|
+
|
117
|
+
/* allocate the line pointer array */
|
118
|
+
|
119
|
+
if ( !(win->_y = malloc(nlines * sizeof(chtype *))) )
|
120
|
+
{
|
121
|
+
free(win);
|
122
|
+
return (WINDOW *)NULL;
|
123
|
+
}
|
124
|
+
|
125
|
+
/* allocate the minchng and maxchng arrays */
|
126
|
+
|
127
|
+
if ( !(win->_firstch = malloc(nlines * sizeof(int))) )
|
128
|
+
{
|
129
|
+
free(win->_y);
|
130
|
+
free(win);
|
131
|
+
return (WINDOW *)NULL;
|
132
|
+
}
|
133
|
+
|
134
|
+
if ( !(win->_lastch = malloc(nlines * sizeof(int))) )
|
135
|
+
{
|
136
|
+
free(win->_firstch);
|
137
|
+
free(win->_y);
|
138
|
+
free(win);
|
139
|
+
return (WINDOW *)NULL;
|
140
|
+
}
|
141
|
+
|
142
|
+
/* allocate the lines */
|
143
|
+
|
144
|
+
if ( !(win = PDC_makelines(win)) )
|
145
|
+
return (WINDOW *)NULL;
|
146
|
+
|
147
|
+
/* read them */
|
148
|
+
|
149
|
+
for (i = 0; i < nlines; i++)
|
150
|
+
{
|
151
|
+
if (!fread(win->_y[i], ncols * sizeof(chtype), 1, filep))
|
152
|
+
{
|
153
|
+
delwin(win);
|
154
|
+
return (WINDOW *)NULL;
|
155
|
+
}
|
156
|
+
}
|
157
|
+
|
158
|
+
touchwin(win);
|
159
|
+
|
160
|
+
return win;
|
161
|
+
}
|
162
|
+
|
163
|
+
int scr_dump(const char *filename)
|
164
|
+
{
|
165
|
+
FILE *filep;
|
166
|
+
|
167
|
+
PDC_LOG(("scr_dump() - called: filename %s\n", filename));
|
168
|
+
|
169
|
+
if (filename && (filep = fopen(filename, "wb")) != NULL)
|
170
|
+
{
|
171
|
+
int result = putwin(curscr, filep);
|
172
|
+
fclose(filep);
|
173
|
+
return result;
|
174
|
+
}
|
175
|
+
|
176
|
+
return ERR;
|
177
|
+
}
|
178
|
+
|
179
|
+
int scr_init(const char *filename)
|
180
|
+
{
|
181
|
+
PDC_LOG(("scr_init() - called: filename %s\n", filename));
|
182
|
+
|
183
|
+
return OK;
|
184
|
+
}
|
185
|
+
|
186
|
+
int scr_restore(const char *filename)
|
187
|
+
{
|
188
|
+
FILE *filep;
|
189
|
+
|
190
|
+
PDC_LOG(("scr_restore() - called: filename %s\n", filename));
|
191
|
+
|
192
|
+
if (filename && (filep = fopen(filename, "rb")) != NULL)
|
193
|
+
{
|
194
|
+
WINDOW *replacement = getwin(filep);
|
195
|
+
fclose(filep);
|
196
|
+
|
197
|
+
if (replacement)
|
198
|
+
{
|
199
|
+
int result = overwrite(replacement, curscr);
|
200
|
+
delwin(replacement);
|
201
|
+
return result;
|
202
|
+
}
|
203
|
+
}
|
204
|
+
|
205
|
+
return ERR;
|
206
|
+
}
|
207
|
+
|
208
|
+
int scr_set(const char *filename)
|
209
|
+
{
|
210
|
+
PDC_LOG(("scr_set() - called: filename %s\n", filename));
|
211
|
+
|
212
|
+
return scr_restore(filename);
|
213
|
+
}
|
@@ -0,0 +1,101 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include <curspriv.h>
|
4
|
+
|
5
|
+
/*man-start**************************************************************
|
6
|
+
|
7
|
+
scroll
|
8
|
+
------
|
9
|
+
|
10
|
+
### Synopsis
|
11
|
+
|
12
|
+
int scroll(WINDOW *win);
|
13
|
+
int scrl(int n);
|
14
|
+
int wscrl(WINDOW *win, int n);
|
15
|
+
|
16
|
+
### Description
|
17
|
+
|
18
|
+
scroll() causes the window to scroll up one line. This involves
|
19
|
+
moving the lines in the window data strcture.
|
20
|
+
|
21
|
+
With a positive n, scrl() and wscrl() scroll the window up n
|
22
|
+
lines (line i + n becomes i); otherwise they scroll the window
|
23
|
+
down n lines.
|
24
|
+
|
25
|
+
For these functions to work, scrolling must be enabled via
|
26
|
+
scrollok(). Note also that scrolling is not allowed if the
|
27
|
+
supplied window is a pad.
|
28
|
+
|
29
|
+
### Return Value
|
30
|
+
|
31
|
+
All functions return OK on success and ERR on error.
|
32
|
+
|
33
|
+
### Portability
|
34
|
+
X/Open BSD SYS V
|
35
|
+
scroll Y Y Y
|
36
|
+
scrl Y - 4.0
|
37
|
+
wscrl Y - 4.0
|
38
|
+
|
39
|
+
**man-end****************************************************************/
|
40
|
+
|
41
|
+
int wscrl(WINDOW *win, int n)
|
42
|
+
{
|
43
|
+
int i, l, dir, start, end;
|
44
|
+
chtype blank, *temp;
|
45
|
+
|
46
|
+
/* Check if window scrolls. Valid for window AND pad */
|
47
|
+
|
48
|
+
if (!win || !win->_scroll || !n)
|
49
|
+
return ERR;
|
50
|
+
|
51
|
+
blank = win->_bkgd;
|
52
|
+
|
53
|
+
if (n > 0)
|
54
|
+
{
|
55
|
+
start = win->_tmarg;
|
56
|
+
end = win->_bmarg;
|
57
|
+
dir = 1;
|
58
|
+
}
|
59
|
+
else
|
60
|
+
{
|
61
|
+
start = win->_bmarg;
|
62
|
+
end = win->_tmarg;
|
63
|
+
dir = -1;
|
64
|
+
}
|
65
|
+
|
66
|
+
for (l = 0; l < (n * dir); l++)
|
67
|
+
{
|
68
|
+
temp = win->_y[start];
|
69
|
+
|
70
|
+
/* re-arrange line pointers */
|
71
|
+
|
72
|
+
for (i = start; i != end; i += dir)
|
73
|
+
win->_y[i] = win->_y[i + dir];
|
74
|
+
|
75
|
+
win->_y[end] = temp;
|
76
|
+
|
77
|
+
/* make a blank line */
|
78
|
+
|
79
|
+
for (i = 0; i < win->_maxx; i++)
|
80
|
+
*temp++ = blank;
|
81
|
+
}
|
82
|
+
|
83
|
+
touchline(win, win->_tmarg, win->_bmarg - win->_tmarg + 1);
|
84
|
+
|
85
|
+
PDC_sync(win);
|
86
|
+
return OK;
|
87
|
+
}
|
88
|
+
|
89
|
+
int scrl(int n)
|
90
|
+
{
|
91
|
+
PDC_LOG(("scrl() - called\n"));
|
92
|
+
|
93
|
+
return wscrl(stdscr, n);
|
94
|
+
}
|
95
|
+
|
96
|
+
int scroll(WINDOW *win)
|
97
|
+
{
|
98
|
+
PDC_LOG(("scroll() - called\n"));
|
99
|
+
|
100
|
+
return wscrl(win, 1);
|
101
|
+
}
|