📄 cursesw.h
字号:
#define mvwdelch UNDEF(mvwdelch)#endif#ifdef mvwgetchinline int UNDEF(mvwgetch)(WINDOW *win, int y, int x) { return mvwgetch(win, y, x);}#undef mvwgetch#define mvwgetch UNDEF(mvwgetch)#endif#ifdef mvwgetstrinline int UNDEF(mvwgetstr)(WINDOW *win, int y, int x, char *str){return mvwgetstr(win,y,x, str);}#undef mvwgetstr#define mvwgetstr UNDEF(mvwgetstr)#endif#ifdef mvwinchinline int UNDEF(mvwinch)(WINDOW *win, int y, int x) { return mvwinch(win, y, x);}#undef mvwinch#define mvwinch UNDEF(mvwinch)#endif#ifdef mvwinschinline int UNDEF(mvwinsch)(WINDOW *win, int y, int x, char c){ return mvwinsch(win, y, x, c); }#undef mvwinsch#define mvwinsch UNDEF(mvwinsch)#endif#ifdef mvaddchinline int UNDEF(mvaddch)(int y, int x, chtype ch){ return mvaddch(y, x, ch); }#undef mvaddch#define mvaddch UNDEF(mvaddch)#endif#ifdef mvaddnstrinline int UNDEF(mvaddnstr)(int y, int x, const char *str, int n){ return mvaddnstr(y, x, (char*)str, n); }#undef mvaddnstr#define mvaddnstr UNDEF(mvaddnstr)#endif#ifdef mvaddstrinline int UNDEF(mvaddstr)(int y, int x, const char * str){ return mvaddstr(y, x, (char*)str); }#undef mvaddstr#define mvaddstr UNDEF(mvaddstr)#endif#ifdef mvdelchinline int UNDEF(mvdelch)(int y, int x) { return mvdelch(y, x);}#undef mvdelch#define mvdelch UNDEF(mvdelch)#endif#ifdef mvgetchinline int UNDEF(mvgetch)(int y, int x) { return mvgetch(y, x);}#undef mvgetch#define mvgetch UNDEF(mvgetch)#endif#ifdef mvgetstrinline int UNDEF(mvgetstr)(int y, int x, char *str) {return mvgetstr(y, x, str);}#undef mvgetstr#define mvgetstr UNDEF(mvgetstr)#endif#ifdef mvinchinline int UNDEF(mvinch)(int y, int x) { return mvinch(y, x);}#undef mvinch#define mvinch UNDEF(mvinch)#endif#ifdef mvinschinline int UNDEF(mvinsch)(int y, int x, char c){ return mvinsch(y, x, c); }#undef mvinsch#define mvinsch UNDEF(mvinsch)#endif#ifdef napmsinline void UNDEF(napms)(unsigned long x) { napms(x); }#undef napms#define napms UNDEF(napms)#endif#ifdef fixterminline int UNDEF(fixterm)(void) { return fixterm(); }#undef fixterm#define fixterm UNDEF(fixterm)#endif#ifdef resetterminline int UNDEF(resetterm)(void) { return resetterm(); }#undef resetterm#define resetterm UNDEF(resetterm)#endif#ifdef saveterminline int UNDEF(saveterm)(void) { return saveterm(); }#undef saveterm#define saveterm UNDEF(saveterm)#endif#ifdef crmodeinline int UNDEF(crmode)(void) { return crmode(); }#undef crmode#define crmode UNDEF(crmode)#endif#ifdef nocrmodeinline int UNDEF(nocrmode)(void) { return nocrmode(); }#undef nocrmode#define nocrmode UNDEF(nocrmode)#endif/* * * C++ class for windows. * * */class NCursesWindow{ private: void init(); protected: static int count; // count of all active windows: // We rely on the c++ promise that // all otherwise uninitialized // static class vars are set to 0 WINDOW * w; // the curses WINDOW int alloced; // true if we own the WINDOW NCursesWindow* par; // parent, if subwindow NCursesWindow* subwins; // head of subwindows list NCursesWindow* sib; // next subwindow of parent void kill_subwindows(); // disable all subwindows public: NCursesWindow(WINDOW* &window); // useful only for stdscr NCursesWindow(int lines, // number of lines int cols, // number of columns int begin_y, // line origin int begin_x); // col origin NCursesWindow(NCursesWindow& par,// parent window int lines, // number of lines int cols, // number of columns int by, // absolute or relative int bx, // origins: char absrel = 'a');// if `a', by & bx are // absolute screen pos, // else if `r', they are // relative to par origin virtual ~NCursesWindow(); // terminal status int lines() const { return LINES; } // number of lines on terminal, *not* window int cols() const { return COLS; } // number of cols on terminal, *not* window virtual int colors() const { return 1; } // number of available colors // window status int height() const { return maxy() - begy() + 1; } // number of lines in this window int width() const { return maxx() - begx() + 1; } // number of cols in this window int begx() const { return w->_begx; } // smallest x coord in window int begy() const { return w->_begy; } // smallest y coord in window int maxx() const { return w->_maxx; } // largest x coord in window int maxy() const { return w->_maxy; } // largest x coord in window virtual short foreground() const { return 1; } // actual foreground color virtual short background() const { return 1; } // actual background color virtual short getcolor() const { return 0x11; } // actual color pair number virtual int setpalette(short fore, short back) const { return 0; } // set color palette entry virtual int setcolor(short pair) { return 0; } // set actually used palette entry // window positioning int move(int y, int x) { return ::wmove(w, y, x); } // coordinate positioning void getyx(int& y, int& x) { ::getyx(w, y, x); } int mvcur(int sy, int ey, int sx, int ex) { return ::mvcur(sy, ey, sx, ex); } // input int nodelay(bool i) { return ::nodelay(w,i); } int timeout(int i) { return ::wtimeout(w,i); } int getch() { return ::wgetch(w); } int getch(int y, int x) { return (::wmove(w, y, x)==ERR) ? ERR : ::wgetch(w); } int getstr(char* str) { return ::wgetstr(w, str); } int getstr(int y, int x, char* str) { return (::wmove(w, y, x)==ERR) ? ERR : ::wgetstr(w, str); } int scanw(const char*, ...)#if __GNUG__ >= 2 __attribute__ ((format (scanf, 2, 3)));#else ;#endif int scanw(int, int, const char*, ...)#if __GNUG__ >= 2 __attribute__ ((format (scanf, 4, 5)));#else ;#endif // output int addch(const chtype ch) { return ::waddch(w, ch); } int addch(int y, int x, chtype ch) { return (::wmove(w, y, x)==ERR) ? ERR : ::waddch(w, ch); } int addstr(const char* str) { return ::waddstr(w, (char*)str); } int addstr(int y, int x, const char * str) { return (::wmove(w, y, x)==ERR) ? ERR : ::waddstr(w, (char*)str); } int addnstr (const char* str, int n) { return ::waddnstr(w, (char*) str, n); } int printw(const char* fmt, ...)#if __GNUG__ >= 2 __attribute__ ((format (printf, 2, 3)));#else ;#endif int printw(int y, int x, const char * fmt, ...)#if __GNUG__ >= 2 __attribute__ ((format (printf, 4, 5)));#else ;#endif int inch() { return ::winch(w); } int inch(int y, int x) { return (::wmove(w, y, x)==ERR) ? ERR : ::winch(w); } int insch(chtype ch) { return ::winsch(w, ch); } int insch(int y, int x, chtype ch) { return (::wmove(w, y, x)==ERR) ? ERR : ::winsch(w, ch); } int insertln() { return ::winsertln(w); } int attron(chtype at) { return ::wattron(w, at); } int attroff(chtype at) { return ::wattroff(w, at); } int attrset(chtype at) { return ::wattrset(w, at); } // borders int box(char vert, char hor) { return ::box(w, vert, hor); } int box() { return ::box(w, ACS_VLINE, ACS_HLINE); } // lines and boxes int hline(int y, int x, chtype ch, int len) { return (::wmove(w, y, x)==ERR) ? ERR: ::whline(w, ch, len); } int hline(int y, int x, int len) { return (::wmove(w, y, x)==ERR) ? ERR: ::whline(w, ACS_HLINE, len); } int hline(chtype ch, int len) { return ::whline(w, ch, len); } int hline(int len) { return ::whline(w, ACS_HLINE, len); } int vline(int y, int x, chtype ch, int len) { return (::wmove(w, y, x)==ERR) ? ERR: ::wvline(w, ch, len); } int vline(int y, int x, int len) { return (::wmove(w, y, x)==ERR) ? ERR: ::wvline(w, ACS_VLINE, len); } int vline(chtype ch, int len) { return ::wvline(w, ch, len); } int vline(int len) { return ::wvline(w, ACS_VLINE, len); } // erasure int erase() { return ::werase(w); } int clear() { return ::wclear(w); } int clearok(int bf) { return ::clearok(w, bf); } int clrtobot() { return ::wclrtobot(w); } int clrtoeol() { return ::wclrtoeol(w); } int delch() { return ::wdelch(w); } int delch(int y, int x) { return (::wmove(w, y, x)==ERR) ? ERR : ::wdelch(w); } int deleteln() { return ::wdeleteln(w); } // screen control int scrl(int bf) { return ::wscrl(w,bf); } int scroll() { return ::scroll(w); } int scrollok(int bf) { return ::scrollok(w, bf); } int idlok(int bf) { return ::idlok(w, bf); } int touchwin() { return ::touchwin(w); } int refresh() { move(0,0); return ::wrefresh(w); } int leaveok(int bf) { return ::leaveok(w, bf); } int noutrefresh() { move(0,0); return ::wnoutrefresh(w); } int doupdate() { return ::doupdate(); }#ifndef _no_flushok int flushok(int bf) { return ::flushok(w, bf); }#endif int keypad(int bf) { return ::keypad(w, bf); } int standout() { return ::wstandout(w); } int standend() { return ::wstandend(w); } // multiple window control int overlay(NCursesWindow &win) { return ::overlay(w, win.w); } int overwrite(NCursesWindow &win) { return ::overwrite(w, win.w); } // traversal support NCursesWindow* child() { return subwins; } NCursesWindow* sibling() { return sib; } NCursesWindow* parent() { return par; }};class NCursesColorWindow : public NCursesWindow { private: void colorInit(void); short getcolor(int getback) const; protected: static int colorInitialized; public: NCursesColorWindow(WINDOW* &window); // useful only for stdscr NCursesColorWindow(int lines, // number of lines int cols, // number of columns int begin_y, // line origin int begin_x); // col origin NCursesColorWindow(NCursesWindow& par,// parent window int lines, // number of lines int cols, // number of columns int by, // absolute or relative int bx, // origins: char absrel = 'a');// if `a', by & bx are // absolute screen pos, // else if `r', they are // relative to par origin // terminal status int colors() const { return has_colors() ? COLORS : 1; } // number of available colors // window status short foreground() const { return getcolor(0); } // actual foreground color short background() const { return getcolor(1); } // actual background color short getcolor() const { return PAIR_NUMBER(w->_attrs); } // actual color pair number static int setpalette(short fore, short back, short pair); int setpalette(short fore, short back) const { return setpalette(fore, back, PAIR_NUMBER(w->_attrs)); } // set color palette entry int setcolor(short pair); // set actually used palette entry};#endif // _CURSESW_H#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -