1195618Srpaulo/**************************************************************************** 2195618Srpaulo * Copyright (c) 1998-2002,2005 Free Software Foundation, Inc. * 3195618Srpaulo * * 4195618Srpaulo * Permission is hereby granted, free of charge, to any person obtaining a * 5195618Srpaulo * copy of this software and associated documentation files (the * 6195618Srpaulo * "Software"), to deal in the Software without restriction, including * 7195618Srpaulo * without limitation the rights to use, copy, modify, merge, publish, * 8195618Srpaulo * distribute, distribute with modifications, sublicense, and/or sell * 9195618Srpaulo * copies of the Software, and to permit persons to whom the Software is * 10195618Srpaulo * furnished to do so, subject to the following conditions: * 11195618Srpaulo * * 12195618Srpaulo * The above copyright notice and this permission notice shall be included * 13195618Srpaulo * in all copies or substantial portions of the Software. * 14195618Srpaulo * * 15195618Srpaulo * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 16195618Srpaulo * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 17195618Srpaulo * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 18195618Srpaulo * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 19195618Srpaulo * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 20195618Srpaulo * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 21195618Srpaulo * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 22195618Srpaulo * * 23195618Srpaulo * Except as contained in this notice, the name(s) of the above copyright * 24195618Srpaulo * holders shall not be used in advertising or otherwise to promote the * 25195618Srpaulo * sale, use or other dealings in this Software without prior written * 26195618Srpaulo * authorization. * 27195618Srpaulo ****************************************************************************/ 28195618Srpaulo 29195618Srpaulo/**************************************************************************** 30195618Srpaulo * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * 31195618Srpaulo * and: Eric S. Raymond <esr@snark.thyrsus.com> * 32195618Srpaulo * and: Thomas E. Dickey 1996-on * 33195618Srpaulo * and: Sven Verdoolaege 2001 * 34195618Srpaulo ****************************************************************************/ 35195618Srpaulo 36195618Srpaulo/* 37195618Srpaulo** lib_box.c 38195618Srpaulo** 39195618Srpaulo** The routine wborder(). 40195618Srpaulo** 41195618Srpaulo*/ 42195618Srpaulo 43195618Srpaulo#include <curses.priv.h> 44195618Srpaulo 45195618SrpauloMODULE_ID("$Id: lib_box.c,v 1.22 2005/11/26 15:39:42 tom Exp $") 46195618Srpaulo 47195618Srpaulo#if USE_WIDEC_SUPPORT 48195618Srpaulostatic NCURSES_INLINE chtype 49195618Srpaulo_my_render(WINDOW *win, chtype ch) 50195618Srpaulo{ 51195618Srpaulo NCURSES_CH_T wch; 52195618Srpaulo SetChar2(wch, ch); 53195618Srpaulo wch = _nc_render(win, wch); 54195618Srpaulo return CharOf(wch) | AttrOf(wch); 55195618Srpaulo} 56195618Srpaulo#define RENDER_WITH_DEFAULT(ch,def) w ## ch = _my_render(win, (ch == 0) ? def : ch) 57195618Srpaulo#else 58195618Srpaulo#define RENDER_WITH_DEFAULT(ch,def) w ## ch = _nc_render(win, (ch == 0) ? def : ch) 59195618Srpaulo#endif 60195618Srpaulo 61195618SrpauloNCURSES_EXPORT(int) 62195618Srpaulowborder(WINDOW *win, 63195618Srpaulo chtype ls, chtype rs, 64195618Srpaulo chtype ts, chtype bs, 65195618Srpaulo chtype tl, chtype tr, 66195618Srpaulo chtype bl, chtype br) 67195618Srpaulo{ 68195618Srpaulo NCURSES_SIZE_T i; 69195618Srpaulo NCURSES_SIZE_T endx, endy; 70195618Srpaulo chtype wls, wrs, wts, wbs, wtl, wtr, wbl, wbr; 71195618Srpaulo 72195618Srpaulo T((T_CALLED("wborder(%p,%s,%s,%s,%s,%s,%s,%s,%s)"), 73195618Srpaulo win, 74195618Srpaulo _tracechtype2(1, ls), 75195618Srpaulo _tracechtype2(2, rs), 76195618Srpaulo _tracechtype2(3, ts), 77195618Srpaulo _tracechtype2(4, bs), 78195618Srpaulo _tracechtype2(5, tl), 79195618Srpaulo _tracechtype2(6, tr), 80195618Srpaulo _tracechtype2(7, bl), 81195618Srpaulo _tracechtype2(8, br))); 82195618Srpaulo 83195618Srpaulo if (!win) 84195618Srpaulo returnCode(ERR); 85195618Srpaulo 86195618Srpaulo RENDER_WITH_DEFAULT(ls, ACS_VLINE); 87195618Srpaulo RENDER_WITH_DEFAULT(rs, ACS_VLINE); 88195618Srpaulo RENDER_WITH_DEFAULT(ts, ACS_HLINE); 89195618Srpaulo RENDER_WITH_DEFAULT(bs, ACS_HLINE); 90195618Srpaulo RENDER_WITH_DEFAULT(tl, ACS_ULCORNER); 91195618Srpaulo RENDER_WITH_DEFAULT(tr, ACS_URCORNER); 92195618Srpaulo RENDER_WITH_DEFAULT(bl, ACS_LLCORNER); 93195618Srpaulo RENDER_WITH_DEFAULT(br, ACS_LRCORNER); 94195618Srpaulo 95195618Srpaulo T(("using %s, %s, %s, %s, %s, %s, %s, %s", 96195618Srpaulo _tracechtype2(1, wls), 97195618Srpaulo _tracechtype2(2, wrs), 98195618Srpaulo _tracechtype2(3, wts), 99195618Srpaulo _tracechtype2(4, wbs), 100195618Srpaulo _tracechtype2(5, wtl), 101195618Srpaulo _tracechtype2(6, wtr), 102195618Srpaulo _tracechtype2(7, wbl), 103195618Srpaulo _tracechtype2(8, wbr))); 104195618Srpaulo 105195618Srpaulo endx = win->_maxx; 106195618Srpaulo endy = win->_maxy; 107195618Srpaulo 108195618Srpaulo for (i = 0; i <= endx; i++) { 109195618Srpaulo SetChar2(win->_line[0].text[i], wts); 110195618Srpaulo SetChar2(win->_line[endy].text[i], wbs); 111195618Srpaulo } 112195618Srpaulo win->_line[endy].firstchar = win->_line[0].firstchar = 0; 113195618Srpaulo win->_line[endy].lastchar = win->_line[0].lastchar = endx; 114195618Srpaulo 115195618Srpaulo for (i = 0; i <= endy; i++) { 116195618Srpaulo SetChar2(win->_line[i].text[0], wls); 117195618Srpaulo SetChar2(win->_line[i].text[endx], wrs); 118195618Srpaulo win->_line[i].firstchar = 0; 119195618Srpaulo win->_line[i].lastchar = endx; 120195618Srpaulo } 121195618Srpaulo SetChar2(win->_line[0].text[0], wtl); 122195618Srpaulo SetChar2(win->_line[0].text[endx], wtr); 123195618Srpaulo SetChar2(win->_line[endy].text[0], wbl); 124195618Srpaulo SetChar2(win->_line[endy].text[endx], wbr); 125195618Srpaulo 126195618Srpaulo _nc_synchook(win); 127195618Srpaulo returnCode(OK); 128195618Srpaulo} 129195618Srpaulo