aboutsummaryrefslogtreecommitdiff
path: root/contrib/ncurses/test/lrtest.c
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2000-01-26 16:43:25 +0000
committerPeter Wemm <peter@FreeBSD.org>2000-01-26 16:43:25 +0000
commit1759abf3ae1a38b7578df7996346544b66e508ad (patch)
tree506da7a5cf693bf8780ad013837cbd67913bedbb /contrib/ncurses/test/lrtest.c
parent0e3d540892016a47f6a68ec9ba2879d35ce5f7c2 (diff)
downloadsrc-1759abf3ae1a38b7578df7996346544b66e508ad.tar.gz
src-1759abf3ae1a38b7578df7996346544b66e508ad.zip
Import ncurses-5.0-release to update the 5.0-prerelease that we had.vendor/ncurses/5.0
Notes
Notes: svn path=/vendor/ncurses/dist/; revision=56639 svn path=/vendor/ncurses/5.0/; revision=56641; tag=vendor/ncurses/5.0
Diffstat (limited to 'contrib/ncurses/test/lrtest.c')
-rw-r--r--contrib/ncurses/test/lrtest.c117
1 files changed, 100 insertions, 17 deletions
diff --git a/contrib/ncurses/test/lrtest.c b/contrib/ncurses/test/lrtest.c
index 893e1cde9e7c..fb99641117ce 100644
--- a/contrib/ncurses/test/lrtest.c
+++ b/contrib/ncurses/test/lrtest.c
@@ -6,42 +6,125 @@
* This can't be part of the ncurses test-program, because ncurses rips off the
* bottom line to do labels.
*
- * $Id: lrtest.c,v 0.7 1998/02/12 23:49:11 tom Exp $
+ * $Id: lrtest.c,v 0.14 1999/10/23 19:44:35 tom Exp $
*/
#include <test.priv.h>
+#include <term.h>
+
+typedef struct {
+ int y, x, mode, dir, inc;
+ chtype value;
+} MARK;
+
+/*
+ * Make a couple of markers go 'round the border to demonstrate that we can
+ * really write to all positions properly.
+ */
+static void
+show(MARK * m)
+{
+ mvaddch(m->y, m->x, m->value);
+ if (m->mode == 0) { /* along the x-direction */
+ m->x += m->inc;
+ if (m->x >= COLS) {
+ m->x = COLS - 1;
+ m->inc = -m->dir * m->inc;
+ m->y += m->inc;
+ m->mode = 1;
+ } else if (m->x < 0) {
+ m->x = 0;
+ m->inc = -m->dir * m->inc;
+ m->y += m->inc;
+ m->mode = 1;
+ }
+ } else { /* along the y-direction */
+ m->y += m->inc;
+ if (m->y >= LINES) {
+ m->y = LINES - 1;
+ m->inc = m->dir * m->inc;
+ m->x += m->inc;
+ m->mode = 0;
+ } else if (m->y < 0) {
+ m->y = 0;
+ m->inc = m->dir * m->inc;
+ m->x += m->inc;
+ m->mode = 0;
+ }
+ }
+}
int
main(
- int argc GCC_UNUSED,
- char *argv[] GCC_UNUSED)
+ int argc GCC_UNUSED,
+ char *argv[]GCC_UNUSED)
{
+ static MARK marks[] =
+ {
+ {0, 0, 0, -1, 1, '+' | A_BOLD},
+ {0, 0, 1, 1, 2, 'X'},
+ {0, 0, 1, -1, 3, 'Y'},
+ {0, 8, 0, -1, 1, '+' | A_BOLD},
+ {0, 9, 0, -1, 1, '+' | A_BOLD},
+ {1, 0, 1, 1, 1, '*' | A_REVERSE},
+ {2, 0, 1, 1, 1, '*' | A_REVERSE}
+ };
+
initscr();
+ noecho();
+ cbreak();
+ nodelay(stdscr, TRUE);
+ curs_set(0);
- move(LINES/2-1, 4);
- if (!has_ic())
- {
+#ifdef KEY_RESIZE
+ keypad(stdscr, TRUE);
+ restart:
+#endif
+ move(LINES / 2 - 1, 4);
+ if (!(has_ic()
+ /* see PutCharLR() */
+ || auto_right_margin
+ || (enter_am_mode && exit_am_mode))) {
addstr("Your terminal lacks the capabilities needed to address the\n");
- move(LINES/2, 4);
+ move(LINES / 2, 4);
addstr("lower-right-hand corner of the screen.\n");
- }
- else
- {
+ } else {
addstr("This is a test of access to the lower right corner.\n");
- move(LINES/2, 4);
+ move(LINES / 2, 4);
addstr("If the top of the box is missing, the test failed.\n");
- move(LINES/2+1, 4);
+ move(LINES / 2 + 1, 4);
addstr("Please report this (with a copy of your terminfo entry).\n");
- move(LINES/2+2, 4);
+ move(LINES / 2 + 2, 4);
addstr("to the ncurses maintainers, at bug-ncurses@gnu.org.\n");
}
- box(stdscr, 0, 0);
- move(LINES-1, COLS-1);
+ for (;;) {
+ int ch;
+ unsigned n;
+
+ box(stdscr, 0, 0);
+ for (n = 0; n < sizeof(marks) / sizeof(marks[0]); n++) {
+ show(&marks[n]);
+ }
- refresh();
+ if ((ch = getch()) > 0) {
+ if (ch == 'q')
+ break;
+ else if (ch == 's')
+ nodelay(stdscr, FALSE);
+ else if (ch == ' ')
+ nodelay(stdscr, TRUE);
+#ifdef KEY_RESIZE
+ else if (ch == KEY_RESIZE) {
+ erase();
+ goto restart;
+ }
+#endif
+ }
+ napms(50);
+ }
- getch();
+ curs_set(1);
endwin();
return 0;
}