PD plot(4) librarys (and hercules driver for interactive 386) part 9 of 9

Roland van Hout hot at integow.uucp
Sun Oct 28 14:58:59 AEST 1990




#!/bin/sh
# This is part 09 of a multipart archive
if touch 2>&1 | fgrep '[-amc]' > /dev/null
 then TOUCH=touch
 else TOUCH=true
fi
# ============= tplot.sh ==============
echo "x - extracting tplot.sh (Text)"
sed 's/^X//' << 'SHAR_EOF' > tplot.sh &&
X#Add these lines to your tplot script in /usr/bin if you've
X#installed /usr/lib/therc and the other drivers
X
Xcase $1 in
X-T*)	t=$1
X	shift ;;
X*)	t=-T$TERM
Xesac
Xcase $t in
X-T450)	exec /usr/lib/t450 $*;;			#standard AT&T no PD
X-T300)	exec /usr/lib/t300 $*;;			#standard AT&T no PD
X-T300S|-T300s)	exec /usr/lib/t300s $*;;	#standard AT&T no PD
X-Tver)	exec /usr/lib/vplot $*;;		#standard AT&T no PD
X-Ttek|-T4014)	exec /usr/lib/t4014 $* ;;	#standard AT&T no PD
X-TReGIS|-Tvt330|-Tvt240|-Tvt340)	exec /usr/lib/tReGIS $* ;;
X-Thpgl | -Thp74* | -Thp75*) exec /usr/lib/tplothpgl $*  ;; # | lp to plot
X-Tlp | -Tplotlp | -Tlaser ) exec /usr/lib/tplotlp -h $* | lp -dlaser ;; # laser big picture
X		# -m and -l give a medium and small size output
X-Tepson) exec /usr/lib/tplotlp -e $* | lp -depson ;; # epson picture
X-Tibm) exec /usr/lib/tplotlp -i $* | lp -dibm ;; # ibm picture
X-Therc)	exec /usr/lib/therc $* ;;
X-TCGI|-Tconsole|-Tansi)	CGIPATH=/usr/lib/cgi;export CGIPATH
X			CGIDISP=vgabw;export CGIDISP;
X			/usr/lib/tCGI $* 
X			read a </dev/tty
X			;;
X-Ttplot)	exec /bin/cat $* ;;
X*)  echo terminal type not known 1>&2; exit 1
Xesac
SHAR_EOF
$TOUCH -am 1026185890 tplot.sh &&
chmod 0644 tplot.sh ||
echo "restore of tplot.sh failed"
set `wc -c tplot.sh`;Wc_c=$1
if test "$Wc_c" != "1115"; then
	echo original size 1115, current size $Wc_c
fi
# ============= plotlpus.h ==============
echo "x - extracting plotlpus.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > plotlpus.h &&
X/* 
X	include  file to use the epson,ibm-proprinter and the laserjet
X	with the plot(4) graphic library
X	the switch is done via a variable printer this one must be defined
X	in your main program
X	these variables must be defined in the main-part of your programm
X    extern int no_fill;
X    int     to_printer; EPSON || IBM_PRO || LASERLOW || LASERMED || LASERHIGH
X
X*/
X/*
X * const.h
X *
X * Copyright (c) 1988 Environmental Defense Fund, Inc.
X */
X
X#define TRUE 1
X#define FALSE 0
X
X/* Printer model: values of global var 'printer' */
X#define EPSON    1		/* Epson LQ 1500 */
X#define LASERLOW 2		/* HP LaserJet Plus low sized 5" x 6" */
X#define IBM_PRO  3		/* IBM Proprinter */
X#define LASERMED 4		/* HP LaserJet Plus med sized 8" x 6" */
X#define LASERHIGH 5		/* HP LaserJet Plus extra large 8" x 11"*/
X
X	int offx,offy;
X	int to_printer=TRUE;
X	int printer=LASERLOW;
X	float gxscrunch,gyscrunch;
X
X
SHAR_EOF
$TOUCH -am 1014215790 plotlpus.h &&
chmod 0644 plotlpus.h ||
echo "restore of plotlpus.h failed"
set `wc -c plotlpus.h`;Wc_c=$1
if test "$Wc_c" != "885"; then
	echo original size 885, current size $Wc_c
