static void curses_update(DisplayState *ds, int x, int y, int w, int h) { chtype *line; line = ((chtype *) screen) + y * width; for (h += y; y < h; y ++, line += width) mvwaddchnstr(screenpad, y, 0, line, width); pnoutrefresh(screenpad, py, px, sminy, sminx, smaxy - 1, smaxx - 1); refresh(); }
void clear_cell(WINDOW *win, int i, int j) { char line[BUFSIZ]; int len, k, d; chtype chline[BUFSIZ]; extern int colwid; for (k=0;k<colwid-1;k++) chline[k] = ' '; chline[colwid-1] = '|' | A_BOLD; chline[colwid] = '\0'; mvwaddchnstr(win,j,i*colwid,chline,colwid); }
void update_hlab(WINDOW *win, int y, int joff) { char line[BUFSIZ]; int len, k, d; chtype chline[BUFSIZ]; for (k=0;k<HLAB;k++) chline[k] = ' '; sprintf(line,"%-4d",joff+y); len = strlen(line); d = (HLAB-len)/2; for (k=0;k<len;k++) chline[k+d] = line[k] | A_BOLD; chline[HLAB] = 0; mvwaddchnstr(win,y,0,chline,HLAB); }
void set_cell(WINDOW *win, int i, int j, int ioff, int joff, int type, int nx, void *data) { char line[BUFSIZ]; int len, k, d; chtype chline[BUFSIZ]; extern int colwid; for (k=0;k<colwid-1;k++) chline[k] = ' '; str_value(i,j,type,nx,data,line); len = strlen(line); for (k=0;k<len;k++) chline[k] = line[k]; chline[len] = ' '; chline[colwid-1] = '|' | A_BOLD; chline[colwid] = '\0'; mvwaddchnstr(win,j-joff,(i-ioff)*colwid,chline,colwid); }
void update_vlab(WINDOW *win, int x, int ioff) { char line[BUFSIZ]; int len, k, d; chtype chline[BUFSIZ]; extern int colwid; for (k=0;k<colwid;k++) chline[k] = ' '; sprintf(line,"%d",ioff+x); len = strlen(line); d = (colwid-len)/2; for (k=0;k<len;k++) chline[k+d] = line[k] | A_BOLD; chline[colwid-1] = '|' | A_BOLD; chline[colwid] = 0; mvwaddchnstr(win,0,x*colwid,chline,colwid); }
void update_col(WINDOW *win, int x, int ioff, int joff, int type, int nx, void *data) { char line[BUFSIZ]; int len, k, d, j; chtype chline[BUFSIZ]; extern int colwid, drows; for (j=0;j<drows;j++) { for (k=0;k<colwid-1;k++) chline[k] = ' '; str_value(x+ioff,j+joff,type,nx,data,line); len = strlen(line); for (k=0;k<len;k++) chline[k] = line[k]; chline[len] = ' '; chline[colwid-1] = '|' | A_BOLD; chline[colwid] = '\0'; mvwaddchnstr(win,j,x*colwid,chline,colwid); } }
void update_row(WINDOW *win, int y, int ioff, int joff, int type, int nx, void *data) { char line[BUFSIZ]; int len, k, d, i; chtype chline[BUFSIZ]; extern int colwid, dcols; for (i=0;i<dcols;i++) { for (k=0;k<colwid-1;k++) chline[k] = ' '; str_value(i+ioff,y+joff,type,nx,data,line); len = strlen(line); for (k=0;k<len;k++) chline[k] = line[k]; chline[len] = ' '; chline[colwid-1] = '|' | A_BOLD; chline[colwid] = '\0'; mvwaddchnstr(win,y,i*colwid,chline,colwid); } }
static void curses_update(DisplayChangeListener *dcl, int x, int y, int w, int h) { console_ch_t *line; chtype curses_line[width]; line = screen + y * width; for (h += y; y < h; y ++, line += width) { for (x = 0; x < width; x++) { chtype ch = line[x] & 0xff; chtype at = line[x] & ~0xff; if (vga_to_curses[ch]) { ch = vga_to_curses[ch]; } curses_line[x] = ch | at; } mvwaddchnstr(screenpad, y, 0, curses_line, width); } pnoutrefresh(screenpad, py, px, sminy, sminx, smaxy - 1, smaxx - 1); refresh(); }
/* * mvaddchnstr -- * Add a string of at most n characters to stdscr * starting at (y, x). */ int mvaddchnstr(int y, int x, const chtype *chstr, int n) { return mvwaddchnstr(stdscr, y, x, chstr, n); }
/* * mvwaddchstr -- * Add a string to the given window starting at (y, x) */ int mvwaddchstr(WINDOW *win, int y, int x, const chtype *chstr) { return mvwaddchnstr(win, y, x, chstr, -1); }