pdcurses/deleteln.c

changeset 97
2d43f05b284c
equal deleted inserted replaced
96:5314ebdcb38d 97:2d43f05b284c
1 /* Public Domain Curses */
2
3 #include <curspriv.h>
4
5 RCSID("$Id: deleteln.c,v 1.35 2008/07/13 16:08:18 wmcbrine Exp $")
6
7 /*man-start**************************************************************
8
9 Name: deleteln
10
11 Synopsis:
12 int deleteln(void);
13 int wdeleteln(WINDOW *win);
14 int insdelln(int n);
15 int winsdelln(WINDOW *win, int n);
16 int insertln(void);
17 int winsertln(WINDOW *win);
18
19 int mvdeleteln(int y, int x);
20 int mvwdeleteln(WINDOW *win, int y, int x);
21 int mvinsertln(int y, int x);
22 int mvwinsertln(WINDOW *win, int y, int x);
23
24 Description:
25 With the deleteln() and wdeleteln() functions, the line under
26 the cursor in the window is deleted. All lines below the
27 current line are moved up one line. The bottom line of the
28 window is cleared. The cursor position does not change.
29
30 With the insertln() and winsertn() functions, a blank line is
31 inserted above the current line and the bottom line is lost.
32
33 mvdeleteln(), mvwdeleteln(), mvinsertln() and mvwinsertln()
34 allow moving the cursor and inserting/deleting in one call.
35
36 Return Value:
37 All functions return OK on success and ERR on error.
38
39 Portability X/Open BSD SYS V
40 deleteln Y Y Y
41 wdeleteln Y Y Y
42 mvdeleteln - - -
43 mvwdeleteln - - -
44 insdelln Y - 4.0
45 winsdelln Y - 4.0
46 insertln Y Y Y
47 winsertln Y Y Y
48 mvinsertln - - -
49 mvwinsertln - - -
50
51 **man-end****************************************************************/
52
53 int wdeleteln(WINDOW *win)
54 {
55 chtype blank, *temp, *ptr;
56 int y;
57
58 PDC_LOG(("wdeleteln() - called\n"));
59
60 if (!win)
61 return ERR;
62
63 /* wrs (4/10/93) account for window background */
64
65 blank = win->_bkgd;
66
67 temp = win->_y[win->_cury];
68
69 for (y = win->_cury; y < win->_bmarg; y++)
70 {
71 win->_y[y] = win->_y[y + 1];
72 win->_firstch[y] = 0;
73 win->_lastch[y] = win->_maxx - 1;
74 }
75
76 for (ptr = temp; (ptr - temp < win->_maxx); ptr++)
77 *ptr = blank; /* make a blank line */
78
79 if (win->_cury <= win->_bmarg)
80 {
81 win->_firstch[win->_bmarg] = 0;
82 win->_lastch[win->_bmarg] = win->_maxx - 1;
83 win->_y[win->_bmarg] = temp;
84 }
85
86 return OK;
87 }
88
89 int deleteln(void)
90 {
91 PDC_LOG(("deleteln() - called\n"));
92
93 return wdeleteln(stdscr);
94 }
95
96 int mvdeleteln(int y, int x)
97 {
98 PDC_LOG(("mvdeleteln() - called\n"));
99
100 if (move(y, x) == ERR)
101 return ERR;
102
103 return wdeleteln(stdscr);
104 }
105
106 int mvwdeleteln(WINDOW *win, int y, int x)
107 {
108 PDC_LOG(("mvwdeleteln() - called\n"));
109
110 if (wmove(win, y, x) == ERR)
111 return ERR;
112
113 return wdeleteln(win);
114 }
115
116 int winsdelln(WINDOW *win, int n)
117 {
118 int i;
119
120 PDC_LOG(("winsdelln() - called\n"));
121
122 if (!win)
123 return ERR;
124
125 if (n > 0)
126 {
127 for (i = 0; i < n; i++)
128 if (winsertln(win) == ERR)
129 return ERR;
130 }
131 else if (n < 0)
132 {
133 n = -n;
134 for (i = 0; i < n; i++)
135 if (wdeleteln(win) == ERR)
136 return ERR;
137 }
138
139 return OK;
140 }
141
142 int insdelln(int n)
143 {
144 PDC_LOG(("insdelln() - called\n"));
145
146 return winsdelln(stdscr, n);
147 }
148
149 int winsertln(WINDOW *win)
150 {
151 chtype blank, *temp, *end;
152 int y;
153
154 PDC_LOG(("winsertln() - called\n"));
155
156 if (!win)
157 return ERR;
158
159 /* wrs (4/10/93) account for window background */
160
161 blank = win->_bkgd;
162
163 temp = win->_y[win->_maxy - 1];
164
165 for (y = win->_maxy - 1; y > win->_cury; y--)
166 {
167 win->_y[y] = win->_y[y - 1];
168 win->_firstch[y] = 0;
169 win->_lastch[y] = win->_maxx - 1;
170 }
171
172 win->_y[win->_cury] = temp;
173
174 for (end = &temp[win->_maxx - 1]; temp <= end; temp++)
175 *temp = blank;
176
177 win->_firstch[win->_cury] = 0;
178 win->_lastch[win->_cury] = win->_maxx - 1;
179
180 return OK;
181 }
182
183 int insertln(void)
184 {
185 PDC_LOG(("insertln() - called\n"));
186
187 return winsertln(stdscr);
188 }
189
190 int mvinsertln(int y, int x)
191 {
192 PDC_LOG(("mvinsertln() - called\n"));
193
194 if (move(y, x) == ERR)
195 return ERR;
196
197 return winsertln(stdscr);
198 }
199
200 int mvwinsertln(WINDOW *win, int y, int x)
201 {
202 PDC_LOG(("mvwinsertln() - called\n"));
203
204 if (wmove(win, y, x) == ERR)
205 return ERR;
206
207 return winsertln(win);
208 }

mercurial