libpayload: remove trailing whitespace and run dos2unix
[coreboot.git] / payloads / libpayload / curses / PDCurses-3.4 / pdcurses / scroll.c
1 /* Public Domain Curses */
2
3 #include <curspriv.h>
4
5 RCSID("$Id: scroll.c,v 1.36 2008/07/13 16:08:18 wmcbrine Exp $")
6
7 /*man-start**************************************************************
8
9   Name:                                                         scroll
10
11   Synopsis:
12         int scroll(WINDOW *win);
13         int scrl(int n);
14         int wscrl(WINDOW *win, int n);
15
16   Description:
17         scroll() causes the window to scroll up one line.  This involves
18         moving the lines in the window data strcture.
19
20         With a positive n, scrl() and wscrl() scroll the window up n
21         lines (line i + n becomes i); otherwise they scroll the window
22         down n lines.
23
24         For these functions to work, scrolling must be enabled via
25         scrollok(). Note also that scrolling is not allowed if the
26         supplied window is a pad.
27
28   Return Value:
29         All functions return OK on success and ERR on error.
30
31   Portability                                X/Open    BSD    SYS V
32         scroll                                  Y       Y       Y
33         scrl                                    Y       -      4.0
34         wscrl                                   Y       -      4.0
35
36 **man-end****************************************************************/
37
38 int wscrl(WINDOW *win, int n)
39 {
40     int i, l, dir, start, end;
41     chtype blank, *temp;
42
43     /* Check if window scrolls. Valid for window AND pad */
44
45     if (!win || !win->_scroll || !n)
46         return ERR;
47
48     blank = win->_bkgd;
49
50     if (n > 0)
51     {
52         start = win->_tmarg;
53         end = win->_bmarg;
54         dir = 1;
55     }
56     else
57     {
58         start = win->_bmarg;
59         end = win->_tmarg;
60         dir = -1;
61     }
62
63     for (l = 0; l < (n * dir); l++)
64     {
65         temp = win->_y[start];
66
67         /* re-arrange line pointers */
68
69         for (i = start; i != end; i += dir)
70             win->_y[i] = win->_y[i + dir];
71
72         win->_y[end] = temp;
73
74         /* make a blank line */
75
76         for (i = 0; i < win->_maxx; i++)
77             *temp++ = blank;
78     }
79
80     touchline(win, win->_tmarg, win->_bmarg - win->_tmarg + 1);
81
82     PDC_sync(win);
83     return OK;
84 }
85
86 int scrl(int n)
87 {
88     PDC_LOG(("scrl() - called\n"));
89
90     return wscrl(stdscr, n);
91 }
92
93 int scroll(WINDOW *win)
94 {
95     PDC_LOG(("scroll() - called\n"));
96
97     return wscrl(win, 1);
98 }