| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 | 
							- /* PDCurses */
 
- #include <curspriv.h>
 
- /*man-start**************************************************************
 
- kernel
 
- ------
 
- ### Synopsis
 
-     int def_prog_mode(void);
 
-     int def_shell_mode(void);
 
-     int reset_prog_mode(void);
 
-     int reset_shell_mode(void);
 
-     int resetty(void);
 
-     int savetty(void);
 
-     int ripoffline(int line, int (*init)(WINDOW *, int));
 
-     int curs_set(int visibility);
 
-     int napms(int ms);
 
-     int draino(int ms);
 
-     int resetterm(void);
 
-     int fixterm(void);
 
-     int saveterm(void);
 
- ### Description
 
-    def_prog_mode() and def_shell_mode() save the current terminal modes
 
-    as the "program" (in curses) or "shell" (not in curses) state for use
 
-    by the reset_prog_mode() and reset_shell_mode() functions. This is
 
-    done automatically by initscr().
 
-    reset_prog_mode() and reset_shell_mode() restore the terminal to
 
-    "program" (in curses) or "shell" (not in curses) state. These are
 
-    done automatically by endwin() and doupdate() after an endwin(), so
 
-    they would normally not be called before these functions.
 
-    savetty() and resetty() save and restore the state of the terminal
 
-    modes. savetty() saves the current state in a buffer, and resetty()
 
-    restores the state to what it was at the last call to savetty().
 
-    curs_set() alters the appearance of the cursor. A visibility of 0
 
-    makes it disappear; 1 makes it appear "normal" (usually an underline)
 
-    and 2 makes it "highly visible" (usually a block).
 
-    ripoffline() reduces the size of stdscr by one line. If the "line"
 
-    parameter is positive, the line is removed from the top of the
 
-    screen; if negative, from the bottom. Up to 5 lines can be ripped off
 
-    stdscr by calling ripoffline() repeatedly. The function argument,
 
-    init, is called from within initscr() or newterm(), so ripoffline()
 
-    must be called before either of these functions. The init function
 
-    receives a pointer to a one-line WINDOW, and the width of the window.
 
-    Calling ripoffline() with a NULL init function pointer is an error.
 
-    napms() suspends the program for the specified number of
 
-    milliseconds. draino() is an archaic equivalent. Note that since
 
-    napms() attempts to give up a time slice and yield control back to
 
-    the OS, all times are approximate. (In DOS, the delay is actually
 
-    rounded down to 50ms (1/20th sec) intervals, with a minimum of one
 
-    interval; i.e., 1-99 will wait 50ms, 100-149 will wait 100ms, etc.)
 
-    0 returns immediately.
 
-    resetterm(), fixterm() and saveterm() are archaic equivalents for
 
-    reset_shell_mode(), reset_prog_mode() and def_prog_mode(),
 
-    respectively.
 
- ### Return Value
 
-    All functions return OK on success and ERR on error, except
 
-    curs_set(), which returns the previous visibility.
 
- ### Portability
 
-                              X/Open  ncurses  NetBSD
 
-     def_prog_mode               Y       Y       Y
 
-     def_shell_mode              Y       Y       Y
 
-     reset_prog_mode             Y       Y       Y
 
-     reset_shell_mode            Y       Y       Y
 
-     resetty                     Y       Y       Y
 
-     savetty                     Y       Y       Y
 
-     ripoffline                  Y       Y       Y
 
-     curs_set                    Y       Y       Y
 
-     napms                       Y       Y       Y
 
-     fixterm                     -       Y       -
 
-     resetterm                   -       Y       -
 
-     saveterm                    -       Y       -
 
-     draino                      -       -       -
 
- **man-end****************************************************************/
 
- #include <string.h>
 
- RIPPEDOFFLINE linesripped[5];
 
- char linesrippedoff = 0;
 
- static struct cttyset
 
- {
 
-     bool been_set;
 
-     SCREEN saved;
 
- } ctty[3];
 
- enum { PDC_SH_TTY, PDC_PR_TTY, PDC_SAVE_TTY };
 
- static void _save_mode(int i)
 
- {
 
-     ctty[i].been_set = TRUE;
 
-     memcpy(&(ctty[i].saved), SP, sizeof(SCREEN));
 
-     PDC_save_screen_mode(i);
 
- }
 
- static int _restore_mode(int i)
 
