Ultrix-3.1/src/libcurses/curtest.c


/**********************************************************************
 *   Copyright (c) Digital Equipment Corporation 1984, 1985, 1986.    *
 *   All Rights Reserved. 					      *
 *   Reference "/usr/src/COPYRIGHT" for applicable restrictions.      *
 **********************************************************************/

/* SCCSID: @(#)curtest.c	3.0	4/22/86	*/
/*
 * ( cc cursetest.c -lcurses -ltermlib )
 *
 *	cursetest.c
 *
 * a program to test overlay/overwrite routines in libcurses
 * the program should draw the following pattern in 4 places on the screen:

	 + + + + + + + + + +
	 + wwwwwwwwww+ + + +
	 + w        w+ + + +
	 + w    llllllllll +
	 + w    l   w+ + l +
	 + wwwwwlwwww+ + l +
	 + + + +l+ + + + l +
	 + + + +llllllllll +
	 + + + + + + + + + +
 *
 * and finally in the centre it should draw another pattern with the 'w'
 * and 'l' windows overlapping opposite corners of the base
 *	NOTE: only two sides of each should be visible.
 *
 * From: probe@mm730.uq.OZ (Cameron Davidson)
 * Organization: Mining&Metal. Eng; Univ of Qld; Brisbane; Aus
 */

#include	<stdio.h>
#include	<curses.h>


WINDOW	*Wbase,
	*Woverw,
	*Woverl;

main( ac, av )
	char	**av;
{
	initscr();
	normal_pattern( 0, 0 );
	normal_pattern( 10, 0 );
	normal_pattern( 0, 50 );
	normal_pattern( 10, 50 );
		/* now test when windows extend beyond base window */
	Wbase = newwin( 9, 19, 5, 25 );
	Woverw = newwin( 5, 10, 3, 22);
	Woverl = newwin( 5, 10, 11, 37);
	draw_pattern();
	mvcur( 0, COLS-1, LINES-1, 0);
}

	/*
	 * setup windows to draw patterns completely within base area
	 */
normal_pattern( base_y_begin, base_x_begin )
	int	base_y_begin, base_x_begin;
{
	if ( base_y_begin + 9 >= LINES  || base_x_begin + 19 >= COLS ) {
		fputs( "WON'T FIT\n", stderr);
		exit(1);
	}
	Wbase = newwin( 9, 19, base_y_begin, base_x_begin );
	Woverw = newwin( 5, 10, base_y_begin + 1, base_x_begin + 2);
	Woverl = newwin( 5, 10, base_y_begin + 3, base_x_begin + 7);
	draw_pattern();
}

draw_pattern( )
{
	register	int	line;

	for( line=0 ; line < 9 ; line++ )
		mvwaddstr( Wbase, line, 0, "+ + + + + + + + + +");
	wrefresh(Wbase);
	box( Woverw, 'w', 'w');
	box( Woverl, 'l', 'l');
	overwrite( Woverw, Wbase );
	wrefresh(Wbase);
	overlay( Woverl, Wbase );
	wrefresh(Wbase);
	delwin( Wbase );
	delwin( Woverw );
	delwin( Woverl );
}