xref: /csrg-svn/lib/libplot/dumb/open.c (revision 48505)
1*48505Sbostic /*-
2*48505Sbostic  * Copyright (c) 1980 The Regents of the University of California.
3*48505Sbostic  * All rights reserved.
4*48505Sbostic  *
5*48505Sbostic  * %sccs.include.proprietary.c%
619971Sdist  */
719971Sdist 
815439Sralph #ifndef lint
9*48505Sbostic static char sccsid[] = "@(#)open.c	5.3 (Berkeley) 04/22/91";
10*48505Sbostic #endif /* not lint */
1115439Sralph 
1215439Sralph /*
1315439Sralph  * This accepts plot file formats and produces the appropriate plots
1415439Sralph  * for dumb terminals.  It can also be used for printing terminals and
1515439Sralph  * lineprinter listings, although there is no way to specify number of
1615439Sralph  * lines and columns different from your terminal.  This would be easy
1715439Sralph  * to change, and is left as an exercise for the reader.
1815439Sralph  */
1915439Sralph 
2015439Sralph #include <signal.h>
2115439Sralph #include "dumb.h"
2215439Sralph 
2315439Sralph int minX, rangeX;	/* min and range of x */
2415439Sralph int minY, rangeY;	/* min and range of y */
2515439Sralph int currentx,currenty;
2615439Sralph int COLS,LINES;
2715439Sralph 
2815439Sralph /* A very large screen! (probably should use malloc) */
2915439Sralph char screenmat[MAXCOLS][MAXLINES];
3015439Sralph 
3115439Sralph openpl()
3215439Sralph {
3346635Sbostic 	void closepl();
3415439Sralph 	int i, j;
3515439Sralph 	char *term, *getenv();
3615439Sralph 	char bp[1024];
3715439Sralph 
3815439Sralph 	term = getenv("TERM");
3915439Sralph 	tgetent(bp, term);
4015439Sralph 
4115439Sralph 	COLS = tgetnum("co");
4215439Sralph 	if (COLS > MAXCOLS)
4315439Sralph 		COLS = MAXCOLS;
4415439Sralph 	if (COLS < 0)
4515439Sralph 		COLS = 48;	/* lower bound on # of cols? */
4615439Sralph 	COLS--;				/* prevent auto wrap */
4715439Sralph 
4815439Sralph 	LINES = tgetnum("li");
4915439Sralph 	if (LINES > MAXLINES)
5015439Sralph 		LINES = MAXLINES;
5115439Sralph 	if (LINES < 0)
5215439Sralph 		LINES = 20;	/* lower bound on # of lines? */
5315439Sralph 
5415439Sralph 	for(i=0; i<COLS; i++)
5515439Sralph 		for(j=0; j<LINES; j++)
5615439Sralph 			screenmat[i][j] = ' ';
5715439Sralph 
5815439Sralph 	signal(SIGINT, closepl);
5915439Sralph 	currentx = currenty = 0;
6015439Sralph }
61