Implement *echochar().

Should fix PR lib/24927.
This commit is contained in:
jdc 2004-03-28 08:58:13 +00:00
parent ad9b29ed97
commit 5eb61d5ca7
2 changed files with 208 additions and 0 deletions

View File

@ -0,0 +1,122 @@
.\" $NetBSD: curses_echochar.3,v 1.1 2004/03/28 08:58:13 jdc Exp $
.\" Copyright (c) 2004 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Julian Coleman.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of The NetBSD Foundation nor the names of its
.\" contributors may be used to endorse or promote products derived
.\" from this software without specific prior written permission.
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd March 27, 2004
.Dt CURSES_ECHOCHAR 3
.Os
.Sh NAME
.Nm curses_echochar ,
.Nm echochar ,
.Nm wechochar ,
.Nm pechochar ,
.Nd curses add characters and then refresh routines
.Sh LIBRARY
.Lb libcurses
.Sh SYNOPSIS
.In curses.h
.Ft int
.Fn echochar "const chtype ch"
.Ft int
.Fn wechochar "WINDOW *win" "const chtype ch"
.Ft int
.Fn pechochar "WINDOW *pad" "const chtype ch"
.Sh DESCRIPTION
These functions add characters to
.Dv stdscr
or to the specified window or pad and then cause an immediate
.Fn refresh of that window or pad.
.Pp
The
.Fn echochar
function adds the character given in
.Fa ch
to
.Dv stdscr
at the current cursor position and advances the current cursor position by one.
Any character attributes set in
.Fa ch
will be merged with the background attributes currently set on
.Dv stdscr .
.Dv stdscr
is then refreshed.
Calling
.Fn echochar
is equivalent to calling
.Fn addch
followed by
.Fn refresh .
.Pp
The
.Fn wechochar
function is the same as the
.Fn echochar
function, excepting that the character is added to the window specified by
.Fa win
and
.Fa win
is refreshed.
.Pp
The
.Fn pechochar
function is the similar to the
.Fn echochar
function, excepting that the character is added to the pad specified by
.Fa pad
and
.Fa pad
is refreshed at its previous location on the screen.
Calling
.Fn pechochar
is equivalent to calling
.Fn addch
followed by
.Fn prefresh .
.Sh RETURN VALUES
These functions will return one of the following values:
.Pp
.Bl -tag -width ERR -compact
.It Er OK
The function completed successfully.
.It Er ERR
An error occurred in the function.
.El
.Sh SEE ALSO
.Xr curses_addch 3 ,
.Xr curses_attributes 3 ,
.Xr curses_pad 3 ,
.Xr curses_refresh 3
.Sh STANDARDS
The
.Nx
Curses library complies with the X/Open Curses specification, part of the
Single Unix Specification.
.Sh HISTORY
The Curses package appeared in
.Bx 4.0 .

86
lib/libcurses/echochar.c Normal file
View File

@ -0,0 +1,86 @@
/* $NetBSD: echochar.c,v 1.1 2004/03/28 08:58:13 jdc Exp $ */
/*-
* Copyright (c) 2004 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Julian Coleman.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of The NetBSD Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
#ifndef lint
__RCSID("$NetBSD: echochar.c,v 1.1 2004/03/28 08:58:13 jdc Exp $");
#endif /* not lint */
#include "curses.h"
#include "curses_private.h"
#ifndef _CURSES_USE_MACROS
/*
* echochar --
* Echo character and attributes on stdscr and refresh stdscr.
*/
int
echochar(const chtype ch)
{
return wechochar(stdscr, ch);
}
#endif /* _CURSES_USE_MACROS */
/*
* echochar --
* Echo character and attributes on "win" and refresh "win".
*/
int
wechochar(WINDOW *win, const chtype ch)
{
int retval;
retval = waddch(win, ch);
if (retval == OK)
retval = wrefresh(win);
return retval;
}
/*
* pechochar --
* Echo character and attributes on "pad" and refresh "pad" at
* its previous position on the screen.
*/
int
pechochar(WINDOW *pad, const chtype ch)
{
int retval;
retval = waddch(pad, ch);
if (retval == OK)
retval = prefresh(pad, pad->pbegy, pad->pbegx,
pad->sbegy, pad->sbegx, pad->smaxy, pad->smaxx);
return retval;
}