open.c revision b7d62af5b42f0da2eb668e8d33d24d2f4fdd98a8
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/*
* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* Displays plot files on a AED512 graphics terminal.
*/
#include "aed.h"
char dbuf[BUFSIZ]; /* Used to buffer display characters */
struct sgttyb sgttyb; /* Used to save terminal control bits */
int curx, cury; /* Current screen position */
int xbot, ybot; /* Coordinates of screen lower-left corner */
int scale; /* The number of pixels per 2**12 units
* of world coordinates.
*/
/*
* The following is the color map, containing reg, green, and blue
* values for color locations 0 and 1.
*/
static int colors[] = {200, 200, 200, 0, 0, 125, 125, 0, 0, 125, 0, 0};
/*---------------------------------------------------------
* Openpl initializes the graphics display and clears its screen.
*
* Results: None.
*
* Side Effects:
* The display is re-initialized and the file is remembered for
* use in all subsequent calls to this module. The display's
* color map is reset. The display is put into raw mode, but
* the previous mode bits are saved.
*
* Errors: None.
*---------------------------------------------------------
*/
void
openpl(void)
{
int flags, *p, i;
char dum[4];
/* First, grab up the display modes, then reset them to put it
* into cooked mode. Also, lock the terminal.
*/
(void) gtty(fileno(stdout), &sgttyb);
flags = sgttyb.sg_flags;
sgttyb.sg_flags = (sgttyb.sg_flags & ~(RAW)) | EVENP | ODDP;
(void) stty(fileno(stdout), &sgttyb);
sgttyb.sg_flags = flags;
/* Save the file pointer around for later use, then output an
* initialization string to the display. The initialization
* string resets the terminal, sets formats, clears the display,
* initializes the read and write masks, and sets the color map.
*/
setbuf(stdout, dbuf);
fputs("\33\33G1HHHN[00LFFCFFMFFFFFFFF", stdout);
fputs("K0004", stdout);
p = colors;
for (i=0; i<12; i++)
{
chex(*p++, dum, 2);
fputs(dum, stdout);
}
fputs("^15060AL", stdout);
scale = 1<<12;
curx = cury = xbot = ybot = 0;
(void) fflush(stdout);
}