- register i;
- char noleft, noright, notop, nobot;
- char ulc, top, urc, left, right, llc, bottom, lrc;
- struct ww_dim oldsize;
- Pos bstart;
-
- oldsize = w->ww_w;
- w->ww_w = w->ww_i = w->ww_o;
-
- if (w->ww_o.col == 0)
- noleft = 1;
- else {
- noleft = 0;
- w->ww_i.ncol--;
- w->ww_i.col++;
- }
- /*
- if (w->ww_o.row == 0)
- notop++;
- else
- */
- {
- notop = 0;
- w->ww_i.nrow--;
- w->ww_i.row++;
- }
- if (w->ww_o.col + w->ww_o.ncol == wwncol) {
- noright = 1;
- /*
- } else if (wwcheckframe(LEFT, w->ww_o.col + w->ww_o.ncol - 1,
- w->ww_o.row, w->ww_o.row + w->ww_o.nrow - 1, wwhead)) {
- noright = 1;
- w->ww_w.ncol--;
- w->ww_i.ncol--;
- } else if (wwcheckframe(LEFT, w->ww_o.col + w->ww_o.ncol,
- w->ww_o.row, w->ww_o.row + w->ww_o.nrow - 1, wwhead)) {
- XXXXX
- w->ww_w.ncol--;
- */
- } else {
- noright = 0;
- w->ww_i.ncol--;
- }
- if (w->ww_o.row + w->ww_o.nrow == wwnrow) {
- nobot = 1;
- } else if (wwcheckframe(TOP, w->ww_o.row + w->ww_o.nrow - 1,
- w->ww_o.col, w->ww_o.col + w->ww_o.ncol - 1, wwhead)) {
- nobot = 1;
- w->ww_w.nrow--;
- w->ww_i.nrow--;
- /*
- } else if (wwcheckframe(TOP, w->ww_o.row + w->ww_o.nrow,
- w->ww_o.col, w->ww_o.col + w->ww_o.ncol - 1, wwhead)) {
- XXXXX
- ww->ww_i.nrow--;
- */
- } else {
- nobot = 0;
- w->ww_i.nrow--;
- }
-
- if (oldsize.nrow != w->ww_w.nrow || oldsize.ncol != w->ww_w.ncol) {
- bstart = w->ww_win->w_bstart;
- if (Wsize(w->ww_win, w->ww_w.ncol, w->ww_w.nrow) != 0) {
- wwprintf(w, "wwframe: Wsize(%d, %d) failed.\r\n",
- w->ww_w.ncol, w->ww_w.nrow);
- return -1;
+ register r, c;
+ char a1, a2, a3;
+ char b1, b2, b3;
+ register char *smap;
+ register code;
+ register struct ww *w1;
+
+ if (w->ww_w.t > 0) {
+ r = w->ww_w.t - 1;
+ c = w->ww_i.l - 1;
+ smap = &wwsmap[r + 1][c + 1];
+ a1 = 0;
+ a2 = 0;
+ b1 = 0;
+ b2 = c < 0 || frameok(w, r, c);
+
+ for (; c < w->ww_i.r; c++) {
+ if (c + 1 >= wwncol) {
+ a3 = 1;
+ b3 = 1;
+ } else {
+ a3 = w->ww_index == *smap++;
+ b3 = frameok(w, r, c + 1);
+ }
+ if (b2) {
+ code = 0;
+ if ((a1 || a2) && b1)
+ code |= WWF_L;
+ if ((a2 || a3) && b3)
+ code |= WWF_R;
+ if (code)
+ wwframec(wframe, r, c, code|WWF_TOP);
+ }
+ a1 = a2;
+ a2 = a3;
+ b1 = b2;
+ b2 = b3;