From: Brendan Hansen Date: Wed, 27 Apr 2022 19:40:23 +0000 (-0500) Subject: added more ncurses functions X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=02d505714a69b3d4e13c880223d88fef4b62a9e5;p=onyx.git added more ncurses functions --- diff --git a/modules/ncurses/module.onyx b/modules/ncurses/module.onyx index 3ca8d6b9..5908a1f3 100644 --- a/modules/ncurses/module.onyx +++ b/modules/ncurses/module.onyx @@ -25,7 +25,7 @@ void __get_max_yx(WINDOW *w, int *y, int *x) { getmaxyx(w, *y, *x); } """ cast_map :: (#type struct {type: type_expr; name: str;}).[ .{ WINDOW, "WINDOW *" }, - ] + ] */ // initscr @@ -35,6 +35,7 @@ void __get_max_yx(WINDOW *w, int *y, int *x) { getmaxyx(w, *y, *x); } newterm :: (type: cstr, out_fd, in_fd: ^u32) -> SCREEN --- set_term :: (new: SCREEN) -> SCREEN --- delscreen :: (sp: SCREEN) -> void --- + exit_curses :: (code: i32) -> void --- // color start_color :: () -> i32 --- @@ -269,12 +270,113 @@ void __get_max_yx(WINDOW *w, int *y, int *x) { getmaxyx(w, *y, *x); } mvvline :: (y, x: i32, ch: chtype, n: i32) -> i32 --- mvwvline :: (w: WINDOW, y, x: i32, ch: chtype, n: i32) -> i32 --- + // new_pair + allow_pair :: (fg, bg: i32) -> i32 --- + find_pair :: (fg, bg: i32) -> i32 --- + free_pair :: (pair: i32) -> i32 --- + + // default_colors + use_default_colors :: () -> i32 --- + assume_default_colors :: (fg, bg: i32) -> i32 --- + + // termattrs + buadrate :: () -> i32 --- + erasechar :: () -> u8 --- + has_ic :: () -> bool --- + has_il :: () -> bool --- + killchar :: () -> u8 --- + longname :: () -> cptr(u8) --- + term_attrs :: () -> attr_t --- + termattrs :: () -> chtype --- + termname :: () -> void --- + + // beep + beep :: () -> void --- + flash :: () -> void --- + + // overlay + overlay :: (srcwin: WINDOW, dstwin: WINDOW) -> i32 --- + overwrite :: (srcwin: WINDOW, dstwin: WINDOW) -> i32 --- + copywin :: (srcwin: WINDOW, dstwin: WINDOW, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol, overlay: i32) -> i32 --- + + // pad + newpad :: (nlines, ncols: i32) -> WINDOW --- + subpad :: (orig: WINDOW, nlines, ncols: i32, begin_y, begin_x: i32) -> WINDOW --- + prefresh :: (pad: WINDOW, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol: i32) -> i32 --- + pnoutrefresh :: (pad: WINDOW, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol: i32) -> i32 --- + pechochar :: (pad: WINDOW, ch: chtype) -> i32 --- + + // define_key + define_key :: (definition: cstr, keycode: i32) -> i32 --- + keyok :: (keycode: i32, enable: bool) -> i32 --- + key_defined :: (definition: cstr) -> i32 --- + + // delch + delch :: () -> i32 --- + wdelch :: (w: WINDOW) -> i32 --- + mvdelch :: (y, x: i32) -> i32 --- + mvwdelch :: (w: WINDOW, y, x: i32) -> i32 --- + + // deleteln + deleteln :: () -> i32 --- + wdeleteln :: (w: WINDOW) -> i32 --- + insdelln :: (n: i32) -> i32 --- + winsdelln :: (w: WINDOW, n: i32) -> i32 --- + insertln :: () -> i32 --- + winsertln :: (w: WINDOW) -> i32 --- + + // slk + slk_init :: (fmt: i32) -> i32 --- + slk_set :: (labnum: i32, label: cstr, fmt: i32) -> i32 --- + slk_label :: (labnum: i32) -> cptr(u8) --- + slk_refresh :: () -> i32 --- + slk_noutrefresh :: () -> i32 --- + slk_clear :: () -> i32 --- + slk_restore :: () -> i32 --- + slk_touch :: () -> i32 --- + slk_attron :: (attrs: chtype) -> i32 --- + slk_attroff :: (attrs: chtype) -> i32 --- + slk_attrset :: (attrs: chtype) -> i32 --- + slk_attr :: () -> attr_t --- + slk_color :: (pair: i32) -> i32 --- + + // legacy + getattrs :: (w: WINDOW) -> i32 --- + getbegx :: (w: WINDOW) -> i32 --- + getbegy :: (w: WINDOW) -> i32 --- + getcurx :: (w: WINDOW) -> i32 --- + getcury :: (w: WINDOW) -> i32 --- + getmaxx :: (w: WINDOW) -> i32 --- + getmaxy :: (w: WINDOW) -> i32 --- + getparx :: (w: WINDOW) -> i32 --- + getpary :: (w: WINDOW) -> i32 --- + + // mouse + has_mouse :: () -> bool --- + getmouse :: (@out event: ^MEvent) -> i32 --- + ungetmouse :: (@out event: ^MEvent) -> i32 --- + mousemask :: (newmask: mmask_t, @out oldmask: ^mmask_t) -> mmask_t --- + wenclone :: (w: WINDOW, y, x: i32) -> bool --- + mouse_trafo :: (py, px: ^i32, to_screen: bool) -> bool --- + wmouse_trafo :: (w: WINDOW, py, px: ^i32, to_screen: bool) -> bool --- + mouseinterval :: (erval: i32) -> i32 --- + + // resizeterm + is_term_resized :: (lines, columns: i32) -> bool --- + resize_term :: (lines, columns: i32) -> bool --- + resizeterm :: (lines, columns: i32) -> bool --- + + // scroll + scroll :: (w: WINDOW) -> i32 --- + scrl :: (n: i32) -> i32 --- + wscrl :: (w: WINDOW, n: i32) -> i32 --- // variables __get_stdscr :: () -> WINDOW --- NCURSES_ACS :: (a: i32) -> chtype --- } + stdscr :: __get_stdscr getyx :: __get_yx getparyx :: __get_par_yx @@ -334,6 +436,51 @@ SCREEN :: #distinct u64 chtype :: u32 attr_t :: u32 +mmask_t :: u64 +MEvent :: struct { + id: u16; + x, y, z: i32; + bstate: mmask_t; +} + +BUTTON1_RELEASED :: 0x01 << (0 * 6) +BUTTON1_PRESSED :: 0x02 << (0 * 6) +BUTTON1_CLICKED :: 0x04 << (0 * 6) +BUTTON1_DOUBLE_CLICKED :: 0x08 << (0 * 6) +BUTTON1_TRIPLE_CLICKED :: 0x10 << (0 * 6) +BUTTON2_RELEASED :: 0x01 << (1 * 6) +BUTTON2_PRESSED :: 0x02 << (1 * 6) +BUTTON2_CLICKED :: 0x04 << (1 * 6) +BUTTON2_DOUBLE_CLICKED :: 0x08 << (1 * 6) +BUTTON2_TRIPLE_CLICKED :: 0x10 << (1 * 6) +BUTTON3_RELEASED :: 0x01 << (2 * 6) +BUTTON3_PRESSED :: 0x02 << (2 * 6) +BUTTON3_CLICKED :: 0x04 << (2 * 6) +BUTTON3_DOUBLE_CLICKED :: 0x08 << (2 * 6) +BUTTON3_TRIPLE_CLICKED :: 0x10 << (2 * 6) +BUTTON4_RELEASED :: 0x01 << (3 * 6) +BUTTON4_PRESSED :: 0x02 << (3 * 6) +BUTTON4_CLICKED :: 0x04 << (3 * 6) +BUTTON4_DOUBLE_CLICKED :: 0x08 << (3 * 6) +BUTTON4_TRIPLE_CLICKED :: 0x10 << (3 * 6) +BUTTON5_RELEASED :: 0x01 << (4 * 6) +BUTTON5_PRESSED :: 0x02 << (4 * 6) +BUTTON5_CLICKED :: 0x04 << (4 * 6) +BUTTON5_DOUBLE_CLICKED :: 0x08 << (4 * 6) +BUTTON5_TRIPLE_CLICKED :: 0x10 << (4 * 6) +BUTTON_CTRL :: 0x01 << (6 * 6) +BUTTON_SHIFT :: 0x02 << (6 * 6) +BUTTON_ALT :: 0x04 << (6 * 6) +REPORT_MOUSE_POSITION :: 0x08 << (6 * 6) + +BUTTON_RELEASE :: macro (e: mmask_t, button: i32) => (e & (1 << (button * 6))) != 0; +BUTTON_PRESS :: macro (e: mmask_t, button: i32) => (e & (2 << (button * 6))) != 0; +BUTTON_CLICK :: macro (e: mmask_t, button: i32) => (e & (4 << (button * 6))) != 0; +BUTTON_DOUBLE_CLICK :: macro (e: mmask_t, button: i32) => (e & (8 << (button * 6))) != 0; +BUTTON_TRIPLE_CLICK :: macro (e: mmask_t, button: i32) => (e & (16 << (button * 6))) != 0; + +ALL_MOUSE_EVENTS :: (1 << (7 * 6)) - 1 + A_NORMAL :: 0 A_ATTRIBUTES :: 0xffffff00 A_CHARTEXT :: 0xff @@ -364,3 +511,93 @@ COLOR_MAGENTA :: 5 COLOR_CYAN :: 6 COLOR_WHITE :: 7 + +KEY_DOWN :: 0402 /* down-arrow key */ +KEY_UP :: 0403 /* up-arrow key */ +KEY_LEFT :: 0404 /* left-arrow key */ +KEY_RIGHT :: 0405 /* right-arrow key */ +KEY_HOME :: 0406 /* home key */ +KEY_BACKSPACE :: 0407 /* backspace key */ +KEY_F0 :: 0410 /* Function keys. Space for 64 */ +KEY_F :: macro (n) => KEY_FO + n /* Value of function key n */ +KEY_DL :: 0510 /* delete-line key */ +KEY_IL :: 0511 /* insert-line key */ +KEY_DC :: 0512 /* delete-character key */ +KEY_IC :: 0513 /* insert-character key */ +KEY_EIC :: 0514 /* sent by rmir or smir in insert mode */ +KEY_CLEAR :: 0515 /* clear-screen or erase key */ +KEY_EOS :: 0516 /* clear-to-end-of-screen key */ +KEY_EOL :: 0517 /* clear-to-end-of-line key */ +KEY_SF :: 0520 /* scroll-forward key */ +KEY_SR :: 0521 /* scroll-backward key */ +KEY_NPAGE :: 0522 /* next-page key */ +KEY_PPAGE :: 0523 /* previous-page key */ +KEY_STAB :: 0524 /* set-tab key */ +KEY_CTAB :: 0525 /* clear-tab key */ +KEY_CATAB :: 0526 /* clear-all-tabs key */ +KEY_ENTER :: 0527 /* enter/send key */ +KEY_PRINT :: 0532 /* print key */ +KEY_LL :: 0533 /* lower-left key (home down) */ +KEY_A1 :: 0534 /* upper left of keypad */ +KEY_A3 :: 0535 /* upper right of keypad */ +KEY_B2 :: 0536 /* center of keypad */ +KEY_C1 :: 0537 /* lower left of keypad */ +KEY_C3 :: 0540 /* lower right of keypad */ +KEY_BTAB :: 0541 /* back-tab key */ +KEY_BEG :: 0542 /* begin key */ +KEY_CANCEL :: 0543 /* cancel key */ +KEY_CLOSE :: 0544 /* close key */ +KEY_COMMAND :: 0545 /* command key */ +KEY_COPY :: 0546 /* copy key */ +KEY_CREATE :: 0547 /* create key */ +KEY_END :: 0550 /* end key */ +KEY_EXIT :: 0551 /* exit key */ +KEY_FIND :: 0552 /* find key */ +KEY_HELP :: 0553 /* help key */ +KEY_MARK :: 0554 /* mark key */ +KEY_MESSAGE :: 0555 /* message key */ +KEY_MOVE :: 0556 /* move key */ +KEY_NEXT :: 0557 /* next key */ +KEY_OPEN :: 0560 /* open key */ +KEY_OPTIONS :: 0561 /* options key */ +KEY_PREVIOUS :: 0562 /* previous key */ +KEY_REDO :: 0563 /* redo key */ +KEY_REFERENCE :: 0564 /* reference key */ +KEY_REFRESH :: 0565 /* refresh key */ +KEY_REPLACE :: 0566 /* replace key */ +KEY_RESTART :: 0567 /* restart key */ +KEY_RESUME :: 0570 /* resume key */ +KEY_SAVE :: 0571 /* save key */ +KEY_SBEG :: 0572 /* shifted begin key */ +KEY_SCANCEL :: 0573 /* shifted cancel key */ +KEY_SCOMMAND :: 0574 /* shifted command key */ +KEY_SCOPY :: 0575 /* shifted copy key */ +KEY_SCREATE :: 0576 /* shifted create key */ +KEY_SDC :: 0577 /* shifted delete-character key */ +KEY_SDL :: 0600 /* shifted delete-line key */ +KEY_SELECT :: 0601 /* select key */ +KEY_SEND :: 0602 /* shifted end key */ +KEY_SEOL :: 0603 /* shifted clear-to-end-of-line key */ +KEY_SEXIT :: 0604 /* shifted exit key */ +KEY_SFIND :: 0605 /* shifted find key */ +KEY_SHELP :: 0606 /* shifted help key */ +KEY_SHOME :: 0607 /* shifted home key */ +KEY_SIC :: 0610 /* shifted insert-character key */ +KEY_SLEFT :: 0611 /* shifted left-arrow key */ +KEY_SMESSAGE :: 0612 /* shifted message key */ +KEY_SMOVE :: 0613 /* shifted move key */ +KEY_SNEXT :: 0614 /* shifted next key */ +KEY_SOPTIONS :: 0615 /* shifted options key */ +KEY_SPREVIOUS :: 0616 /* shifted previous key */ +KEY_SPRINT :: 0617 /* shifted print key */ +KEY_SREDO :: 0620 /* shifted redo key */ +KEY_SREPLACE :: 0621 /* shifted replace key */ +KEY_SRIGHT :: 0622 /* shifted right-arrow key */ +KEY_SRSUME :: 0623 /* shifted resume key */ +KEY_SSAVE :: 0624 /* shifted save key */ +KEY_SSUSPEND :: 0625 /* shifted suspend key */ +KEY_SUNDO :: 0626 /* shifted undo key */ +KEY_SUSPEND :: 0627 /* suspend key */ +KEY_UNDO :: 0630 /* undo key */ +KEY_MOUSE :: 0631 /* Mouse event has occurred */ + diff --git a/modules/ncurses/ncurses.c b/modules/ncurses/ncurses.c index 8ccc641c..029c211c 100644 --- a/modules/ncurses/ncurses.c +++ b/modules/ncurses/ncurses.c @@ -47,6 +47,11 @@ ONYX_DEF(delscreen, (WASM_I64), ()) { return NULL; } +ONYX_DEF(exit_curses, (WASM_I32), ()) { + exit_curses(P(0, i32)); + return NULL; +} + ONYX_DEF(start_color, (), (WASM_I32)) { results->data[0] = WASM_I32_VAL(start_color()); return NULL; @@ -977,6 +982,371 @@ ONYX_DEF(mvwvline, (WASM_I64, WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I32 return NULL; } +ONYX_DEF(allow_pair, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(allow_pair(P(0, i32), P(1, i32))); + return NULL; +} + +ONYX_DEF(find_pair, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(find_pair(P(0, i32), P(1, i32))); + return NULL; +} + +ONYX_DEF(free_pair, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(free_pair(P(0, i32))); + return NULL; +} + +ONYX_DEF(use_default_colors, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(use_default_colors()); + return NULL; +} + +ONYX_DEF(assume_default_colors, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(assume_default_colors(P(0, i32), P(1, i32))); + return NULL; +} + +ONYX_DEF(buadrate, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(buadrate()); + return NULL; +} + +ONYX_DEF(erasechar, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(erasechar()); + return NULL; +} + +ONYX_DEF(has_ic, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(has_ic()); + return NULL; +} + +ONYX_DEF(has_il, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(has_il()); + return NULL; +} + +ONYX_DEF(killchar, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(killchar()); + return NULL; +} + +ONYX_DEF(longname, (), (WASM_I64)) { + results->data[0] = WASM_I64_VAL(longname()); + return NULL; +} + +ONYX_DEF(term_attrs, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(term_attrs()); + return NULL; +} + +ONYX_DEF(termattrs, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(termattrs()); + return NULL; +} + +ONYX_DEF(termname, (), ()) { + termname(); + return NULL; +} + +ONYX_DEF(beep, (), ()) { + beep(); + return NULL; +} + +ONYX_DEF(flash, (), ()) { + flash(); + return NULL; +} + +ONYX_DEF(overlay, (WASM_I64, WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(overlay((WINDOW *) P(0, i64), (WINDOW *) P(1, i64))); + return NULL; +} + +ONYX_DEF(overwrite, (WASM_I64, WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(overwrite((WINDOW *) P(0, i64), (WINDOW *) P(1, i64))); + return NULL; +} + +ONYX_DEF(copywin, (WASM_I64, WASM_I64, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(copywin((WINDOW *) P(0, i64), (WINDOW *) P(1, i64), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), P(8, i32))); + return NULL; +} + +ONYX_DEF(newpad, (WASM_I32, WASM_I32), (WASM_I64)) { + results->data[0] = WASM_I64_VAL(newpad(P(0, i32), P(1, i32))); + return NULL; +} + +ONYX_DEF(subpad, (WASM_I64, WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I64)) { + results->data[0] = WASM_I64_VAL(subpad((WINDOW *) P(0, i64), P(1, i32), P(2, i32), P(3, i32), P(4, i32))); + return NULL; +} + +ONYX_DEF(prefresh, (WASM_I64, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(prefresh((WINDOW *) P(0, i64), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32))); + return NULL; +} + +ONYX_DEF(pnoutrefresh, (WASM_I64, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(pnoutrefresh((WINDOW *) P(0, i64), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32))); + return NULL; +} + +ONYX_DEF(pechochar, (WASM_I64, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(pechochar((WINDOW *) P(0, i64), P(1, i32))); + return NULL; +} + +ONYX_DEF(define_key, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(define_key(ONYX_PTR(P(0, i32)), P(1, i32))); + return NULL; +} + +ONYX_DEF(keyok, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(keyok(P(0, i32), P(1, i32))); + return NULL; +} + +ONYX_DEF(key_defined, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(key_defined(ONYX_PTR(P(0, i32)))); + return NULL; +} + +ONYX_DEF(delch, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(delch()); + return NULL; +} + +ONYX_DEF(wdelch, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(wdelch((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(mvdelch, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(mvdelch(P(0, i32), P(1, i32))); + return NULL; +} + +ONYX_DEF(mvwdelch, (WASM_I64, WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(mvwdelch((WINDOW *) P(0, i64), P(1, i32), P(2, i32))); + return NULL; +} + +ONYX_DEF(deleteln, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(deleteln()); + return NULL; +} + +ONYX_DEF(wdeleteln, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(wdeleteln((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(insdelln, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(insdelln(P(0, i32))); + return NULL; +} + +ONYX_DEF(winsdelln, (WASM_I64, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(winsdelln((WINDOW *) P(0, i64), P(1, i32))); + return NULL; +} + +ONYX_DEF(insertln, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(insertln()); + return NULL; +} + +ONYX_DEF(winsertln, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(winsertln((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(slk_init, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_init(P(0, i32))); + return NULL; +} + +ONYX_DEF(slk_set, (WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_set(P(0, i32), ONYX_PTR(P(1, i32)), P(2, i32))); + return NULL; +} + +ONYX_DEF(slk_label, (WASM_I32), (WASM_I64)) { + results->data[0] = WASM_I64_VAL(slk_label(P(0, i32))); + return NULL; +} + +ONYX_DEF(slk_refresh, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_refresh()); + return NULL; +} + +ONYX_DEF(slk_noutrefresh, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_noutrefresh()); + return NULL; +} + +ONYX_DEF(slk_clear, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_clear()); + return NULL; +} + +ONYX_DEF(slk_restore, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_restore()); + return NULL; +} + +ONYX_DEF(slk_touch, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_touch()); + return NULL; +} + +ONYX_DEF(slk_attron, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_attron(P(0, i32))); + return NULL; +} + +ONYX_DEF(slk_attroff, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_attroff(P(0, i32))); + return NULL; +} + +ONYX_DEF(slk_attrset, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_attrset(P(0, i32))); + return NULL; +} + +ONYX_DEF(slk_attr, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_attr()); + return NULL; +} + +ONYX_DEF(slk_color, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(slk_color(P(0, i32))); + return NULL; +} + +ONYX_DEF(getattrs, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(getattrs((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(getbegx, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(getbegx((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(getbegy, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(getbegy((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(getcurx, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(getcurx((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(getcury, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(getcury((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(getmaxx, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(getmaxx((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(getmaxy, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(getmaxy((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(getparx, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(getparx((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(getpary, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(getpary((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(has_mouse, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(has_mouse()); + return NULL; +} + +ONYX_DEF(getmouse, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(getmouse(ONYX_PTR(P(0, i32)))); + return NULL; +} + +ONYX_DEF(ungetmouse, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(ungetmouse(ONYX_PTR(P(0, i32)))); + return NULL; +} + +ONYX_DEF(mousemask, (WASM_I64, WASM_I32), (WASM_I64)) { + results->data[0] = WASM_I64_VAL(mousemask(P(0, i64), ONYX_PTR(P(1, i32)))); + return NULL; +} + +ONYX_DEF(wenclone, (WASM_I64, WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(wenclone((WINDOW *) P(0, i64), P(1, i32), P(2, i32))); + return NULL; +} + +ONYX_DEF(mouse_trafo, (WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(mouse_trafo(ONYX_PTR(P(0, i32)), ONYX_PTR(P(1, i32)), P(2, i32))); + return NULL; +} + +ONYX_DEF(wmouse_trafo, (WASM_I64, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(wmouse_trafo((WINDOW *) P(0, i64), ONYX_PTR(P(1, i32)), ONYX_PTR(P(2, i32)), P(3, i32))); + return NULL; +} + +ONYX_DEF(mouseinterval, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(mouseinterval(P(0, i32))); + return NULL; +} + +ONYX_DEF(is_term_resized, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(is_term_resized(P(0, i32), P(1, i32))); + return NULL; +} + +ONYX_DEF(resize_term, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(resize_term(P(0, i32), P(1, i32))); + return NULL; +} + +ONYX_DEF(resizeterm, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(resizeterm(P(0, i32), P(1, i32))); + return NULL; +} + +ONYX_DEF(scroll, (WASM_I64), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(scroll((WINDOW *) P(0, i64))); + return NULL; +} + +ONYX_DEF(scrl, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(scrl(P(0, i32))); + return NULL; +} + +ONYX_DEF(wscrl, (WASM_I64, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(wscrl((WINDOW *) P(0, i64), P(1, i32))); + return NULL; +} + ONYX_DEF(__get_stdscr, (), (WASM_I64)) { results->data[0] = WASM_I64_VAL(__get_stdscr()); return NULL; @@ -996,6 +1366,7 @@ ONYX_LIBRARY { ONYX_FUNC(newterm) ONYX_FUNC(set_term) ONYX_FUNC(delscreen) + ONYX_FUNC(exit_curses) ONYX_FUNC(start_color) ONYX_FUNC(has_colors) ONYX_FUNC(can_change_color) @@ -1182,6 +1553,79 @@ ONYX_LIBRARY { ONYX_FUNC(mvwhline) ONYX_FUNC(mvvline) ONYX_FUNC(mvwvline) + ONYX_FUNC(allow_pair) + ONYX_FUNC(find_pair) + ONYX_FUNC(free_pair) + ONYX_FUNC(use_default_colors) + ONYX_FUNC(assume_default_colors) + ONYX_FUNC(buadrate) + ONYX_FUNC(erasechar) + ONYX_FUNC(has_ic) + ONYX_FUNC(has_il) + ONYX_FUNC(killchar) + ONYX_FUNC(longname) + ONYX_FUNC(term_attrs) + ONYX_FUNC(termattrs) + ONYX_FUNC(termname) + ONYX_FUNC(beep) + ONYX_FUNC(flash) + ONYX_FUNC(overlay) + ONYX_FUNC(overwrite) + ONYX_FUNC(copywin) + ONYX_FUNC(newpad) + ONYX_FUNC(subpad) + ONYX_FUNC(prefresh) + ONYX_FUNC(pnoutrefresh) + ONYX_FUNC(pechochar) + ONYX_FUNC(define_key) + ONYX_FUNC(keyok) + ONYX_FUNC(key_defined) + ONYX_FUNC(delch) + ONYX_FUNC(wdelch) + ONYX_FUNC(mvdelch) + ONYX_FUNC(mvwdelch) + ONYX_FUNC(deleteln) + ONYX_FUNC(wdeleteln) + ONYX_FUNC(insdelln) + ONYX_FUNC(winsdelln) + ONYX_FUNC(insertln) + ONYX_FUNC(winsertln) + ONYX_FUNC(slk_init) + ONYX_FUNC(slk_set) + ONYX_FUNC(slk_label) + ONYX_FUNC(slk_refresh) + ONYX_FUNC(slk_noutrefresh) + ONYX_FUNC(slk_clear) + ONYX_FUNC(slk_restore) + ONYX_FUNC(slk_touch) + ONYX_FUNC(slk_attron) + ONYX_FUNC(slk_attroff) + ONYX_FUNC(slk_attrset) + ONYX_FUNC(slk_attr) + ONYX_FUNC(slk_color) + ONYX_FUNC(getattrs) + ONYX_FUNC(getbegx) + ONYX_FUNC(getbegy) + ONYX_FUNC(getcurx) + ONYX_FUNC(getcury) + ONYX_FUNC(getmaxx) + ONYX_FUNC(getmaxy) + ONYX_FUNC(getparx) + ONYX_FUNC(getpary) + ONYX_FUNC(has_mouse) + ONYX_FUNC(getmouse) + ONYX_FUNC(ungetmouse) + ONYX_FUNC(mousemask) + ONYX_FUNC(wenclone) + ONYX_FUNC(mouse_trafo) + ONYX_FUNC(wmouse_trafo) + ONYX_FUNC(mouseinterval) + ONYX_FUNC(is_term_resized) + ONYX_FUNC(resize_term) + ONYX_FUNC(resizeterm) + ONYX_FUNC(scroll) + ONYX_FUNC(scrl) + ONYX_FUNC(wscrl) ONYX_FUNC(__get_stdscr) ONYX_FUNC(NCURSES_ACS) NULL diff --git a/modules/ncurses/onyx_ncurses.so b/modules/ncurses/onyx_ncurses.so index ca0c57c5..e3be4800 100755 Binary files a/modules/ncurses/onyx_ncurses.so and b/modules/ncurses/onyx_ncurses.so differ