X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Ftest_vidputs.c;fp=ncurses%2Ftty%2Ftty_input.h;h=c32f50b7812c9b13eb92f3b3319d144642b978ce;hp=e520793eea642dc2d01141bfb6c577dcc64bd3ba;hb=a1e63be290fce9e589bc57c9f753be09e8ac0cc7;hpb=4b1ec76cb0a0fa5055909f534b3f928dafc7f7f1 diff --git a/ncurses/tty/tty_input.h b/test/test_vidputs.c similarity index 51% rename from ncurses/tty/tty_input.h rename to test/test_vidputs.c index e520793e..c32f50b7 100644 --- a/ncurses/tty/tty_input.h +++ b/test/test_vidputs.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998,2000 Free Software Foundation, Inc. * + * Copyright (c) 2013 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -25,37 +25,124 @@ * sale, use or other dealings in this Software without prior written * * authorization. * ****************************************************************************/ - /* - * $Id: tty_input.h,v 1.2 2000/12/10 02:26:51 tom Exp $ + * $Id: test_vidputs.c,v 1.3 2013/01/13 00:58:54 tom Exp $ + * + * Demonstrate the vidputs and vidattr functions. + * Thomas Dickey - 2013/01/12 */ -#ifndef TTY_INPUT_H -#define TTY_INPUT_H 1 - -extern NCURSES_EXPORT(bool) _nc_tty_mouse_mask (mmask_t); -extern NCURSES_EXPORT(bool) _nc_tty_pending (void); -extern NCURSES_EXPORT(int) _nc_tty_next_event (int); -extern NCURSES_EXPORT(void) _nc_tty_flags_changed (void); -extern NCURSES_EXPORT(void) _nc_tty_flush (void); -extern NCURSES_EXPORT(void) _nc_tty_input_resume (void); -extern NCURSES_EXPORT(void) _nc_tty_input_suspend (void); - -struct tty_input_data { - int _ifd; /* input file ptr for screen */ - int _keypad_xmit; /* current terminal state */ - int _meta_on; /* current terminal state */ - - /* - * These are the data that support the mouse interface. - */ - bool (*_mouse_event) (SCREEN *); - bool (*_mouse_inline)(SCREEN *); - bool (*_mouse_parse) (int); - void (*_mouse_resume)(SCREEN *); - void (*_mouse_wrap) (SCREEN *); - int _mouse_fd; /* file-descriptor, if any */ - int mousetype; -}; - -#endif /* TTY_INPUT_H */ +#define USE_TINFO +#include + +#if HAVE_SETUPTERM + +#define valid(s) ((s != 0) && s != (char *)-1) + +static FILE *my_fp; +static bool p_opt = FALSE; + +static +TPUTS_PROTO(outc, c) +{ + int rc = c; + + rc = putc(c, my_fp); + TPUTS_RETURN(rc); +} + +static bool +outs(char *s) +{ + if (valid(s)) { + tputs(s, 1, outc); + return TRUE; + } + return FALSE; +} + +static void +cleanup(void) +{ + outs(exit_attribute_mode); + if (!outs(orig_colors)) + outs(orig_pair); + outs(cursor_normal); +} + +static void +change_attr(chtype attr) +{ + if (p_opt) { + vidputs(attr, outc); + } else { + vidattr(attr); + } +} + +static void +test_vidputs(void) +{ + fprintf(my_fp, "Name: "); + change_attr(A_BOLD); + fputs("Bold", my_fp); + change_attr(A_REVERSE); + fputs(" Reverse", my_fp); + change_attr(A_NORMAL); + fputs("\n", my_fp); +} + +static void +usage(void) +{ + static const char *tbl[] = + { + "Usage: test_vidputs [options]" + ,"" + ,"Options:" + ," -e use stderr (default stdout)" + ," -p use vidputs (default vidattr)" + }; + unsigned n; + for (n = 0; n < SIZEOF(tbl); ++n) + fprintf(stderr, "%s\n", tbl[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + int ch; + + my_fp = stdout; + + while ((ch = getopt(argc, argv, "ep")) != -1) { + switch (ch) { + case 'e': + my_fp = stderr; + break; + case 'p': + p_opt = TRUE; + break; + default: + usage(); + break; + } + } + if (optind < argc) + usage(); + + setupterm((char *) 0, 1, (int *) 0); + test_vidputs(); + cleanup(); + ExitProgram(EXIT_SUCCESS); +} +#else +int +main(int argc GCC_UNUSED, + char *argv[]GCC_UNUSED) +{ + fprintf(stderr, "This program requires terminfo\n"); + exit(EXIT_FAILURE); +} +#endif