2009-01-11 12:36:22 -05:00
|
|
|
! Copyright (C) 2008 Doug Coleman.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2009-10-20 07:57:24 -04:00
|
|
|
USING: accessors alien alien.c-types alien.libraries
|
|
|
|
alien.syntax classes.struct combinators kernel math system unix.types ;
|
2009-01-11 12:36:22 -05:00
|
|
|
IN: curses.ffi
|
|
|
|
|
|
|
|
<< "curses" {
|
2011-09-18 21:25:06 -04:00
|
|
|
{ [ os windows? ] [ "libcurses.dll" ] }
|
2009-01-11 12:36:22 -05:00
|
|
|
{ [ os macosx? ] [ "libcurses.dylib" ] }
|
2010-02-25 18:38:17 -05:00
|
|
|
{ [ os unix? ] [ "libncursesw.so" ] }
|
2010-03-31 22:20:35 -04:00
|
|
|
} cond cdecl add-library >>
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-09-27 23:21:24 -04:00
|
|
|
C-TYPE: SCREEN
|
2009-01-11 12:36:22 -05:00
|
|
|
TYPEDEF: void* va_list
|
|
|
|
|
|
|
|
TYPEDEF: uint chtype
|
|
|
|
TYPEDEF: chtype attr_t
|
|
|
|
TYPEDEF: short NCURSES_SIZE_T
|
|
|
|
TYPEDEF: ushort wchar_t
|
2009-10-22 05:05:27 -04:00
|
|
|
TYPEDEF: ulong mmask_t
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-02-22 20:08:45 -05:00
|
|
|
CONSTANT: CCHARW_MAX 5
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
CONSTANT: ERR -1
|
|
|
|
CONSTANT: FALSE 0
|
|
|
|
CONSTANT: TRUE 1
|
|
|
|
|
2009-09-19 21:47:11 -04:00
|
|
|
STRUCT: cchar_t
|
2009-10-20 07:57:24 -04:00
|
|
|
{ attr attr_t }
|
|
|
|
{ chars { wchar_t CCHARW_MAX } } ;
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-09-19 21:47:11 -04:00
|
|
|
STRUCT: pdat
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _pad_y NCURSES_SIZE_T }
|
|
|
|
{ _pad_x NCURSES_SIZE_T }
|
|
|
|
{ _pad_top NCURSES_SIZE_T }
|
|
|
|
{ _pad_left NCURSES_SIZE_T }
|
|
|
|
{ _pad_bottom NCURSES_SIZE_T }
|
|
|
|
{ _pad_right NCURSES_SIZE_T } ;
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2010-02-25 18:38:17 -05:00
|
|
|
STRUCT: WINDOW
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _cury NCURSES_SIZE_T }
|
|
|
|
{ _curx NCURSES_SIZE_T }
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _maxy NCURSES_SIZE_T }
|
|
|
|
{ _maxx NCURSES_SIZE_T }
|
|
|
|
{ _begy NCURSES_SIZE_T }
|
|
|
|
{ _begx NCURSES_SIZE_T }
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _flags short }
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _attrs attr_t }
|
|
|
|
{ _bkgd chtype }
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _notimeout bool }
|
|
|
|
{ _clear bool }
|
|
|
|
{ _leaveok bool }
|
|
|
|
{ _scroll bool }
|
|
|
|
{ _idlok bool }
|
|
|
|
{ _idcok bool }
|
|
|
|
{ _immed bool }
|
|
|
|
{ _sync bool }
|
|
|
|
{ _use_keypad bool }
|
|
|
|
{ _delay int }
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _line c-string }
|
|
|
|
{ _regtop NCURSES_SIZE_T }
|
|
|
|
{ _regbottom NCURSES_SIZE_T }
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _parx int }
|
|
|
|
{ _pary int }
|
|
|
|
{ _parent WINDOW* }
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _pad pdat }
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _yoffset NCURSES_SIZE_T }
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
{ _bkgrnd cchar_t } ;
|
2009-01-11 12:36:22 -05:00
|
|
|
|
2009-10-22 05:05:27 -04:00
|
|
|
STRUCT: MEVENT
|
|
|
|
{ id short }
|
|
|
|
{ x int } { y int } { z int }
|
|
|
|
{ bstate mmask_t } ;
|
|
|
|
|
2009-01-11 12:36:22 -05:00
|
|
|
LIBRARY: curses
|
|
|
|
|
2009-10-09 05:46:29 -04:00
|
|
|
C-GLOBAL: void* stdscr
|
2009-01-11 12:36:22 -05:00
|
|
|
|
|
|
|
FUNCTION: WINDOW* initscr ( ) ;
|
|
|
|
FUNCTION: int endwin ( ) ;
|
|
|
|
FUNCTION: bool isendwin ( ) ;
|
2010-02-23 14:42:02 -05:00
|
|
|
FUNCTION: SCREEN* newterm ( c-string type, FILE* outfd, FILE* infd ) ;
|
2009-01-11 12:36:22 -05:00
|
|
|
FUNCTION: SCREEN* set_term ( SCREEN* new ) ;
|
|
|
|
FUNCTION: void delscreen ( SCREEN* sp ) ;
|
|
|
|
|
|
|
|
FUNCTION: int def_prog_mode ( ) ;
|
|
|
|
FUNCTION: int def_shell_mode ( ) ;
|
|
|
|
FUNCTION: int reset_prog_mode ( ) ;
|
|
|
|
FUNCTION: int reset_shell_mode ( ) ;
|
|
|
|
FUNCTION: int resetty ( ) ;
|
|
|
|
FUNCTION: int savetty ( ) ;
|
|
|
|
FUNCTION: int ripoffline ( int line, void* callback ) ;
|
|
|
|
FUNCTION: int curs_set ( int visibility ) ;
|
|
|
|
FUNCTION: int napms ( int ms ) ;
|
|
|
|
|
|
|
|
FUNCTION: WINDOW* newwin ( int nlines, int ncols, int begin_y, int begin_x ) ;
|
|
|
|
FUNCTION: int delwin ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int mvwin ( WINDOW* win, int y, int x ) ;
|
|
|
|
FUNCTION: WINDOW* subwin ( WINDOW* orig, int nlines, int ncols, int begin_y, int begin_x ) ;
|
|
|
|
FUNCTION: WINDOW* derwin ( WINDOW* orig, int nlines, int ncols, int begin_y, int begin_x ) ;
|
|
|
|
FUNCTION: int mvderwin ( WINDOW* win, int par_y, int par_x ) ;
|
|
|
|
FUNCTION: WINDOW* dupwin ( WINDOW* win ) ;
|
|
|
|
FUNCTION: void wsyncup ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int syncok ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: void wcursyncup ( WINDOW* win ) ;
|
|
|
|
FUNCTION: void wsyncdown ( WINDOW* win ) ;
|
|
|
|
|
|
|
|
FUNCTION: int cbreak ( ) ;
|
|
|
|
FUNCTION: int nocbreak ( ) ;
|
|
|
|
FUNCTION: int echo ( ) ;
|
|
|
|
FUNCTION: int noecho ( ) ;
|
|
|
|
FUNCTION: int halfdelay ( int tenths ) ;
|
|
|
|
FUNCTION: int intrflush ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: int keypad ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: int meta ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: int nodelay ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: int raw ( ) ;
|
|
|
|
FUNCTION: int noraw ( ) ;
|
|
|
|
FUNCTION: void noqiflush ( ) ;
|
|
|
|
FUNCTION: void qiflush ( ) ;
|
|
|
|
FUNCTION: int notimeout ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: void timeout ( int delay ) ;
|
|
|
|
FUNCTION: void wtimeout ( WINDOW* win, int delay ) ;
|
|
|
|
FUNCTION: int typeahead ( int fd ) ;
|
|
|
|
|
|
|
|
FUNCTION: int clearok ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: int idlok ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: void idcok ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: void immedok ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: int leaveok ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: int setscrreg ( int top, int bot ) ;
|
|
|
|
FUNCTION: int wsetscrreg ( WINDOW* win, int top, int bot ) ;
|
|
|
|
FUNCTION: int scrollok ( WINDOW* win, bool bf ) ;
|
|
|
|
FUNCTION: int nl ( ) ;
|
|
|
|
FUNCTION: int nonl ( ) ;
|
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
FUNCTION: int erase ( ) ;
|
2009-01-11 12:36:22 -05:00
|
|
|
FUNCTION: int werase ( WINDOW* win ) ;
|
2009-10-20 07:57:24 -04:00
|
|
|
FUNCTION: int clear ( ) ;
|
2009-01-11 12:36:22 -05:00
|
|
|
FUNCTION: int wclear ( WINDOW* win ) ;
|
2009-10-20 07:57:24 -04:00
|
|
|
FUNCTION: int clrtobot ( ) ;
|
2009-01-11 12:36:22 -05:00
|
|
|
FUNCTION: int wclrtobot ( WINDOW* win ) ;
|
2009-10-20 07:57:24 -04:00
|
|
|
FUNCTION: int clrtoeol ( ) ;
|
2009-01-11 12:36:22 -05:00
|
|
|
FUNCTION: int wclrtoeol ( WINDOW* win ) ;
|
|
|
|
|
|
|
|
FUNCTION: int refresh ( ) ;
|
|
|
|
FUNCTION: int wrefresh ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int wnoutrefresh ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int doupdate ( ) ;
|
|
|
|
FUNCTION: int redrawwin ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int wredrawln ( WINDOW* win, int beg_line, int num_lines ) ;
|
|
|
|
|
|
|
|
FUNCTION: int getch ( ) ;
|
|
|
|
FUNCTION: int wgetch ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int mvgetch ( int y, int x ) ;
|
|
|
|
FUNCTION: int mvwgetch ( WINDOW* win, int y, int x ) ;
|
|
|
|
FUNCTION: int ungetch ( int ch ) ;
|
|
|
|
FUNCTION: int has_key ( int ch ) ;
|
|
|
|
|
2010-02-23 14:42:02 -05:00
|
|
|
FUNCTION: int getstr ( c-string str ) ;
|
|
|
|
FUNCTION: int getnstr ( c-string str, int n ) ;
|
|
|
|
FUNCTION: int wgetstr ( WINDOW* win, c-string str ) ;
|
|
|
|
FUNCTION: int wgetnstr ( WINDOW* win, c-string str, int n ) ;
|
|
|
|
FUNCTION: int mvgetstr ( int y, int x, c-string str ) ;
|
|
|
|
FUNCTION: int mvwgetstr ( WINDOW* win, int y, int x, c-string str ) ;
|
|
|
|
FUNCTION: int mvgetnstr ( int y, int x, c-string str, int n ) ;
|
|
|
|
FUNCTION: int mvwgetnstr ( WINDOW* win, int y, int x, c-string str, int n ) ;
|
|
|
|
|
|
|
|
FUNCTION: int printw ( c-string fmt, int lol ) ;
|
|
|
|
FUNCTION: int wprintw ( WINDOW* win, c-string fmt, int lol ) ;
|
|
|
|
FUNCTION: int mvprintw ( int y, int x, c-string fmt, int lol ) ;
|
|
|
|
FUNCTION: int mvwprintw ( WINDOW* win, int y, int x, c-string fmt, int lol ) ;
|
|
|
|
FUNCTION: int vwprintw ( WINDOW* win, c-string fmt, va_list varglist ) ;
|
|
|
|
FUNCTION: int vw_printw ( WINDOW* win, c-string fmt, va_list varglist ) ;
|
2009-01-11 12:36:22 -05:00
|
|
|
|
|
|
|
FUNCTION: int move ( int y, int x ) ;
|
|
|
|
FUNCTION: int wmove ( WINDOW* win, int y, int x ) ;
|
|
|
|
|
|
|
|
FUNCTION: int scroll ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int scrl ( int n ) ;
|
|
|
|
FUNCTION: int wscrl ( WINDOW* win, int n ) ;
|
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
! int setupterm(char *term, int fildes, int *errret);
|
|
|
|
! int setterm(char *term);
|
|
|
|
! TERMINAL *set_curterm(TERMINAL *nterm);
|
|
|
|
! int del_curterm(TERMINAL *oterm);
|
|
|
|
! int restartterm(const char *term, int fildes, int *errret);
|
|
|
|
! char *tparm(char *str, ...);
|
|
|
|
! int tputs(const char *str, int affcnt, int (*putc)(int));
|
|
|
|
! int putp(const char *str);
|
|
|
|
! int vidputs(chtype attrs, int (*putc)(int));
|
|
|
|
! int vidattr(chtype attrs);
|
|
|
|
! int vid_puts(attr_t attrs, short pair, void *opts, int (*putc)(char));
|
|
|
|
! int vid_attr(attr_t attrs, short pair, void *opts);
|
2009-01-11 12:36:22 -05:00
|
|
|
FUNCTION: int mvcur ( int oldrow, int oldcol, int newrow, int newcol ) ;
|
2009-10-20 07:57:24 -04:00
|
|
|
! int tigetflag(char *capname);
|
|
|
|
! int tigetnum(char *capname);
|
|
|
|
! char *tigetstr(char *capname);
|
2009-01-11 12:36:22 -05:00
|
|
|
|
|
|
|
FUNCTION: int touchwin ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int touchline ( WINDOW* win, int start, int count ) ;
|
|
|
|
FUNCTION: int untouchwin ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int wtouchln ( WINDOW* win, int y, int n, int changed ) ;
|
|
|
|
FUNCTION: bool is_linetouched ( WINDOW* win, int line ) ;
|
|
|
|
FUNCTION: bool is_wintouched ( WINDOW* win ) ;
|
|
|
|
|
|
|
|
FUNCTION: int insch ( chtype ch ) ;
|
|
|
|
FUNCTION: int winsch ( WINDOW* win, chtype ch ) ;
|
|
|
|
FUNCTION: int mvinsch ( int y, int x, chtype ch ) ;
|
|
|
|
FUNCTION: int mvwinsch ( WINDOW* win, int y, int x, chtype ch ) ;
|
|
|
|
FUNCTION: int delch ( ) ;
|
|
|
|
FUNCTION: int wdelch ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int mvdelch ( int y, int x ) ;
|
|
|
|
FUNCTION: int mvwdelch ( WINDOW* win, int y, int x ) ;
|
|
|
|
|
|
|
|
FUNCTION: int deleteln ( ) ;
|
|
|
|
FUNCTION: int wdeleteln ( WINDOW* win ) ;
|
|
|
|
FUNCTION: int insdelln ( int n ) ;
|
|
|
|
FUNCTION: int winsdelln ( WINDOW* win, int n ) ;
|
|
|
|
FUNCTION: int insertln ( ) ;
|
|
|
|
FUNCTION: int winsertln ( WINDOW* win ) ;
|
|
|
|
|
2010-02-23 14:42:02 -05:00
|
|
|
FUNCTION: int addstr ( c-string str ) ;
|
|
|
|
FUNCTION: int addnstr ( c-string str, int n ) ;
|
|
|
|
FUNCTION: int waddstr ( WINDOW* win, c-string str ) ;
|
|
|
|
FUNCTION: int waddnstr ( WINDOW* win, c-string str, int n ) ;
|
|
|
|
FUNCTION: int mvaddstr ( int y, int x, c-string str ) ;
|
|
|
|
FUNCTION: int mvaddnstr ( int y, int x, c-string str, int n ) ;
|
|
|
|
FUNCTION: int mvwaddstr ( WINDOW* win, int y, int x, c-string str ) ;
|
|
|
|
FUNCTION: int mvwaddnstr ( WINDOW* win, int y, int x, c-string str, int n ) ;
|
2009-10-20 07:57:24 -04:00
|
|
|
|
|
|
|
FUNCTION: int waddch ( WINDOW* win, chtype ch ) ;
|
|
|
|
|
|
|
|
FUNCTION: int start_color ( ) ;
|
|
|
|
FUNCTION: int init_pair ( short pair, short f, short b ) ;
|
|
|
|
FUNCTION: int init_color ( short color, short r, short g, short b ) ;
|
|
|
|
FUNCTION: bool has_colors ( ) ;
|
|
|
|
FUNCTION: bool can_change_color ( ) ;
|
|
|
|
FUNCTION: int color_content ( short color, short* r, short* g, short* b ) ;
|
|
|
|
FUNCTION: int pair_content ( short pair, short* f, short* b ) ;
|
|
|
|
|
|
|
|
C-GLOBAL: int COLORS
|
|
|
|
C-GLOBAL: int COLOR_PAIRS
|
|
|
|
|
|
|
|
: COLOR_PAIR ( n -- n' ) 8 shift ; inline foldable
|
|
|
|
|
2010-02-25 05:48:44 -05:00
|
|
|
FUNCTION: int wcolor_set ( WINDOW* win, short color_pair_number, void* opts ) ;
|
|
|
|
|
2009-10-20 07:57:24 -04:00
|
|
|
FUNCTION: int wattron ( WINDOW* win, int attrs ) ;
|
|
|
|
FUNCTION: int wattroff ( WINDOW* win, int attrs ) ;
|
|
|
|
FUNCTION: int wattrset ( WINDOW* win, int attrs ) ;
|
2009-10-22 05:05:27 -04:00
|
|
|
|
2009-10-26 07:04:49 -04:00
|
|
|
: NCURSES_MOUSE_MASK ( b m -- mask ) swap 1 - 6 * shift ; inline
|
2009-10-22 05:05:27 -04:00
|
|
|
|
|
|
|
CONSTANT: NCURSES_BUTTON_RELEASED OCT: 01
|
|
|
|
CONSTANT: NCURSES_BUTTON_PRESSED OCT: 02
|
|
|
|
CONSTANT: NCURSES_BUTTON_CLICKED OCT: 04
|
|
|
|
CONSTANT: NCURSES_DOUBLE_CLICKED OCT: 10
|
|
|
|
CONSTANT: NCURSES_TRIPLE_CLICKED OCT: 20
|
|
|
|
CONSTANT: NCURSES_RESERVED_EVENT OCT: 40
|
|
|
|
|
|
|
|
FUNCTION: int getmouse ( MEVENT* event ) ;
|
|
|
|
FUNCTION: int ungetmouse ( MEVENT* event ) ;
|
|
|
|
FUNCTION: mmask_t mousemask ( mmask_t newmask, mmask_t* oldmask ) ;
|
|
|
|
FUNCTION: bool wenclose ( WINDOW* win, int y, int x ) ;
|
|
|
|
FUNCTION: bool mouse_trafo ( int* pY, int* pX, bool to_screen ) ;
|
|
|
|
FUNCTION: bool wmouse_trafo ( WINDOW* win, int* pY, int* pX, bool to_screen ) ;
|
|
|
|
FUNCTION: int mouseinterval ( int erval ) ;
|
2009-10-25 18:03:03 -04:00
|
|
|
|
|
|
|
FUNCTION: int wborder ( WINDOW* win, chtype ls, chtype rs, chtype ts, chtype bs, chtype tl, chtype tr, chtype bl, chtype br ) ;
|
|
|
|
FUNCTION: int box ( WINDOW* win, chtype verch, chtype horch ) ;
|
|
|
|
FUNCTION: int whline ( WINDOW* win, chtype ch, int n ) ;
|
|
|
|
FUNCTION: int wvline ( WINDOW* win, chtype ch, int n ) ;
|