You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
4.6 KiB
176 lines
4.6 KiB
diff -aurN a/ncurses_fe.c b/ncurses_fe.c
|
|
--- a/ncurses_fe.c 2012-06-16 13:05:19.000000000 -0400
|
|
+++ b/ncurses_fe.c 2019-02-06 10:41:09.000000000 -0500
|
|
@@ -123,7 +123,9 @@
|
|
PHP_FE(ncurses_savetty, NULL)
|
|
PHP_FE(ncurses_termattrs, NULL)
|
|
PHP_FE(ncurses_use_default_colors, NULL)
|
|
+#ifdef HAVE_NCURSES_SLK_ATTR
|
|
PHP_FE(ncurses_slk_attr, NULL)
|
|
+#endif
|
|
PHP_FE(ncurses_slk_clear, NULL)
|
|
PHP_FE(ncurses_slk_noutrefresh, NULL)
|
|
PHP_FE(ncurses_slk_refresh, NULL)
|
|
@@ -191,7 +193,9 @@
|
|
#ifdef HAVE_NCURSES_ASSUME_DEFAULT_COLORS
|
|
PHP_FE(ncurses_assume_default_colors, NULL)
|
|
#endif
|
|
+#ifdef HAVE_NCURSES_DEFINE_KEY
|
|
PHP_FE(ncurses_define_key, NULL)
|
|
+#endif
|
|
PHP_FE(ncurses_hline, NULL)
|
|
PHP_FE(ncurses_vline, NULL)
|
|
PHP_FE(ncurses_keyok, NULL)
|
|
@@ -205,6 +209,10 @@
|
|
PHP_FE(ncurses_waddstr, NULL)
|
|
PHP_FE(ncurses_wnoutrefresh, NULL)
|
|
PHP_FE(ncurses_wclear, NULL)
|
|
+ PHP_FE(ncurses_wscrl, NULL)
|
|
+ PHP_FE(ncurses_wsetscrreg, NULL)
|
|
+ PHP_FE(ncurses_scrollok, NULL)
|
|
+
|
|
#ifdef HAVE_NCURSES_COLOR_SET
|
|
PHP_FE(ncurses_wcolor_set, NULL)
|
|
#endif
|
|
diff -aurN a/ncurses_functions.c b/ncurses_functions.c
|
|
--- a/ncurses_functions.c 2019-06-07 11:00:54.713250845 -0400
|
|
+++ b/ncurses_functions.c 2019-02-06 10:41:09.000000000 -0500
|
|
@@ -163,16 +163,25 @@
|
|
*pscr = stdscr;
|
|
zscr = zend_register_resource(pscr, le_ncurses_windows);
|
|
ZVAL_RES(&c.value, zscr);
|
|
+#if PHP_VERSION_ID < 70300
|
|
c.flags = CONST_CS;
|
|
+#endif
|
|
c.name = zend_string_init("STDSCR", sizeof("STDSCR")-1, 0);
|
|
zend_register_constant(&c);
|
|
|
|
+#if PHP_VERSION_ID < 70300
|
|
#define PHP_NCURSES_DEF_CONST(x) \
|
|
ZVAL_LONG(&c.value, x); \
|
|
c.flags = CONST_CS; \
|
|
c.name = zend_string_init("NCURSES_" #x, sizeof("NCURSES_" #x)-1, 0); \
|
|
zend_register_constant(&c)
|
|
#else
|
|
+#define PHP_NCURSES_DEF_CONST(x) \
|
|
+ ZVAL_LONG(&c.value, x); \
|
|
+ c.name = zend_string_init("NCURSES_" #x, sizeof("NCURSES_" #x)-1, 0); \
|
|
+ zend_register_constant(&c)
|
|
+#endif
|
|
+#else
|
|
zval *zscr;
|
|
|
|
*pscr = stdscr;
|
|
@@ -188,7 +197,6 @@
|
|
/* we need this "interesting" arrangement because the
|
|
* underlying values of the ACS_XXX defines are not
|
|
* initialized until after ncurses has been initialized */
|
|
-
|
|
#define PHP_NCURSES_DEF_CONST(x) \
|
|
ZVAL_LONG(zscr, x); \
|
|
c.value = *zscr; \
|
|
@@ -1904,6 +1912,66 @@
|
|
}
|
|
/* }}} */
|
|
|
|
+/* {{{ proto int ncurses_wscrl(resource window, int count)
|
|
+ Scrolls window content up or down without changing current position */
|
|
+PHP_FUNCTION(ncurses_wscrl)
|
|
+{
|
|
+ zval *handle;
|
|
+ zend_long intarg;
|
|
+ WINDOW **w;
|
|
+
|
|
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &handle, &intarg) == FAILURE) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ IS_NCURSES_INITIALIZED();
|
|
+
|
|
+ FETCH_WINRES(w, &handle);
|
|
+
|
|
+ RETURN_LONG(wscrl(*w, intarg));
|
|
+}
|
|
+/* }}} */
|
|
+
|
|
+/* {{{ proto int ncurses_wsetscrreg(resource window, int top, int bot)
|
|
+ Set region for scrolling */
|
|
+PHP_FUNCTION(ncurses_wsetscrreg)
|
|
+{
|
|
+ zval *handle;
|
|
+ zend_long top, bot;
|
|
+ WINDOW **w;
|
|
+
|
|
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &handle, &top, &bot) == FAILURE) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ IS_NCURSES_INITIALIZED();
|
|
+
|
|
+ FETCH_WINRES(w, &handle);
|
|
+
|
|
+ RETURN_LONG(wsetscrreg(*w, top, bot));
|
|
+}
|
|
+/* }}} */
|
|
+
|
|
+/* {{{ proto int ncurses_scrollok(resource window, bool bf)
|
|
+ Enable or disable scrolling of window content */
|
|
+PHP_FUNCTION(ncurses_scrollok)
|
|
+{
|
|
+ zval *handle;
|
|
+ zend_bool bf;
|
|
+ WINDOW **w;
|
|
+
|
|
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb", &handle, &bf) == FAILURE) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ IS_NCURSES_INITIALIZED();
|
|
+
|
|
+ FETCH_WINRES(w, &handle);
|
|
+
|
|
+ RETURN_LONG(scrollok(*w, bf));
|
|
+}
|
|
+/* }}} */
|
|
+
|
|
/* {{{ proto string ncurses_termname(void)
|
|
Returns terminal name */
|
|
PHP_FUNCTION(ncurses_termname)
|
|
@@ -2609,7 +2677,11 @@
|
|
if (above) {
|
|
#if PHP_MAJOR_VERSION >= 7
|
|
zend_resource *id = (zend_resource *)panel_userptr(above);
|
|
+#if PHP_VERSION_ID < 70300
|
|
GC_REFCOUNT(id)++;
|
|
+#else
|
|
+ GC_ADDREF(id);
|
|
+#endif
|
|
RETURN_RES(id);
|
|
#else
|
|
long id = (long)panel_userptr(above);
|
|
@@ -2643,7 +2715,11 @@
|
|
if (below) {
|
|
#if PHP_MAJOR_VERSION >= 7
|
|
zend_resource *id = (zend_resource *)panel_userptr(below);
|
|
+#if PHP_VERSION_ID < 70300
|
|
GC_REFCOUNT(id)++;
|
|
+#else
|
|
+ GC_ADDREF(id);
|
|
+#endif
|
|
RETURN_RES(id);
|
|
#else
|
|
long id = (long)panel_userptr(below);
|
|
diff -aurN a/php_ncurses_fe.h b/php_ncurses_fe.h
|
|
--- a/php_ncurses_fe.h 2012-06-16 13:05:19.000000000 -0400
|
|
+++ b/php_ncurses_fe.h 2019-02-06 10:41:09.000000000 -0500
|
|
@@ -158,6 +158,9 @@
|
|
PHP_FUNCTION(ncurses_prefresh);
|
|
PHP_FUNCTION(ncurses_pnoutrefresh);
|
|
|
|
+PHP_FUNCTION(ncurses_wscrl);
|
|
+PHP_FUNCTION(ncurses_wsetscrreg);
|
|
+PHP_FUNCTION(ncurses_scrollok);
|
|
PHP_FUNCTION(ncurses_wstandout);
|
|
PHP_FUNCTION(ncurses_wstandend);
|
|
PHP_FUNCTION(ncurses_wattrset);
|