diff options
author | Garrett D'Amore <garrett@nexenta.com> | 2010-10-29 09:19:27 -0700 |
---|---|---|
committer | Garrett D'Amore <garrett@nexenta.com> | 2010-10-29 09:19:27 -0700 |
commit | d3c6c3bbc49912cd6f331bd19a29afe6bcddc8a0 (patch) | |
tree | ed76e96e7abdae8a22d5f14c3d70b7f0e67dd89d /usr/src/cmd/tplot/vplot.c | |
parent | 73f5adc7ee5816cee39ea31c7fa1fb37df74db28 (diff) | |
download | illumos-gate-d3c6c3bbc49912cd6f331bd19a29afe6bcddc8a0.tar.gz |
364 remove libplot
Reviewed by: gwr@nexenta.com
Approved by: gwr@nexenta.com
Diffstat (limited to 'usr/src/cmd/tplot/vplot.c')
-rw-r--r-- | usr/src/cmd/tplot/vplot.c | 482 |
1 files changed, 0 insertions, 482 deletions
diff --git a/usr/src/cmd/tplot/vplot.c b/usr/src/cmd/tplot/vplot.c deleted file mode 100644 index c5d5b66a71..0000000000 --- a/usr/src/cmd/tplot/vplot.c +++ /dev/null @@ -1,482 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright 2002 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - - -#pragma ident "%Z%%M% %I% %E% SMI" - -#include <stdio.h> -#include <signal.h> -#include <values.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <sgtty.h> -#include <stdlib.h> - -#define NB 88 -#define BSIZ 512 -#define mapx(x) ((1536*((x)-botx)/del)+centx) -#define mapy(y) ((1536*(del-(y)+boty)/del)-centy) -#define SOLID -1 -#define DOTTED 014 -#define SHORTDASHED 034 -#define DOTDASHED 054 -#define LONGDASHED 074 -#define SETSTATE (('v'<<8)+1) -#define NEG_MASK (MAXINT<<(2*BITS(char))) -#define MAXCHAR ((char)~((char)(1<<BITS(char)-1))) -#define BUILDINT(ubyte, lbyte) \ - ubyte > MAXCHAR \ - ? (ubyte << BITS(char))|lbyte|NEG_MASK \ - : (ubyte << BITS(char))|lbyte - -int linmod = SOLID; -int again; -int done1; -extern char chrtab[][16]; -short plotcom[] = { 0200, 0, 0, 0 }; -short eotcom[] = { 0210, 0, 0, 0 }; -char blocks [NB][BSIZ]; -short obuf[264]; -int lastx; -int lasty; -double topx = 1536; -double topy = 1536; -double botx = 0; -double boty = 0; -int centx; -int centy; -double delx = 1536; -double dely = 1536; -double del = 1536; -int bflag; -int fflag; -char *banname; -FILE *vpstr; - -struct buf { - int bno; - char *block; -}; -struct buf bufs[NB]; - -int in, out; -char picname[] = "/var/tmp/rasterXXXXXX"; -char *picture; - -void getpict(void); -void plotch(int); -void putpict(void); -void line(int, int, int, int); -void point(int, int); -void getblk(int); -void onintr(void); - -int -main(int argc, char **argv) -{ - int i; - int c; - char *fname; - - while ((c = getopt(argc, argv, "e:b:")) != EOF) - switch (c) { - case 'b': - bflag++; - banname = optarg; - break; - - case 'e': - fname = optarg; - fflag++; - break; - - case '?': - fprintf(stderr, - "usage: vplot [ -f raster ] [ file ]\n"); - exit(1); - } - if (fflag) { - if ((in = open(fname, O_RDONLY)) < 0) { - fprintf(stderr, "vplot: cannot open %s\n", fname); - exit(1); - } - putpict(); - exit(0); - } - if (optind < argc) - if (freopen(argv[optind], "r", stdin) == NULL) { - fprintf(stderr, - "vplot: cannot open %s\n", argv[optind]); - exit(1); - } - signal(SIGTERM, (void (*)(int))onintr); - if (signal(SIGINT, SIG_IGN) != SIG_IGN) - signal(SIGINT, (void (*)(int))onintr); - if (signal(SIGHUP, SIG_IGN) != SIG_IGN) - signal(SIGHUP, (void (*)(int))onintr); -another: - for (i = 0; i < NB; i++) { - bufs[i].bno = -1; - bufs[i].block = blocks[i]; - } - - if ((picture = mktemp(picname)) == NULL) { - fprintf(stderr, "vplot: cannot create unique tmp. file name\n"); - exit(1); - } - - if ((out = open(picture, (O_WRONLY|O_CREAT|O_TRUNC|O_EXCL), - (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH))) == -1) { - fprintf(stderr, "vplot: cannot open %s\n", picture); - exit(1); - } - - zseek(out, 32*32); - write(out, blocks[0], BSIZ); -/* - * delete following code when filsys deals properly with - * holes in files - */ - for (i = 0; i < 512; i++) - blocks[0][i] = 0; - zseek(out, 0); - for (i = 0; i < 32*32; i++) - write(out, blocks[0], 512); - getpict(); - for (i = 0; i < NB; i++) - if (bufs[i].bno != -1) { - zseek(out, bufs[i].bno); - write(out, bufs[i].block, BSIZ); - } - putpict(); - if (again) { - close(out); - goto another; - } - unlink(picture); - return (0); -} - -void -getpict(void) -{ - int x1, y1; - - again = 0; - for (;;) - switch (x1 = getc(stdin)) { - case 's': - botx = getw(stdin); - boty = getw(stdin); - topx = getw(stdin); - topy = getw(stdin); - delx = topx-botx; - dely = topy-boty; - if (dely/delx > 1536./2048.) - del = dely; - else - del = delx * (1566./2048.); - centx = 0; - centx = (2048 - mapx(topx)) / 2; - centy = 0; - centy = mapy(topy) / 2; - continue; - - case 'l': - done1 |= 01; - x1 = mapx(getw(stdin)); - y1 = mapy(getw(stdin)); - lastx = mapx(getw(stdin)); - lasty = mapy(getw(stdin)); - line(x1, y1, lastx, lasty); - continue; - - case 'm': - lastx = mapx(getw(stdin)); - lasty = mapy(getw(stdin)); - continue; - - case 't': - done1 |= 01; - while ((x1 = getc(stdin)) != '\n') - plotch(x1); - continue; - - case 'e': - if (done1) { - again++; - return; - } - continue; - - case 'p': - done1 |= 01; - lastx = mapx(getw(stdin)); - lasty = mapy(getw(stdin)); - point(lastx, lasty); - point(lastx+1, lasty); - point(lastx, lasty+1); - point(lastx+1, lasty+1); - continue; - - case 'n': - done1 |= 01; - x1 = mapx(getw(stdin)); - y1 = mapy(getw(stdin)); - line(lastx, lasty, x1, y1); - lastx = x1; - lasty = y1; - continue; - - case 'f': - getw(stdin); - getc(stdin); - switch (getc(stdin)) { - case 't': - linmod = DOTTED; - break; - default: - case 'i': - linmod = SOLID; - break; - case 'g': - linmod = LONGDASHED; - break; - case 'r': - linmod = SHORTDASHED; - break; - case 'd': - linmod = DOTDASHED; - break; - } - while ((x1 = getc(stdin)) != '\n') - if (x1 == -1) - return; - continue; - - case 'd': - getw(stdin); - getw(stdin); - getw(stdin); - x1 = getw(stdin); - while (--x1 >= 0) - getw(stdin); - continue; - - case -1: - return; - - default: - printf("Botch\n"); - return; - } -} - -void -plotch(int c) -{ - int j; - char *cp; - int i; - - if (c < ' ' || c > 0177) - return; - cp = chrtab[c-' ']; - for (i = -16; i < 16; i += 2) { - c = *cp++; - for (j = 7; j >= 0; --j) - if ((c>>j)&1) { - point(lastx+6-j*2, lasty+i); - point(lastx+7-j*2, lasty+i); - point(lastx+6-j*2, lasty+i+1); - point(lastx+7-j*2, lasty+i+1); - } - } - lastx += 16; -} - -int f; /* versatec file number */ - -void -putpict(void) -{ - int x; - short *ip, *op; - int y; - - if (f == 0) { - f = open("/dev/vp", O_WRONLY); - if (f < 0) { - fprintf(stderr, "Cannot open vp\n"); - unlink(picture); - exit(1); - } - vpstr = fdopen(f, "w"); - if (bflag) { - banner(vpstr, banname); - fflush(vpstr); - } - ioctl(f, TIOCSETP, plotcom); - } - op = obuf; - lseek(in, 0L, 0); - for (y = 0; y < 2048; y++) { - if ((y&077) == 0) - read(in, blocks[0], 32*BSIZ); - for (x = 0; x < 32; x++) { - ip = (short *)&blocks[x][(y&077)<<3]; - *op++ = *ip++; - *op++ = *ip++; - *op++ = *ip++; - *op++ = *ip++; - } - *op++ = 0; - *op++ = 0; - *op++ = 0; - *op++ = 0; - if (y&1) { - write(f, (char *)obuf, sizeof (obuf)); - op = obuf; - } - } -} - -void -line(int x0, int y0, int x1, int y1) -{ - int dx, dy; - int xinc, yinc; - int res1; - int res2; - int slope; - - xinc = 1; - yinc = 1; - if ((dx = x1-x0) < 0) { - xinc = -1; - dx = -dx; - } - if ((dy = y1-y0) < 0) { - yinc = -1; - dy = -dy; - } - slope = xinc*yinc; - res1 = 0; - res2 = 0; - if (dx >= dy) - while (x0 != x1) { - if ((x0 + slope*y0) & linmod) - if (((x0>>6) + ((y0&~077)>>1)) == bufs[0].bno) - bufs[0].block[((y0&077)<<3)+((x0>>3)&07)] |= 1 << (7-(x0&07)); - else - point(x0, y0); - if (res1 > res2) { - res2 += dx - res1; - res1 = 0; - y0 += yinc; - } - res1 += dy; - x0 += xinc; - } else while (y0 != y1) { - if ((x0 + slope * y0) & linmod) - if (((x0 >> 6) + ((y0 & ~077) >> 1)) == bufs[0].bno) - bufs[0].block[((y0 & 077) << 3)+((x0 >> 3) & 07)] - |= 1 << (7 - (x0& 07)); - else - point(x0, y0); - if (res1 > res2) { - res2 += dy - res1; - res1 = 0; - x0 += xinc; - } - res1 += dx; - y0 += yinc; - } - if ((x1+slope*y1)&linmod) - if (((x1>>6) + ((y1&~077)>>1)) == bufs[0].bno) - bufs[0].block[((y1&077)<<3)+((x1>>3)&07)] |= 1 << (7-(x1&07)); - else - point(x1, y1); -} - -void -point(int x, int y) -{ - int bno; - - bno = ((x&03700)>>6) + ((y&03700)>>1); - if (bno != bufs[0].bno) { - if (bno < 0 || bno >= 1024) - return; - getblk(bno); - } - bufs[0].block[((y&077)<<3)+((x>>3)&07)] |= 1 << (7-(x&07)); -} - -void -getblk(int b) -{ - struct buf *bp1, *bp2; - char *tp; - -loop: - for (bp1 = bufs; bp1 < &bufs[NB]; bp1++) { - if (bp1->bno == b || bp1->bno == -1) { - tp = bp1->block; - for (bp2 = bp1; bp2 > bufs; --bp2) { - bp2->bno = (bp2-1)->bno; - bp2->block = (bp2-1)->block; - } - bufs[0].bno = b; - bufs[0].block = tp; - return; - } - } - zseek(out, bufs[NB-1].bno); - write(out, bufs[NB-1].block, BSIZ); - zseek(in, b); - read(in, bufs[NB-1].block, BSIZ); - bufs[NB-1].bno = b; - goto loop; -} - -void -onintr(void) -{ - unlink(picture); - exit(1); -} - - -int -zseek(int a, int b) -{ - return (lseek(a, (long)b*512, 0)); -} |