114432Sedward #ifndef lint 2*14650Sedward static char *sccsid = "@(#)wwdelchar.c 3.3 83/08/15"; 314432Sedward #endif 414432Sedward 514432Sedward #include "ww.h" 6*14650Sedward #include "tt.h" 714432Sedward 814459Sedward wwdelchar(w, line, col) 914432Sedward register struct ww *w; 1014432Sedward { 1114459Sedward register i; 1214459Sedward int row = line - w->ww_scroll; 1314459Sedward int nvis; 1414459Sedward 1514459Sedward { 1614459Sedward register union ww_char *p, *q; 1714459Sedward 1814459Sedward p = &w->ww_buf[line][col]; 1914459Sedward q = p + 1; 2014459Sedward for (i = w->ww_w.nc - col - 1; --i >= 0;) 2114459Sedward *p++ = *q++; 2214459Sedward p->c_w = ' '; 2314459Sedward } 2414459Sedward if (row < 0 || row >= w->ww_w.nr) 2514459Sedward return; 2614459Sedward { 2714459Sedward register union ww_char *buf; 2814459Sedward register char *win; 2914459Sedward register union ww_char *ns; 3014459Sedward register char *smap; 3114459Sedward 3214459Sedward nvis = 0; 3314459Sedward smap = &wwsmap[row + w->ww_w.t][col + w->ww_w.l]; 3414459Sedward for (i = w->ww_w.nc - col; i > 0; i--) 3514459Sedward if (*smap == w->ww_index) 3614459Sedward break; 3714459Sedward else { 3814459Sedward smap++; 3914459Sedward col++; 4014459Sedward } 4114459Sedward if (i <= 0) 4214459Sedward return; 4314459Sedward buf = &w->ww_buf[line][col]; 4414459Sedward win = &w->ww_win[row][col]; 4514459Sedward ns = &wwns[row + w->ww_w.t][col + w->ww_w.l]; 4614459Sedward for (; --i >= 0;) { 4714459Sedward if (*win) { 4814459Sedward if ((*win & (WWM_COV|WWM_GLS)) != 0) { 4914459Sedward ns++; 5014459Sedward buf++; 5114459Sedward } else 5214459Sedward ns++->c_w = buf++->c_w 5314459Sedward ^ *win++ << WWC_MSHIFT; 5414459Sedward } else { 5514459Sedward *ns++ = *buf++; 5614459Sedward win++; 5714459Sedward nvis++; 5814459Sedward } 5914459Sedward } 6014459Sedward } 6114459Sedward col += w->ww_w.l; 6214459Sedward row += w->ww_w.t; 6314459Sedward if (nvis > (wwncol - col) / 2) { 6414459Sedward register union ww_char *p, *q; 6514459Sedward 6614459Sedward (*tt.tt_move)(row, col); 6714459Sedward (*tt.tt_delchar)(); 6814459Sedward 6914459Sedward p = &wwos[row][col]; 7014459Sedward q = p + 1; 7114459Sedward for (i = wwncol - col - 1; --i >= 0;) 7214459Sedward *p++ = *q++; 7314459Sedward p->c_w = ' '; 7414459Sedward } 7514432Sedward } 76