118742Sedward /* 233514Sbostic * Copyright (c) 1983 Regents of the University of California. 333514Sbostic * All rights reserved. 433514Sbostic * 5*42835Sbostic * %sccs.include.redist.c% 618742Sedward */ 718742Sedward 833514Sbostic #ifndef lint 9*42835Sbostic static char sccsid[] = "@(#)wwmove.c 3.10 (Berkeley) 06/02/90"; 1033514Sbostic #endif /* not lint */ 1133514Sbostic 1214980Sedward #include "ww.h" 1314980Sedward 1414980Sedward /* 1514980Sedward * Move a window. Should be unattached. 1614980Sedward */ 1714980Sedward wwmove(w, row, col) 1814980Sedward register struct ww *w; 1914980Sedward { 2014989Sedward register dr, dc; 2114989Sedward register i; 2214989Sedward 2314989Sedward dr = row - w->ww_w.t; 2414989Sedward dc = col - w->ww_w.l; 2514980Sedward 2614989Sedward w->ww_w.t += dr; 2714989Sedward w->ww_w.b += dr; 2814989Sedward w->ww_w.l += dc; 2914989Sedward w->ww_w.r += dc; 3014989Sedward 3114989Sedward w->ww_b.t += dr; 3214989Sedward w->ww_b.b += dr; 3314989Sedward w->ww_b.l += dc; 3414989Sedward w->ww_b.r += dc; 3514989Sedward 3614980Sedward w->ww_i.t = MAX(w->ww_w.t, 0); 3714980Sedward w->ww_i.b = MIN(w->ww_w.b, wwnrow); 3814980Sedward w->ww_i.nr = w->ww_i.b - w->ww_i.t; 3914980Sedward w->ww_i.l = MAX(w->ww_w.l, 0); 4014980Sedward w->ww_i.r = MIN(w->ww_w.r, wwncol); 4114980Sedward w->ww_i.nc = w->ww_i.r - w->ww_i.l; 4214989Sedward 4314989Sedward w->ww_cur.r += dr; 4414989Sedward w->ww_cur.c += dc; 4514989Sedward 4614989Sedward w->ww_win -= dr; 4714989Sedward for (i = w->ww_w.t; i < w->ww_w.b; i++) 4814989Sedward w->ww_win[i] -= dc; 4914989Sedward if (w->ww_fmap != 0) { 5014989Sedward w->ww_fmap -= dr; 5114989Sedward for (i = w->ww_w.t; i < w->ww_w.b; i++) 5214989Sedward w->ww_fmap[i] -= dc; 5314989Sedward } 5414989Sedward w->ww_nvis -= dr; 5515002Sedward for (i = w->ww_i.t; i < w->ww_i.b; i++) { 5615002Sedward register j = w->ww_i.l; 5715002Sedward register char *win = &w->ww_win[i][j]; 5815592Sedward register char *smap = &wwsmap[i][j]; 5915002Sedward int nvis = 0; 6015002Sedward 6115592Sedward for (; j < w->ww_i.r; j++, win++, smap++) 6215592Sedward if (*win == 0 && *smap == w->ww_index) 6315002Sedward nvis++; 6415002Sedward w->ww_nvis[i] = nvis; 6515002Sedward } 6614989Sedward w->ww_buf -= dr; 6714989Sedward for (i = w->ww_b.t; i < w->ww_b.b; i++) 6814989Sedward w->ww_buf[i] -= dc; 6914980Sedward } 70