23 #if defined(HAVE_NCURSES_H) 25 #elif defined(HAVE_NCURSES_CURSES_H) 26 # include <ncurses/curses.h> 27 #elif defined(HAVE_CURSES_COLR_CURSES_H) 28 # ifdef HAVE_STDARG_PROTOTYPES 33 # include <curses_colr/curses.h> 36 # if defined(__bsdi__) || defined(__NetBSD__) || defined(__APPLE__) 52 #ifdef HAVE_INIT_COLOR 57 #ifdef NCURSES_MOUSE_VERSION 61 #define NUM2CH NUM2CHR 62 #define CH2FIX CHR2FIX 69 static VALUE cMouseEvent;
88 #define GetWINDOW(obj, winp) do {\ 89 if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)\ 90 rb_raise(rb_eSecurityError, "Insecure: operation on untainted window");\ 91 TypedData_Get_Struct((obj), struct windata, &windata_type, (winp));\ 92 if ((winp)->window == 0) no_window();\ 108 size_t size =
sizeof(*winp);
169 #define curses_stdscr curses_init_screen 234 #define curses_closed rb_f_notimplement 523 #define curses_ungetch rb_f_notimplement 641 int *ip = (
int *)arg;
671 #define GETSTR_BUF_SIZE 1024 676 char *rtn = (
char *)arg;
677 #if defined(HAVE_GETNSTR) 725 #if defined(HAVE_DELETELN) || defined(deleteln) 741 #if defined(HAVE_INSERTLN) || defined(insertln) 859 #ifdef HAVE_SETSCRREG 962 #if defined(HAVE_USE_DEFAULT_COLORS) 972 use_default_colors();
976 #define curses_use_default_colors rb_f_notimplement 979 #if defined(HAVE_TABSIZE) 993 #define curses_tabsize_set rb_f_notimplement 996 #if defined(HAVE_TABSIZE) 1006 #define curses_tabsize_get rb_f_notimplement 1009 #if defined(HAVE_ESCDELAY) 1022 #define curses_escdelay_set rb_f_notimplement 1025 #if defined(HAVE_ESCDELAY) 1036 #define curses_escdelay_get rb_f_notimplement 1057 #if defined(HAVE_RESIZETERM) 1075 curses_start_color(
VALUE obj)
1135 curses_has_colors(
VALUE obj)
1147 curses_can_change_color(
VALUE obj)
1153 #if defined(HAVE_COLORS) 1160 curses_colors(
VALUE obj)
1165 #define curses_colors rb_f_notimplement 1180 color_content(
NUM2INT(color),&r,&g,&b);
1185 #if defined(HAVE_COLOR_PAIRS) 1192 curses_color_pairs(
VALUE obj)
1197 #define curses_color_pairs rb_f_notimplement 1258 #define GetMOUSE(obj, data) do {\ 1259 if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)\ 1260 rb_raise(rb_eSecurityError, "Insecure: operation on untainted mouse");\ 1261 TypedData_Get_Struct((obj), struct mousedata, &mousedata_type, (data));\ 1262 if ((data)->mevent == 0) no_mevent();\ 1266 curses_mousedata_free(
void *
p)
1268 struct mousedata *mdata =
p;
1270 xfree(mdata->mevent);
1274 curses_mousedata_memsize(
const void *
p)
1276 const struct mousedata *mdata =
p;
1277 size_t size =
sizeof(*mdata);
1278 if (!mdata)
return 0;
1279 if (mdata->mevent)
size +=
sizeof(mdata->mevent);
1285 {0, curses_mousedata_free, curses_mousedata_memsize,}
1298 curses_getmouse(
VALUE obj)
1300 struct mousedata *mdata;
1305 &mousedata_type,mdata);
1306 mdata->mevent = (MEVENT*)
xmalloc(
sizeof(MEVENT));
1307 return (getmouse(mdata->mevent) == OK) ?
val :
Qnil;
1321 struct mousedata *mdata;
1324 GetMOUSE(mevent,mdata);
1325 return (ungetmouse(mdata->mevent) == OK) ?
Qtrue :
Qfalse;
1345 curses_mouseinterval(
VALUE obj,
VALUE interval)
1364 #define DEFINE_MOUSE_GET_MEMBER(func_name,mem) \ 1365 static VALUE func_name (VALUE mouse) \ 1367 struct mousedata *mdata; \ 1368 GetMOUSE(mouse, mdata); \ 1369 return (UINT2NUM(mdata->mevent -> mem)); \ 1377 DEFINE_MOUSE_GET_MEMBER(curs_mouse_id,
id)
1383 DEFINE_MOUSE_GET_MEMBER(curs_mouse_x, x)
1389 DEFINE_MOUSE_GET_MEMBER(curs_mouse_y, y)
1395 DEFINE_MOUSE_GET_MEMBER(curs_mouse_z, z)
1402 DEFINE_MOUSE_GET_MEMBER(curs_mouse_bstate, bstate)
1403 #undef define_curs_mouse_member 1425 #define curses_timeout rb_f_notimplement 1428 #ifdef HAVE_DEF_PROG_MODE 1444 #define curses_def_prog_mode rb_f_notimplement 1447 #ifdef HAVE_RESET_PROG_MODE 1463 #define curses_reset_prog_mode rb_f_notimplement 1612 #ifdef HAVE_DOUPDATE 1613 wnoutrefresh(winp->
window);
1669 getyx(winp->
window, y, x);
1685 getyx(winp->
window, y, x);
1700 #if defined(getmaxy) 1702 #elif defined(getmaxyx) 1705 getmaxyx(winp->
window, y, x);
1724 #if defined(getmaxx) 1726 #elif defined(getmaxyx) 1729 getmaxyx(winp->
window, y, x);
1750 getbegyx(winp->
window, y, x);
1770 getbegyx(winp->
window, y, x);
1792 VALUE vert, hor, corn;
1800 int cur_x, cur_y, x, y;
1804 getyx(winp->
window, cur_y, cur_x);
1807 wmove(winp->
window, 0, 0);
1809 wmove(winp->
window, y, 0);
1811 wmove(winp->
window, y, x);
1813 wmove(winp->
window, 0, x);
1815 wmove(winp->
window, cur_y, cur_x);
1957 arg->
c = wgetch(arg->
win);
1998 #if defined(HAVE_WGETNSTR) 2001 wgetstr(arg->
win, arg->
rtn);
2049 #if defined(HAVE_WDELETELN) || defined(wdeleteln) 2067 #if defined(HAVE_WINSERTLN) || defined(winsertln) 2144 #ifdef HAVE_WSETSCRREG 2157 #if defined(USE_COLOR) && defined(HAVE_WCOLOR_SET) 2229 #ifdef HAVE_WATTROFF 2299 #ifdef HAVE_WATTRSET 2321 #ifdef HAVE_WBKGDSET 2360 #ifdef HAVE_WGETBKGD 2381 #if defined(HAVE_WRESIZE) 2427 #if defined(__NetBSD__) && !defined(NCURSES_VERSION) 2437 #define window_keypad rb_f_notimplement 2460 #if defined(__NetBSD__) && !defined(NCURSES_VERSION) 2468 #define window_nodelay rb_f_notimplement 2471 #ifdef HAVE_WTIMEOUT 2492 #define window_timeout rb_f_notimplement 2526 #define pad_subpad window_subwin 2550 subpad = subwin(padp->
window, h, w, x, y);
2574 int pmr, pmc, smr, smc, sxr, sxc;
2584 prefresh(padp->
window, pmr, pmc, smr, smc, sxr, sxc);
2606 int pmr, pmc, smr, smc, sxr, sxc;
2616 #ifdef HAVE_DOUPDATE 2617 pnoutrefresh(padp->
window, pmr, pmc, smr, smc, sxr, sxc);
2619 prefresh(padp->
window, pmr, pmc, smr, smc, sxr, sxc);
2756 curses_can_change_color, 0);
2777 #if defined(HAVE_FUNC_CURSES_VERSION) 2780 #elif defined(HAVE_VAR_CURSES_VERSION) 2843 #if defined(USE_COLOR) && defined(HAVE_WCOLOR_SET) 2903 #define rb_curses_define_const(c) rb_define_const(mCurses,#c,UINT2NUM(c)) 3133 #ifdef BUTTON1_PRESSED 3143 #ifdef BUTTON1_RELEASED 3153 #ifdef BUTTON1_CLICKED 3163 #ifdef BUTTON1_DOUBLE_CLICKED 3173 #ifdef BUTTON1_TRIPLE_CLICKED 3183 #ifdef BUTTON2_PRESSED 3193 #ifdef BUTTON2_RELEASED 3203 #ifdef BUTTON2_CLICKED 3213 #ifdef BUTTON2_DOUBLE_CLICKED 3223 #ifdef BUTTON2_TRIPLE_CLICKED 3233 #ifdef BUTTON3_PRESSED 3243 #ifdef BUTTON3_RELEASED 3253 #ifdef BUTTON3_CLICKED 3263 #ifdef BUTTON3_DOUBLE_CLICKED 3273 #ifdef BUTTON3_TRIPLE_CLICKED 3283 #ifdef BUTTON4_PRESSED 3293 #ifdef BUTTON4_RELEASED 3303 #ifdef BUTTON4_CLICKED 3313 #ifdef BUTTON4_DOUBLE_CLICKED 3323 #ifdef BUTTON4_TRIPLE_CLICKED 3363 #ifdef ALL_MOUSE_EVENTS 3373 #ifdef REPORT_MOUSE_POSITION 3385 #if defined(KEY_MOUSE) && defined(USE_MOUSE) 3465 #ifdef KEY_BACKSPACE 3480 for (
i=0;
i<64;
i++) {
3481 sprintf(c,
"KEY_F%d",
i);
3483 sprintf(c,
"F%d",
i);
3928 #ifdef KEY_REFERENCE 4188 #ifdef KEY_SPREVIOUS 4320 char name[] =
"KEY_CTRL_x";
4321 for (c =
'A'; c <=
'Z'; c++) {
4326 #undef rb_curses_define_const static VALUE curses_nonl(VALUE obj)
static VALUE curses_getstr(VALUE obj)
static VALUE window_attrset(VALUE obj, VALUE attrs)
RUBY_EXTERN VALUE rb_cData
#define GetWINDOW(obj, winp)
static VALUE curses_addch(VALUE obj, VALUE ch)
static VALUE window_clrtoeol(VALUE obj)
#define curses_def_prog_mode
static VALUE window_inch(VALUE obj)
static VALUE curses_attroff(VALUE obj, VALUE attrs)
static VALUE curses_addstr(VALUE obj, VALUE str)
static VALUE window_noutrefresh(VALUE obj)
static VALUE curses_echo(VALUE obj)
static VALUE window_standout(VALUE obj)
static VALUE window_maxy(VALUE obj)
static VALUE curses_setpos(VALUE obj, VALUE y, VALUE x)
static VALUE window_setscrreg(VALUE obj, VALUE top, VALUE bottom)
static VALUE window_scrollok(VALUE obj, VALUE bf)
#define curses_escdelay_set
#define TypedData_Get_Struct(obj, type, data_type, sval)
static VALUE window_clear(VALUE obj)
static VALUE curses_raw(VALUE obj)
static VALUE window_scrl(VALUE obj, VALUE n)
static VALUE window_curx(VALUE obj)
static VALUE window_cury(VALUE obj)
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
Defines a class under the namespace of outer.
void rb_raise(VALUE exc, const char *fmt,...)
static VALUE window_begx(VALUE obj)
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
VALUE rb_ary_new3(long n,...)
static VALUE curses_refresh(VALUE obj)
static VALUE window_getch(VALUE obj)
#define curses_escdelay_get
static VALUE curses_doupdate(VALUE obj)
static void * getstr_func(void *arg)
void rb_gc_register_address(VALUE *addr)
static VALUE curses_cbreak(VALUE obj)
void rb_undef_method(VALUE klass, const char *name)
static VALUE window_move(VALUE obj, VALUE y, VALUE x)
static VALUE window_setpos(VALUE obj, VALUE y, VALUE x)
static VALUE curses_cols(void)
static VALUE window_maxx(VALUE obj)
#define curses_tabsize_get
static void curses_finalize(VALUE dummy)
static VALUE prep_window(VALUE class, WINDOW *window)
static void no_window(void)
static VALUE curses_keyname(VALUE obj, VALUE c)
static VALUE curses_deleteln(VALUE obj)
static VALUE curses_setscrreg(VALUE obj, VALUE top, VALUE bottom)
static VALUE curses_lines(void)
static VALUE window_insertln(VALUE obj)
static VALUE window_initialize(VALUE obj, VALUE h, VALUE w, VALUE top, VALUE left)
static VALUE curses_noecho(VALUE obj)
int rb_block_given_p(void)
static const rb_data_type_t windata_type
static VALUE curses_delch(VALUE obj)
static VALUE window_scroll(VALUE obj)
static VALUE window_addstr(VALUE obj, VALUE str)
static VALUE window_delch(VALUE obj)
static VALUE window_bkgdset(VALUE obj, VALUE ch)
RUBY_EXTERN VALUE rb_cObject
void rb_gc_unregister_address(VALUE *addr)
static VALUE curses_scrl(VALUE obj, VALUE n)
static VALUE curses_flash(VALUE obj)
static VALUE window_box(int argc, VALUE *argv, VALUE self)
static void * wgetstr_func(void *_arg)
static VALUE window_idlok(VALUE obj, VALUE bf)
static VALUE window_attroff(VALUE obj, VALUE attrs)
VALUE rb_locale_str_new(const char *, long)
void rb_define_const(VALUE, const char *, VALUE)
static VALUE curses_inch(VALUE obj)
static VALUE window_refresh(VALUE obj)
VALUE rb_obj_alloc(VALUE)
static VALUE window_bkgd(VALUE obj, VALUE ch)
static VALUE curses_nl(VALUE obj)
void * rb_thread_call_without_gvl(void *(*func)(void *), void *data1, rb_unblock_function_t *ubf, void *data2)
VALUE rb_locale_str_new_cstr(const char *)
void rb_define_module_function(VALUE module, const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a module function for module.
static VALUE curses_bkgdset(VALUE obj, VALUE ch)
VALUE rb_sprintf(const char *format,...)
char rtn[GETSTR_BUF_SIZE]
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
VALUE rb_str_export_locale(VALUE)
static void window_free(void *p)
static int curses_char(VALUE c)
static VALUE window_resize(VALUE obj, VALUE lin, VALUE col)
static VALUE curses_attron(VALUE obj, VALUE attrs)
VALUE rb_str_new_cstr(const char *)
static VALUE window_standend(VALUE obj)
static VALUE curses_init_screen(void)
static size_t window_memsize(const void *p)
static VALUE curses_nocbreak(VALUE obj)
void rb_set_end_proc(void(*func)(VALUE), VALUE data)
VALUE rb_define_module_under(VALUE outer, const char *name)
#define StringValueCStr(v)
static VALUE curses_attrset(VALUE obj, VALUE attrs)
static VALUE curses_standend(VALUE obj)
static VALUE window_getbkgd(VALUE obj)
static VALUE window_s_allocate(VALUE class)
static VALUE curses_clear(VALUE obj)
static VALUE curses_standout(VALUE obj)
static VALUE window_subwin(VALUE obj, VALUE height, VALUE width, VALUE top, VALUE left)
static VALUE curses_curs_set(VALUE obj, VALUE visibility)
static VALUE curses_close_screen(void)
static VALUE curses_beep(VALUE obj)
#define curses_reset_prog_mode
static VALUE curses_bkgd(VALUE obj, VALUE ch)
#define TypedData_Make_Struct(klass, type, data_type, sval)
static VALUE curses_insch(VALUE obj, VALUE ch)
static void * getch_func(void *arg)
static VALUE window_begy(VALUE obj)
static void version(void)
static VALUE curses_insertln(VALUE obj)
static VALUE window_deleteln(VALUE obj)
#define rb_curses_define_const(c)
VALUE rb_define_module(const char *name)
static VALUE window_close(VALUE obj)
static VALUE window_insch(VALUE obj, VALUE ch)
static VALUE window_getstr(VALUE obj)
static VALUE curses_clrtoeol(void)
static VALUE window_attron(VALUE obj, VALUE attrs)
static VALUE window_addch(VALUE obj, VALUE ch)
static void * wgetch_func(void *_arg)
#define curses_use_default_colors
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
VALUE rb_str_new2(const char *)
#define curses_tabsize_set
static VALUE curses_noraw(VALUE obj)
static VALUE curses_resizeterm(VALUE obj, VALUE lin, VALUE col)
static VALUE curses_getch(VALUE obj)
static VALUE window_addstr2(VALUE obj, VALUE str)
VALUE rb_obj_class(VALUE)