static void repaintmainmenu(int width, menu *mp) { int i; menu *p = mp; for (i = 0; p->func; i++, p++) mvwaddstr(wmain, 0, i * width, prepad(padstr(p->name, width - 1), 1)); touchwin(wmain); wrefresh(wmain); }
cv::Mat EMat::padarray(int x_padsize, int y_padsize, const cv::Scalar &padval, pad_dir dir) { // Generate a matrix with adequate padding cv::Mat new_mat = prepad(x_padsize, y_padsize, dir, padval); int padmult = 1; if (dir == both) padmult = 2; assert((new_mat.rows == (rows + (y_padsize * padmult))) && (new_mat.cols + (x_padsize * padmult))); // Since this function does a simple scalar padding, we're done *this = new_mat; return new_mat; }
void domenu(menu *mp) { int y, x, nitems, barlen, mheight, mw, old = -1, cur = 0, cur0; bool stop = FALSE; WINDOW *wmenu; curs_set(0); getmenupos(&y, &x); menudim(mp, &nitems, &barlen); mheight = nitems + 2; mw = barlen + 2; wmenu = newwin(mheight, mw, y, x); colorbox(wmenu, SUBMENUCOLOR, 1); repaintmenu(wmenu, mp); key = ERR; while (!stop && !quit) { if (cur != old) { if (old != -1) mvwaddstr(wmenu, old + 1, 1, prepad(padstr(mp[old].name, barlen - 1), 1)); setcolor(wmenu, SUBMENUREVCOLOR); mvwaddstr(wmenu, cur + 1, 1, prepad(padstr(mp[cur].name, barlen - 1), 1)); setcolor(wmenu, SUBMENUCOLOR); statusmsg(mp[cur].desc); old = cur; wrefresh(wmenu); } switch (key = ((key != ERR) ? key : waitforkey())) { case '\n': /* menu item selected */ touchwin(wbody); wrefresh(wbody); setmenupos(y + 1, x + 1); rmerror(); key = ERR; curs_set(1); (mp[cur].func)(); /* perform function */ curs_set(0); repaintmenu(wmenu, mp); old = -1; break; case KEY_UP: cur = (cur + nitems - 1) % nitems; key = ERR; break; case KEY_DOWN: cur = (cur + 1) % nitems; key = ERR; break; case KEY_ESC: case KEY_LEFT: case KEY_RIGHT: if (key == KEY_ESC) key = ERR; /* return to prev submenu */ stop = TRUE; break; default: cur0 = cur; do { cur = (cur + 1) % nitems; } while ((cur != cur0) && (hotkey(mp[cur].name) != toupper((int)key))); key = (hotkey(mp[cur].name) == toupper((int)key)) ? '\n' : ERR; } } rmerror(); delwin(wmenu); touchwin(wbody); wrefresh(wbody); }
static void mainmenu(menu *mp) { int nitems, barlen, old = -1, cur = 0, c, cur0; menudim(mp, &nitems, &barlen); repaintmainmenu(barlen, mp); while (!quit) { if (cur != old) { if (old != -1) { mvwaddstr(wmain, 0, old * barlen, prepad(padstr(mp[old].name, barlen - 1), 1)); statusmsg(mp[cur].desc); } else mainhelp(); setcolor(wmain, MAINMENUREVCOLOR); mvwaddstr(wmain, 0, cur * barlen, prepad(padstr(mp[cur].name, barlen - 1), 1)); setcolor(wmain, MAINMENUCOLOR); old = cur; wrefresh(wmain); } switch (c = (key != ERR ? key : waitforkey())) { case KEY_DOWN: case '\n': /* menu item selected */ touchwin(wbody); wrefresh(wbody); rmerror(); setmenupos(th + mh, cur * barlen); curs_set(1); (mp[cur].func)(); /* perform function */ curs_set(0); switch (key) { case KEY_LEFT: cur = (cur + nitems - 1) % nitems; key = '\n'; break; case KEY_RIGHT: cur = (cur + 1) % nitems; key = '\n'; break; default: key = ERR; } repaintmainmenu(barlen, mp); old = -1; break; case KEY_LEFT: cur = (cur + nitems - 1) % nitems; break; case KEY_RIGHT: cur = (cur + 1) % nitems; break; case KEY_ESC: mainhelp(); break; default: cur0 = cur; do { cur = (cur + 1) % nitems; } while ((cur != cur0) && (hotkey(mp[cur].name) != toupper(c))); if (hotkey(mp[cur].name) == toupper(c)) key = '\n'; } } rmerror(); touchwin(wbody); wrefresh(wbody); }