xref: /freebsd/contrib/ncurses/panel/panel.c (revision 4a1a95108dd76c4259fe6c37c4471f7969b17983)
10e3d5408SPeter Wemm /****************************************************************************
24a1a9510SRong-En Fan  * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc.              *
30e3d5408SPeter Wemm  *                                                                          *
40e3d5408SPeter Wemm  * Permission is hereby granted, free of charge, to any person obtaining a  *
50e3d5408SPeter Wemm  * copy of this software and associated documentation files (the            *
60e3d5408SPeter Wemm  * "Software"), to deal in the Software without restriction, including      *
70e3d5408SPeter Wemm  * without limitation the rights to use, copy, modify, merge, publish,      *
80e3d5408SPeter Wemm  * distribute, distribute with modifications, sublicense, and/or sell       *
90e3d5408SPeter Wemm  * copies of the Software, and to permit persons to whom the Software is    *
100e3d5408SPeter Wemm  * furnished to do so, subject to the following conditions:                 *
110e3d5408SPeter Wemm  *                                                                          *
120e3d5408SPeter Wemm  * The above copyright notice and this permission notice shall be included  *
130e3d5408SPeter Wemm  * in all copies or substantial portions of the Software.                   *
140e3d5408SPeter Wemm  *                                                                          *
150e3d5408SPeter Wemm  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
160e3d5408SPeter Wemm  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
170e3d5408SPeter Wemm  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
180e3d5408SPeter Wemm  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
190e3d5408SPeter Wemm  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
200e3d5408SPeter Wemm  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
210e3d5408SPeter Wemm  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
220e3d5408SPeter Wemm  *                                                                          *
230e3d5408SPeter Wemm  * Except as contained in this notice, the name(s) of the above copyright   *
240e3d5408SPeter Wemm  * holders shall not be used in advertising or otherwise to promote the     *
250e3d5408SPeter Wemm  * sale, use or other dealings in this Software without prior written       *
260e3d5408SPeter Wemm  * authorization.                                                           *
270e3d5408SPeter Wemm  ****************************************************************************/
280e3d5408SPeter Wemm 
290e3d5408SPeter Wemm /****************************************************************************
300e3d5408SPeter Wemm  *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1995                    *
310e3d5408SPeter Wemm  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
320e3d5408SPeter Wemm  ****************************************************************************/
330e3d5408SPeter Wemm 
340e3d5408SPeter Wemm /* panel.c -- implementation of panels library, some core routines */
350e3d5408SPeter Wemm #include "panel.priv.h"
360e3d5408SPeter Wemm 
374a1a9510SRong-En Fan MODULE_ID("$Id: panel.c,v 1.23 2005/02/19 18:04:31 tom Exp $")
380e3d5408SPeter Wemm 
394a1a9510SRong-En Fan /*+-------------------------------------------------------------------------
404a1a9510SRong-En Fan 	_nc_retrace_panel (pan)
414a1a9510SRong-En Fan --------------------------------------------------------------------------*/
424a1a9510SRong-En Fan #ifdef TRACE
434a1a9510SRong-En Fan NCURSES_EXPORT(PANEL *)
444a1a9510SRong-En Fan _nc_retrace_panel(PANEL * pan)
454a1a9510SRong-En Fan {
464a1a9510SRong-En Fan   T((T_RETURN("%p"), pan));
474a1a9510SRong-En Fan   return pan;
484a1a9510SRong-En Fan }
494a1a9510SRong-En Fan #endif
504a1a9510SRong-En Fan 
514a1a9510SRong-En Fan /*+-------------------------------------------------------------------------
524a1a9510SRong-En Fan 	_nc_my_visbuf(ptr)
534a1a9510SRong-En Fan --------------------------------------------------------------------------*/
540e3d5408SPeter Wemm #ifdef TRACE
550e3d5408SPeter Wemm #ifndef TRACE_TXT
567a69bbfbSPeter Wemm NCURSES_EXPORT(const char *)
577a69bbfbSPeter Wemm _nc_my_visbuf(const void *ptr)
580e3d5408SPeter Wemm {
590e3d5408SPeter Wemm   char temp[32];
604a1a9510SRong-En Fan 
610e3d5408SPeter Wemm   if (ptr != 0)
620e3d5408SPeter Wemm     sprintf(temp, "ptr:%p", ptr);
630e3d5408SPeter Wemm   else
640e3d5408SPeter Wemm     strcpy(temp, "<null>");
650e3d5408SPeter Wemm   return _nc_visbuf(temp);
660e3d5408SPeter Wemm }
670e3d5408SPeter Wemm #endif
680e3d5408SPeter Wemm #endif
690e3d5408SPeter Wemm 
700e3d5408SPeter Wemm /*+-------------------------------------------------------------------------
710e3d5408SPeter Wemm 	dPanel(text,pan)
720e3d5408SPeter Wemm --------------------------------------------------------------------------*/
730e3d5408SPeter Wemm #ifdef TRACE
747a69bbfbSPeter Wemm NCURSES_EXPORT(void)
754a1a9510SRong-En Fan _nc_dPanel(const char *text, const PANEL * pan)
760e3d5408SPeter Wemm {
770e3d5408SPeter Wemm   _tracef("%s id=%s b=%s a=%s y=%d x=%d",
780e3d5408SPeter Wemm 	  text, USER_PTR(pan->user),
790e3d5408SPeter Wemm 	  (pan->below) ? USER_PTR(pan->below->user) : "--",
800e3d5408SPeter Wemm 	  (pan->above) ? USER_PTR(pan->above->user) : "--",
811759abf3SPeter Wemm 	  PSTARTY(pan), PSTARTX(pan));
820e3d5408SPeter Wemm }
830e3d5408SPeter Wemm #endif
840e3d5408SPeter Wemm 
850e3d5408SPeter Wemm /*+-------------------------------------------------------------------------
860e3d5408SPeter Wemm 	dStack(fmt,num,pan)
870e3d5408SPeter Wemm --------------------------------------------------------------------------*/
880e3d5408SPeter Wemm #ifdef TRACE
897a69bbfbSPeter Wemm NCURSES_EXPORT(void)
904a1a9510SRong-En Fan _nc_dStack(const char *fmt, int num, const PANEL * pan)
910e3d5408SPeter Wemm {
920e3d5408SPeter Wemm   char s80[80];
930e3d5408SPeter Wemm 
940e3d5408SPeter Wemm   sprintf(s80, fmt, num, pan);
950e3d5408SPeter Wemm   _tracef("%s b=%s t=%s", s80,
960e3d5408SPeter Wemm 	  (_nc_bottom_panel) ? USER_PTR(_nc_bottom_panel->user) : "--",
970e3d5408SPeter Wemm 	  (_nc_top_panel) ? USER_PTR(_nc_top_panel->user) : "--");
980e3d5408SPeter Wemm   if (pan)
990e3d5408SPeter Wemm     _tracef("pan id=%s", USER_PTR(pan->user));
1000e3d5408SPeter Wemm   pan = _nc_bottom_panel;
1010e3d5408SPeter Wemm   while (pan)
1020e3d5408SPeter Wemm     {
1030e3d5408SPeter Wemm       dPanel("stk", pan);
1040e3d5408SPeter Wemm       pan = pan->above;
1050e3d5408SPeter Wemm     }
1060e3d5408SPeter Wemm }
1070e3d5408SPeter Wemm #endif
1080e3d5408SPeter Wemm 
1090e3d5408SPeter Wemm /*+-------------------------------------------------------------------------
1100e3d5408SPeter Wemm 	Wnoutrefresh(pan) - debugging hook for wnoutrefresh
1110e3d5408SPeter Wemm --------------------------------------------------------------------------*/
1120e3d5408SPeter Wemm #ifdef TRACE
1137a69bbfbSPeter Wemm NCURSES_EXPORT(void)
1140e3d5408SPeter Wemm _nc_Wnoutrefresh(const PANEL * pan)
1150e3d5408SPeter Wemm {
1160e3d5408SPeter Wemm   dPanel("wnoutrefresh", pan);
1170e3d5408SPeter Wemm   wnoutrefresh(pan->win);
1180e3d5408SPeter Wemm }
1190e3d5408SPeter Wemm #endif
1200e3d5408SPeter Wemm 
1210e3d5408SPeter Wemm /*+-------------------------------------------------------------------------
1220e3d5408SPeter Wemm 	Touchpan(pan)
1230e3d5408SPeter Wemm --------------------------------------------------------------------------*/
1240e3d5408SPeter Wemm #ifdef TRACE
1257a69bbfbSPeter Wemm NCURSES_EXPORT(void)
1260e3d5408SPeter Wemm _nc_Touchpan(const PANEL * pan)
1270e3d5408SPeter Wemm {
1280e3d5408SPeter Wemm   dPanel("Touchpan", pan);
1290e3d5408SPeter Wemm   touchwin(pan->win);
1300e3d5408SPeter Wemm }
1310e3d5408SPeter Wemm #endif
1320e3d5408SPeter Wemm 
1330e3d5408SPeter Wemm /*+-------------------------------------------------------------------------
1340e3d5408SPeter Wemm 	Touchline(pan,start,count)
1350e3d5408SPeter Wemm --------------------------------------------------------------------------*/
1360e3d5408SPeter Wemm #ifdef TRACE
1377a69bbfbSPeter Wemm NCURSES_EXPORT(void)
1384a1a9510SRong-En Fan _nc_Touchline(const PANEL * pan, int start, int count)
1390e3d5408SPeter Wemm {
1400e3d5408SPeter Wemm   char s80[80];
1414a1a9510SRong-En Fan 
1420e3d5408SPeter Wemm   sprintf(s80, "Touchline s=%d c=%d", start, count);
1430e3d5408SPeter Wemm   dPanel(s80, pan);
1440e3d5408SPeter Wemm   touchline(pan->win, start, count);
1450e3d5408SPeter Wemm }
1460e3d5408SPeter Wemm #endif
1470e3d5408SPeter Wemm 
1481759abf3SPeter Wemm #ifndef TRACE
1491759abf3SPeter Wemm #  ifndef __GNUC__
1501759abf3SPeter Wemm      /* Some C compilers need something defined in a source file */
1514a1a9510SRong-En Fan extern void _nc_dummy_panel(void);
1524a1a9510SRong-En Fan void
1534a1a9510SRong-En Fan _nc_dummy_panel(void)
1544a1a9510SRong-En Fan {
1554a1a9510SRong-En Fan }
1560e3d5408SPeter Wemm #  endif
1571759abf3SPeter Wemm #endif
158