|
|
1.1 root 1: /* @(#) _dellines.c: 1.1 10/15/83 (1.21 2/11/83) */
2:
3: #include "curses.ext"
4:
5: char *tparm();
6:
7: extern int _outch();
8:
9: _dellines (n)
10: {
11: register int i;
12:
13: #ifdef DEBUG
14: if(outf) fprintf(outf, "_dellines(%d).\n", n);
15: #endif
16: if (lines - SP->phys_y <= n && (clr_eol && n == 1 || clr_eos)) {
17: tputs(clr_eos, n, _outch);
18: } else
19: if (scroll_forward && SP->phys_y == SP->des_top_mgn /* &&costSF<costDL */) {
20: /*
21: * Use forward scroll mode of the terminal, at
22: * the bottom of the window. Linefeed works
23: * too, since we only use it from the bottom line.
24: */
25: _setwind();
26: for (i = n; i > 0; i--) {
27: _pos(SP->des_bot_mgn, 0);
28: tputs(scroll_forward, 1, _outch);
29: SP->ml_above++;
30: }
31: if (SP->ml_above + lines > lines_of_memory)
32: SP->ml_above = lines_of_memory - lines;
33: } else if (parm_delete_line && (n>1 || *delete_line==0)) {
34: tputs(tparm(parm_delete_line, n, SP->phys_y), lines-SP->phys_y, _outch);
35: }
36: else if (change_scroll_region && *delete_line==0) {
37: /* vt100: fake delete_line by changing scrolling region */
38: /* Save since change_scroll_region homes cursor */
39: tputs(save_cursor, 1, _outch);
40: tputs(tparm(change_scroll_region,
41: SP->phys_y, SP->des_bot_mgn), 1, _outch);
42: /* go to bottom left corner.. */
43: tputs(tparm(cursor_address, SP->des_bot_mgn, 0), 1, _outch);
44: for (i=0; i<n; i++) /* .. and scroll n times */
45: tputs(scroll_forward, 1, _outch);
46: /* restore scrolling region */
47: tputs(tparm(change_scroll_region,
48: SP->des_top_mgn, SP->des_bot_mgn), 1, _outch);
49: tputs(restore_cursor, 1, _outch); /* put SP->curptr back */
50: SP->phys_top_mgn = SP->des_top_mgn;
51: SP->phys_bot_mgn = SP->des_bot_mgn;
52: }
53: else {
54: for (i = 0; i < n; i++)
55: tputs(delete_line, lines-SP->phys_y, _outch);
56: }
57: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.