1*15fe46beSmillert /* $OpenBSD: p_new.c,v 1.1 1997/12/03 05:17:54 millert Exp $ */ 2*15fe46beSmillert 3*15fe46beSmillert /*************************************************************************** 4*15fe46beSmillert * COPYRIGHT NOTICE * 5*15fe46beSmillert **************************************************************************** 6*15fe46beSmillert * panels is copyright (C) 1995 * 7*15fe46beSmillert * Zeyd M. Ben-Halim * 8*15fe46beSmillert * zmbenhal@netcom.com * 9*15fe46beSmillert * Eric S. Raymond * 10*15fe46beSmillert * esr@snark.thyrsus.com * 11*15fe46beSmillert * * 12*15fe46beSmillert * All praise to the original author, Warren Tucker. * 13*15fe46beSmillert * * 14*15fe46beSmillert * Permission is hereby granted to reproduce and distribute panels * 15*15fe46beSmillert * by any means and for any fee, whether alone or as part of a * 16*15fe46beSmillert * larger distribution, in source or in binary form, PROVIDED * 17*15fe46beSmillert * this notice is included with any such distribution, and is not * 18*15fe46beSmillert * removed from any of its header files. Mention of panels in any * 19*15fe46beSmillert * applications linked with it is highly appreciated. * 20*15fe46beSmillert * * 21*15fe46beSmillert * panels comes AS IS with no warranty, implied or expressed. * 22*15fe46beSmillert * * 23*15fe46beSmillert ***************************************************************************/ 24*15fe46beSmillert 25*15fe46beSmillert /* p_new.c 26*15fe46beSmillert * Creation of a new panel 27*15fe46beSmillert */ 28*15fe46beSmillert #include "panel.priv.h" 29*15fe46beSmillert 30*15fe46beSmillert MODULE_ID("Id: p_new.c,v 1.1 1997/10/12 13:16:22 juergen Exp $") 31*15fe46beSmillert 32*15fe46beSmillert /*+------------------------------------------------------------------------- 33*15fe46beSmillert Get root (i.e. stdscr's) panel. 34*15fe46beSmillert Establish the pseudo panel for stdscr if necessary. 35*15fe46beSmillert --------------------------------------------------------------------------*/ 36*15fe46beSmillert static PANEL* 37*15fe46beSmillert root_panel(void) 38*15fe46beSmillert { 39*15fe46beSmillert if(_nc_stdscr_pseudo_panel == (PANEL*)0) 40*15fe46beSmillert { 41*15fe46beSmillert 42*15fe46beSmillert assert(stdscr && !_nc_bottom_panel && !_nc_top_panel); 43*15fe46beSmillert _nc_stdscr_pseudo_panel = (PANEL*)malloc(sizeof(PANEL)); 44*15fe46beSmillert if (_nc_stdscr_pseudo_panel != 0) { 45*15fe46beSmillert PANEL* pan = _nc_stdscr_pseudo_panel; 46*15fe46beSmillert WINDOW* win = stdscr; 47*15fe46beSmillert pan->win = win; 48*15fe46beSmillert getbegyx(win, pan->wstarty, pan->wstartx); 49*15fe46beSmillert pan->wendy = pan->wstarty + getmaxy(win); 50*15fe46beSmillert pan->wendx = pan->wstartx + getmaxx(win); 51*15fe46beSmillert pan->below = (PANEL*)0; 52*15fe46beSmillert pan->above = (PANEL*)0; 53*15fe46beSmillert pan->obscure = (PANELCONS*)0; 54*15fe46beSmillert #ifdef TRACE 55*15fe46beSmillert pan->user = "stdscr"; 56*15fe46beSmillert #else 57*15fe46beSmillert pan->user = (void*)0; 58*15fe46beSmillert #endif 59*15fe46beSmillert _nc_panel_link_bottom(pan); 60*15fe46beSmillert } 61*15fe46beSmillert } 62*15fe46beSmillert return _nc_stdscr_pseudo_panel; 63*15fe46beSmillert } 64*15fe46beSmillert 65*15fe46beSmillert PANEL * 66*15fe46beSmillert new_panel(WINDOW *win) 67*15fe46beSmillert { 68*15fe46beSmillert PANEL *pan = (PANEL*)0; 69*15fe46beSmillert 70*15fe46beSmillert (void)root_panel(); 71*15fe46beSmillert assert(_nc_stdscr_pseudo_panel); 72*15fe46beSmillert 73*15fe46beSmillert if (!(win->_flags & _ISPAD) && (pan = (PANEL*)malloc(sizeof(PANEL)))) 74*15fe46beSmillert { 75*15fe46beSmillert pan->win = win; 76*15fe46beSmillert pan->above = (PANEL *)0; 77*15fe46beSmillert pan->below = (PANEL *)0; 78*15fe46beSmillert getbegyx(win, pan->wstarty, pan->wstartx); 79*15fe46beSmillert pan->wendy = pan->wstarty + getmaxy(win); 80*15fe46beSmillert pan->wendx = pan->wstartx + getmaxx(win); 81*15fe46beSmillert #ifdef TRACE 82*15fe46beSmillert pan->user = "new"; 83*15fe46beSmillert #else 84*15fe46beSmillert pan->user = (char *)0; 85*15fe46beSmillert #endif 86*15fe46beSmillert pan->obscure = (PANELCONS *)0; 87*15fe46beSmillert (void)show_panel(pan); 88*15fe46beSmillert } 89*15fe46beSmillert return(pan); 90*15fe46beSmillert } 91