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