| .\"*************************************************************************** |
| .\" Copyright (c) 2010,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 * |
| .\" "Software"), to deal in the Software without restriction, including * |
| .\" without limitation the rights to use, copy, modify, merge, publish, * |
| .\" distribute, distribute with modifications, sublicense, and/or sell * |
| .\" copies of the Software, and to permit persons to whom the Software is * |
| .\" furnished to do so, subject to the following conditions: * |
| .\" * |
| .\" The above copyright notice and this permission notice shall be included * |
| .\" in all copies or substantial portions of the Software. * |
| .\" * |
| .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * |
| .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * |
| .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * |
| .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * |
| .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * |
| .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * |
| .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * |
| .\" * |
| .\" Except as contained in this notice, the name(s) of the above copyright * |
| .\" holders shall not be used in advertising or otherwise to promote the * |
| .\" sale, use or other dealings in this Software without prior written * |
| .\" authorization. * |
| .\"*************************************************************************** |
| .\" |
| .\" $Id: curs_sp_funcs.3x,v 1.6 2013/06/22 17:53:59 tom Exp $ |
| .TH curs_sp_funcs 3X "" |
| .na |
| .hy 0 |
| .SH NAME |
| new_prescr \- \fBcurses\fR screen-pointer extension |
| .ad |
| .hy |
| .SH SYNOPSIS |
| \fB#include <curses.h>\fR |
| .nf |
| .sp |
| \fBint assume_default_colors_sp(SCREEN*, int, int);\fR |
| .br |
| \fBint baudrate_sp(SCREEN*);\fR |
| .br |
| \fBint beep_sp(SCREEN*);\fR |
| .br |
| \fBbool can_change_color_sp(SCREEN*);\fR |
| .br |
| \fBint cbreak_sp(SCREEN*);\fR |
| .br |
| \fBint color_content_sp(SCREEN*, short, short*, short*, short*);\fR |
| .br |
| \fBint curs_set_sp(SCREEN*, int);\fR |
| .br |
| \fBint define_key_sp(SCREEN*, const char *, int);\fR |
| .br |
| \fBint def_prog_mode_sp(SCREEN*);\fR |
| .br |
| \fBint def_shell_mode_sp(SCREEN*);\fR |
| .br |
| \fBint delay_output_sp(SCREEN*, int);\fR |
| .br |
| \fBint doupdate_sp(SCREEN*);\fR |
| .br |
| \fBint echo_sp(SCREEN*);\fR |
| .br |
| \fBint endwin_sp(SCREEN*);\fR |
| .br |
| \fBint erasechar_sp(SCREEN*);\fR |
| .br |
| \fBint filter_sp(SCREEN*);\fR |
| .br |
| \fBint flash_sp(SCREEN*);\fR |
| .br |
| \fBint flushinp_sp(SCREEN*);\fR |
| .br |
| \fBint get_escdelay_sp(SCREEN*);\fR |
| .br |
| \fBint getmouse_sp(SCREEN*, MEVENT*);\fR |
| .br |
| \fBWINDOW* getwin_sp(SCREEN*, FILE*);\fR |
| .br |
| \fBint halfdelay_sp(SCREEN*);\fR |
| .br |
| \fBbool has_colors_sp(SCREEN*);\fR |
| .br |
| \fBbool has_ic_sp(SCREEN*);\fR |
| .br |
| \fBbool has_il_sp(SCREEN*);\fR |
| .br |
| \fBint has_key_sp(SCREEN*, int);\fR |
| .br |
| \fBbool has_mouse_sp(SCREEN*);\fR |
| .br |
| \fBint init_color_sp(SCREEN*, short, short, short, short);\fR |
| .br |
| \fBint init_pair_sp(SCREEN*, short, short, short);\fR |
| .br |
| \fBint intrflush_sp(SCREEN*, WINDOW*, bool);\fR |
| .br |
| \fBbool isendwin_sp(SCREEN*);\fR |
| .br |
| \fBbool is_term_resized_sp(SCREEN*, int, int);\fR |
| .br |
| \fBchar* keybound_sp(SCREEN*, int, int);\fR |
| .br |
| \fBint key_defined_sp(SCREEN*, const char *);\fR |
| .br |
| \fBNCURSES_CONST char * keyname_sp(SCREEN*, int);\fR |
| .br |
| \fBint keyok_sp(SCREEN*, int, bool);\fR |
| .br |
| \fBchar killchar_sp(SCREEN*);\fR |
| .br |
| \fBint mcprint_sp(SCREEN*, char *, int);\fR |
| .br |
| \fBint mouseinterval_sp(SCREEN*, int);\fR |
| .br |
| \fBmmask_t mousemask_sp(SCREEN*, mmask_t, mmask_t *);\fR |
| .br |
| \fBint mvcur_sp(SCREEN*, int, int, int, int);\fR |
| .br |
| \fBint napms_sp(SCREEN*, int);\fR |
| .br |
| \fBWINDOW* newpad_sp(SCREEN*, int, int);\fR |
| .br |
| \fBSCREEN* new_prescr(void);\fR |
| .br |
| \fBSCREEN* newterm_sp(SCREEN*, NCURSES_CONST char *, FILE *, FILE *);\fR |
| .br |
| \fBWINDOW* newwin_sp(SCREEN*, int, int, int, int);\fR |
| .br |
| \fBint nl_sp(SCREEN*);\fR |
| .br |
| \fBint nocbreak_sp(SCREEN*);\fR |
| .br |
| \fBint noecho_sp(SCREEN*);\fR |
| .br |
| \fBint nofilter_sp(SCREEN*);\fR |
| .br |
| \fBint nonl_sp(SCREEN*);\fR |
| .br |
| \fBvoid noqiflush_sp(SCREEN*);\fR |
| .br |
| \fBint noraw_sp(SCREEN*);\fR |
| .br |
| \fBint pair_content_sp(SCREEN*, short, short*, short*);\fR |
| .br |
| \fBvoid qiflush_sp(SCREEN*);\fR |
| .br |
| \fBint raw_sp(SCREEN*);\fR |
| .br |
| \fBint reset_prog_mode_sp(SCREEN*);\fR |
| .br |
| \fBint reset_shell_mode_sp(SCREEN*);\fR |
| .br |
| \fBint resetty_sp(SCREEN*);\fR |
| .br |
| \fBint resize_term_sp(SCREEN*, int, int);\fR |
| .br |
| \fBint resizeterm_sp(SCREEN*, int, int);\fR |
| .br |
| \fBint restartterm_sp(SCREEN*, NCURSES_CONST char*, int, int *);\fR |
| .br |
| \fBint ripoffline_sp(SCREEN*, int, int (*)(WINDOW*, int));\fR |
| .br |
| \fBint savetty_sp(SCREEN*);\fR |
| .br |
| \fBint scr_init_sp(SCREEN*, const char *);\fR |
| .br |
| \fBint scr_restore_sp(SCREEN*, const char *);\fR |
| .br |
| \fBint scr_set_sp(SCREEN*, const char *);\fR |
| .br |
| \fBTERMINAL* set_curterm_sp(SCREEN*, TERMINAL*);\fR |
| .br |
| \fBint set_escdelay_sp(SCREEN*, int);\fR |
| .br |
| \fBint set_tabsize_sp(SCREEN*, int);\fR |
| .br |
| \fBint slk_attroff_sp(SCREEN*, const chtype);\fR |
| .br |
| \fBint slk_attron_sp(SCREEN*, const chtype);\fR |
| .br |
| \fBint slk_attr_set_sp(SCREEN*, const attr_t, short, void*);\fR |
| .br |
| \fBint slk_attrset_sp(SCREEN*, const chtype);\fR |
| .br |
| \fBint slk_attr_sp(SCREEN*);\fR |
| .br |
| \fBint slk_clear_sp(SCREEN*);\fR |
| .br |
| \fBint slk_color_sp(SCREEN*, short);\fR |
| .br |
| \fBint slk_init_sp(SCREEN*, int);\fR |
| .br |
| \fBint slk_label_sp(SCREEN*, int);\fR |
| .br |
| \fBint slk_noutrefresh_sp(SCREEN*);\fR |
| .br |
| \fBint slk_refresh_sp(SCREEN*);\fR |
| .br |
| \fBint slk_restore_sp(SCREEN*);\fR |
| .br |
| \fBint slk_set_sp(SCREEN*, int, const char *, int);\fR |
| .br |
| \fBint slk_touch_sp(SCREEN*);\fR |
| .br |
| \fBint start_color_sp(SCREEN*);\fR |
| .br |
| \fBattr_t term_attrs_sp(SCREEN*);\fR |
| .br |
| \fBchtype termattrs_sp(SCREEN*);\fR |
| .br |
| \fBchar* termname_sp(SCREEN*);\fR |
| .br |
| \fBint typeahead_sp(SCREEN*, int);\fR |
| .br |
| \fBNCURSES_CONST char* unctrl_sp(SCREEN*, chtype);\fR |
| .br |
| \fBint ungetch_sp(SCREEN*, int);\fR |
| .br |
| \fBint ungetmouse_sp(SCREEN*,MEVENT *);\fR |
| .br |
| \fBint unget_wch_sp(SCREEN*, const wchar_t);\fR |
| .br |
| \fBint use_default_colors_sp(SCREEN*);\fR |
| .br |
| \fBvoid use_env_sp(SCREEN*, bool);\fR |
| .br |
| \fBint use_legacy_coding_sp(SCREEN*, int);\fR |
| .br |
| \fBint vid_attr_sp(SCREEN*, attr_t, short, void *);\fR |
| .br |
| \fBint vidattr_sp(SCREEN*, chtype);\fR |
| .br |
| \fBint vid_puts_sp(SCREEN*, attr_t, short, void *, NCURSES_SP_OUTC);\fR |
| .br |
| \fBint vidputs_sp(SCREEN*, chtype, NCURSES_SP_OUTC);\fR |
| .br |
| \fBwchar_t* wunctrl_sp(SCREEN*, cchar_t *);\fR |
| .sp |
| \fB#include <form.h>\fR |
| .sp |
| \fBint new_form_sp(SCREEN*, FIELD **);\fR |
| .sp |
| \fB#include <menu.h>\fR |
| .sp |
| \fBint new_menu_sp(SCREEN*, ITEM **);\fR |
| .sp |
| \fB#include <panel.h>\fR |
| .sp |
| \fBint ceiling_panel(SCREEN*);\fR |
| .br |
| \fBPANEL* ground_panel(SCREEN*);\fR |
| .br |
| \fBint update_panels_sp(SCREEN*);\fR |
| .sp |
| \fB#include <term.h>\fR |
| .sp |
| \fBint del_curterm_sp(SCREEN*, TERMINAL *);\fR |
| .br |
| \fBint putp_sp(SCREEN*, const char *);\fR |
| .br |
| \fBint tgetflag_sp(SCREEN*, char *, const char *);\fR |
| .br |
| \fBint tgetent_sp(SCREEN*, char *, const char *);\fR |
| .br |
| \fBint tgetnum_sp(SCREEN*, NCURSES_CONST char *);\fR |
| .br |
| \fBchar* tgetstr_sp(SCREEN*, NCURSES_CONST char *, char **);\fR |
| .br |
| \fBint tigetflag_sp(SCREEN*, NCURSES_CONST char *);\fR |
| .br |
| \fBint tigetnum_sp(SCREEN*, NCURSES_CONST char *);\fR |
| .br |
| \fBchar* tigetstr_sp(SCREEN*, NCURSES_CONST char *);\fR |
| .br |
| \fBint tputs_sp(SCREEN*, const char *, int, NCURSES_SP_OUTC);\fR |
| .ad |
| .br |
| .SH DESCRIPTION |
| This implementation can be configured to provide a set of functions which |
| improve the ability to manage multiple screens. |
| This feature can be added to any of the configurations supported by ncurses; |
| it adds new entrypoints |
| without changing the meaning of any of the existing ones. |
| .PP |
| .\" *************************************************************************** |
| .SS IMPROVED FUNCTIONS |
| Most of the functions are new versions of existing functions. |
| A parameter is added at the front of the parameter list. |
| It is a SCREEN pointer. |
| .PP |
| The existing functions all use the current screen, |
| which is a static variable. |
| The extended functions use the specified screen, |
| thereby reducing the number of variables which must be modified |
| to update multiple screens. |
| .\" *************************************************************************** |
| .SS NEW FUNCTIONS |
| Here are the new functions: |
| .TP 5 |
| ceiling_panel |
| this returns a pointer to the topmost panel in the given screen. |
| .TP 5 |
| ground_panel |
| this returns a pointer to the lowest panel in the given screen. |
| .TP 5 |
| new_prescr |
| when creating a new screen, the library uses static variables which |
| have been preset, e.g., by \fBuse_env\fP(3X), \fBfilter\fP(3X), etc. |
| With the screen-pointer extension, |
| there are situations where it must create a current screen before |
| the unextended library does. |
| The \fBnew_prescr\fP function is used internally to handle these cases. |
| It is also provided as an entrypoint to allow applications to customize |
| the library initialization. |
| .\" *************************************************************************** |
| .SH NOTES |
| This extension introduces some new names: |
| .TP 5 |
| NCURSES_SP_FUNCS |
| This is set to the library patch-level number. |
| In the unextended library, this is zero (0), |
| to make it useful for checking if the extension is provided. |
| .TP 5 |
| NCURSES_SP_NAME |
| The new functions are named using the macro \fINCURSES_SP_NAME\fP, |
| which hides the actual implementation. |
| Currently this adds a "_sp" suffix to the name of the unextended function. |
| This manual page indexes the extensions showing the full name. |
| However the proper usage of these functions uses the macro, |
| to provide for the possibility of changing the naming convention |
| for specific library configurations. |
| .TP 5 |
| NCURSES_SP_OUTC |
| This is a new function-pointer type to use in the screen-pointer functions |
| where an \fINCURSES_OUTC\fP is used in the unextended library. |
| .TP 5 |
| NCURSES_OUTC |
| This is a function-pointer type used for the cases where a function passes |
| characters to the output stream, e.g., \fBvidputs\fP(3X). |
| .PP |
| .SH PORTABILITY |
| These routines are specific to ncurses. |
| They were not supported on Version 7, BSD or System V implementations. |
| It is recommended that any code depending on ncurses extensions |
| be conditioned using \fINCURSES_SP_FUNCS\fP. |
| .SH SEE ALSO |
| \fBcurses\fR(3X), |
| \fBcurs_opaque\fR(3X), |
| \fBcurs_threads\fR(3X). |