fi
# ============= driver.c ==============
echo "x - extracting driver.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > driver.c &&
X/*
X * plot(1) clone. This filter implements the commands described in the 
X * V7 UNIX manual pages, using the gl graphics library routines.
X *
X * Author: Wietse Venema (wietse at wzv.UUCP)
X *
X * Options: -Tdevice, where device is one of:
X *
X *	cga (CGA)	cga adapter, low (high) resolution
X *	herc (HERC)	hercules adapter, page 0 (page 1)
X *	ega		ega adapter
X *	lp		matrix printer 
X *	lj		laserjet printer
X *
X * The output device can also be specified with the GLMODE environment
X * variable. See the gl graphics library documentation for details.
X */
X/* changes to provide compatibility with Microport V386 3.0e
X * W Hatch  uunet!bts!bill
X * 2/18/90
X */
X/*
Xchanges to get it running on interactive 386
XR.P. van Hout uunet!mcsun!hp4nl!integow!hot!hot
X*/
X
X#include <stdio.h>
X/*#include <modes.h>*/
X
Xstatic void     confirm();
X
X/*
X * If the output device is specified on the command line we pass it on to
X * the gl library routines by setting the GLMODE environment variable...
X */
X
Xfloat deltx = 4095.0;
Xfloat delty = 4095.0;
X
Xstruct Modetab {
X    char           *modename;
X    int             modeval;
X};
X
Xstruct Modetab  modetab[] = {
X#ifdef bla
X    "cga",	CGA_COLOR_MODE,		/* cga lo-res */
X    "CGA",	CGA_HI_RES_MODE,	/* cga hi-res */
X    "herc",	HERC_P0_MODE,		/* hercules page 0 */
X    "HERC",	HERC_P1_MODE,		/* hercules page 1 */
X    "ega",	EGA_COLOR_MODE,		/* ega */
X    "lp",	IBM_PRINTER,		/* matrix printer */
X    "lj",	LJ_PRINTER,		/* laserjet printer */
X#endif
X    0, 0,
X};
X
X/* various shorthands */
X#ifdef V386		/* 16 bit integers output by uport V386 graph(1) */
X#define	READ(x)			fread((char *) &s_x, sizeof(s_x), 1, stdin);\
X					x=s_x
X#else
X#define	READ(x)			fread((char *) &x, sizeof(x), 1, stdin)
X#endif
X#define	READ2(a,b)		READ(a); READ(b)
X#define	READ3(a,b,c)		READ2(a,b); READ(c)
X#define	READ4(a,b,c,d)		READ2(a,b); READ2(c,d);
X#define	READ6(a,b,c,d,e,f)	READ4(a,b,c,d); READ2(e,f);
X
X/* 
X * Process the plotfile. The program terminates with a diagnostic
X * in case of unrecognized data.
X */
X
Xmain(argc, argv)
Xint             argc;
Xchar          **argv;
X{
X    register struct Modetab *mp;
X    register int    c;
X    char            buf[BUFSIZ];
X    int             x, y, x0, y0, x1, y1, x2, y2, r, glmode;
X#ifdef V386
X    short int       s_x, s_y, s_x0, s_y0, s_x1, s_y1, s_x2, s_y2, s_r, s_glmode;
X#endif
X    static char     envstring[] = "GLMODE=xxxxxx";
X    int noconfirm;
X	noconfirm = 0;
X    /* process command-line arguments */
X
X    while (--argc && *++argv) {
X#ifdef bla
X	if (strncmp(*argv, "-T", 2) == 0) {
X	    for (mp = modetab; mp->modename; mp++) {
X		if (strcmp(*argv + 2, mp->modename) == 0) {
X		    sprintf(envstring, "GLMODE=%d", glmode = mp->modeval);
X		    putenv(envstring);
X		}
X	    }
X	} else {
X	    fprintf(stderr, "bad argument: %s\n", *argv);
X	    exit(1);
X	}
X#endif
X	if (strncmp(*argv, "-K", 2) == 0) noconfirm = 1;
X    }
X
X#ifndef	unix
X    you may have to select binary mode for stdin
X#endif
X
X    /* process the plotfile */
X
X    openpl();
X
X    while ((c = getchar()) != EOF) {
X#ifdef DBUG
X	fprintf(stderr, "c= %c, c(int)= %d\n",c,c);
X	fflush(stderr);
X#endif
X	switch (c) {
X	case 'm':				/* move */
X	    READ2(x, y);
X#ifdef DBUG
X	    fprintf(stderr, "x: %d, y: %d\n", x, y);
X	    fflush(stderr);
X#endif
X	    move(x, y);
X	    break;
X	case 'n':				/* cont */
X	    READ2(x, y);
X#ifdef DBUG
X	    fprintf(stderr, "x: %d, y: %d\n", x, y);
X	    fflush(stderr);
X#endif
X	    cont(x, y);
X	    break;
X	case 'p':				/* point */
X	    READ2(x, y);
X#ifdef DBUG
X	    fprintf(stderr, "x: %d, y: %d\n", x, y);
X	    fflush(stderr);
X#endif
X	    point(x, y);
X	    break;
X	case 'l':				/* line */
X	    READ4(x1, y1, x2, y2);
X#ifdef DBUG
X	    fprintf(stderr, "x1: %d, y1: %d, x2: %d, y2: %d\n", x1, y1,x2,y2);
X	    fflush(stderr);
X#endif
X	    line(x1, y1, x2, y2);
X	    break;
X	case 't':				/* label */
X	    {
X		register char  *p = buf;
X
X		/********
X		while ((c = getchar()) != EOF && c)
X		    *p++ = c;
X		*p = '\0';
X		weh  2/18/90  --- incoming string is newline terminated
X		********/
X		gets(buf);
X		label(buf);
X	    }
X#ifdef DBUG
X	    fprintf(stderr, "label: %s\n", buf);
X	    fflush(stderr);
X#endif
X	    break;
X	case 'a':				/* arc */
X	    READ6(x, y, x0, y0, x1, y1);
X	    arc(x, y, x0, y0, x1, y1);
X	    break;
X	case 'c':				/* circle */
X	    READ3(x, y, r);
X	    circle(x, y, r);
X	    break;
X	case 'e':				/* erase */
X/*	    if (glmode <= MAXVIDEO)*/
X		if (!noconfirm) confirm();
X	    erase();
X	    break;
X	case 'f':				/* linemod */
X	    gets(buf);
X	    linemod(buf);
X	    break;
X	case 's':				/* space */
X	    READ4(x0, y0, x1, y1);
X#ifdef DBUG
X	    fprintf(stderr, "x0: %d, y0: %d, x1: %d, y1: %d\n", x0, y0,x1,y1);
X	    fflush(stderr);
X#endif
X	    space(x0, y0, x1, y1);
X	    break;
X				/* corrupt */
X	default:
X	    closepl();
X	    fprintf(stderr,"c= %c, %d corrupted plotfile -- giving up\n",c,c);
X	    fflush(stderr);
X	    exit(1);
X	}; /* end switch */
X    } /* end while */
X
X/*    if (glmode <= MAXVIDEO)*/
X	if (!noconfirm) confirm();
X	else sleep(5);
X    closepl();
X    exit(0);
X    /* NOTREACHED */
X}
X
X/* give them a chance before erase() or closepl() clobber the screen */
X
Xstatic void     confirm()
X{
X    FILE           *fp;
X    int             c;
X
X    if (fp = fopen("/dev/tty", "r")) {
X	while ((c = getc(fp)) != EOF && c != '\n');
X	fclose(fp);
X    }
X}
SHAR_EOF
$TOUCH -am 1026194490 driver.c &&
chmod 0644 driver.c ||
echo "restore of driver.c failed"
set `wc -c driver.c`;Wc_c=$1
if test "$Wc_c" != "5283"; then
	echo original size 5283, current size $Wc_c
fi
exit 0


-- 
UUCP: ..!uunet!mcsun!hp4nl!integow!hot	or  hot at integow.UUCP or hot at hot.mug
Roland van Hout, Sr. software engineer, Integrity software consultants, 
         Pelmolenlaan 16, 3447 GW Woerden, Netherlands,
            tel +31 3480-30131, fax +31 3480-30182



More information about the Alt.sources mailing list