- {
 
-     if (ctty[i].been_set == TRUE)
 
-     {
 
-         memcpy(SP, &(ctty[i].saved), sizeof(SCREEN));
 
-         if (ctty[i].saved.raw_out)
 
-             raw();
 
-         PDC_restore_screen_mode(i);
 
-         if ((LINES != ctty[i].saved.lines) ||
 
-             (COLS != ctty[i].saved.cols))
 
-             resize_term(ctty[i].saved.lines, ctty[i].saved.cols);
 
-         PDC_curs_set(ctty[i].saved.visibility);
 
-         PDC_gotoyx(ctty[i].saved.cursrow, ctty[i].saved.curscol);
 
-     }
 
-     return ctty[i].been_set ? OK : ERR;
 
- }
 
- int def_prog_mode(void)
 
- {
 
-     PDC_LOG(("def_prog_mode() - called\n"));
 
-     if (!SP)
 
-         return ERR;
 
-     _save_mode(PDC_PR_TTY);
 
-     return OK;
 
- }
 
- int def_shell_mode(void)
 
- {
 
-     PDC_LOG(("def_shell_mode() - called\n"));
 
-     if (!SP)
 
-         return ERR;
 
-     _save_mode(PDC_SH_TTY);
 
-     return OK;
 
- }
 
- int reset_prog_mode(void)
 
- {
 
-     PDC_LOG(("reset_prog_mode() - called\n"));
 
-     if (!SP)
 
-         return ERR;
 
-     _restore_mode(PDC_PR_TTY);
 
-     PDC_reset_prog_mode();
 
-     return OK;
 
- }
 
- int reset_shell_mode(void)
 
- {
 
-     PDC_LOG(("reset_shell_mode() - called\n"));
 
-     if (!SP)
 
-         return ERR;
 
-     _restore_mode(PDC_SH_TTY);
 
-     PDC_reset_shell_mode();
 
-     return OK;
 
- }
 
- int resetty(void)
 
- {
 
-     PDC_LOG(("resetty() - called\n"));
 
-     if (!SP)
 
-         return ERR;
 
-     return _restore_mode(PDC_SAVE_TTY);
 
- }
 
- int savetty(void)
 
- {
 
-     PDC_LOG(("savetty() - called\n"));
 
-     if (!SP)
 
-         return ERR;
 
-     _save_mode(PDC_SAVE_TTY);
 
-     return OK;
 
- }
 
- int curs_set(int visibility)
 
- {
 
-     int ret_vis;
 
-     PDC_LOG(("curs_set() - called: visibility=%d\n", visibility));
 
-     if (!SP || visibility < 0 || visibility > 2)
 
-         return ERR;
 
-     ret_vis = PDC_curs_set(visibility);
 
-     /* If the cursor is changing from invisible to visible, update
 
-        its position */
 
-     if (visibility && !ret_vis)
 
-         PDC_gotoyx(SP->cursrow, SP->curscol);
 
-     return ret_vis;
 
- }
 
- int napms(int ms)
 
- {
 
-     PDC_LOG(("napms() - called: ms=%d\n", ms));
 
-     if (!SP)
 
-         return ERR;
 
-     if (SP->dirty)
 
-     {
 
-         int curs_state = SP->visibility;
 
-         bool leave_state = is_leaveok(curscr);
 
-         SP->dirty = FALSE;
 
-         leaveok(curscr, TRUE);
 
-         wrefresh(curscr);
 
-         leaveok(curscr, leave_state);
 
-         curs_set(curs_state);
 
-     }
 
-     if (ms)
 
-         PDC_napms(ms);
 
-     return OK;
 
- }
 
- int ripoffline(int line, int (*init)(WINDOW *, int))
 
- {
 
-     PDC_LOG(("ripoffline() - called: line=%d\n", line));
 
-     if (linesrippedoff < 5 && line && init)
 
-     {
 
-         linesripped[(int)linesrippedoff].line = line;
 
-         linesripped[(int)linesrippedoff++].init = init;
 
-         return OK;
 
-     }
 
-     return ERR;
 
- }
 
- int draino(int ms)
 
- {
 
-     PDC_LOG(("draino() - called\n"));
 
-     return napms(ms);
 
- }
 
- int resetterm(void)
 
- {
 
-     PDC_LOG(("resetterm() - called\n"));
 
-     return reset_shell_mode();
 
- }
 
- int fixterm(void)
 
- {
 
-     PDC_LOG(("fixterm() - called\n"));
 
-     return reset_prog_mode();
 
- }
 
- int saveterm(void)
 
- {
 
-     PDC_LOG(("saveterm() - called\n"));
 
-     return def_prog_mode();
 
- }
 
 
  |