home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / plot / driver.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-01-10  |  2.0 KB  |  129 lines

  1. #include <stdio.h>
  2.  
  3. float deltx;
  4. float delty;
  5.  
  6. main(argc,argv)  char **argv; {
  7.     int std=1;
  8.     FILE *fin;
  9.  
  10.     while(argc-- > 1) {
  11.         if(*argv[1] == '-')
  12.             switch(argv[1][1]) {
  13.                 case 'l':
  14.                     deltx = atoi(&argv[1][2]) - 1;
  15.                     break;
  16.                 case 'w':
  17.                     delty = atoi(&argv[1][2]) - 1;
  18.                     break;
  19.                 }
  20.  
  21.         else {
  22.             std = 0;
  23.             if ((fin = fopen(argv[1], "r")) == NULL) {
  24.                 fprintf(stderr, "can't open %s\n", argv[1]);
  25.                 exit(1);
  26.                 }
  27.             fplt(fin);
  28.             }
  29.         argv++;
  30.         }
  31.     if (std)
  32.         fplt( stdin );
  33.     exit(0);
  34.     }
  35.  
  36.  
  37. fplt(fin)  FILE *fin; {
  38.     int c;
  39.     char s[256];
  40.     int xi,yi,x0,y0,x1,y1,r,dx,n,i;
  41.     int pat[256];
  42.  
  43.     openpl();
  44.     while((c=getc(fin)) != EOF){
  45.         switch(c){
  46.         case 'm':
  47.             xi = getsi(fin);
  48.             yi = getsi(fin);
  49.             move(xi,yi);
  50.             break;
  51.         case 'l':
  52.             x0 = getsi(fin);
  53.             y0 = getsi(fin);
  54.             x1 = getsi(fin);
  55.             y1 = getsi(fin);
  56.             line(x0,y0,x1,y1);
  57.             break;
  58.         case 't':
  59.             gets(s,fin);
  60.             label(s);
  61.             break;
  62.         case 'e':
  63.             erase();
  64.             break;
  65.         case 'p':
  66.             xi = getsi(fin);
  67.             yi = getsi(fin);
  68.             point(xi,yi);
  69.             break;
  70.         case 'n':
  71.             xi = getsi(fin);
  72.             yi = getsi(fin);
  73.             cont(xi,yi);
  74.             break;
  75.         case 's':
  76.             x0 = getsi(fin);
  77.             y0 = getsi(fin);
  78.             x1 = getsi(fin);
  79.             y1 = getsi(fin);
  80.             space(x0,y0,x1,y1);
  81.             break;
  82.         case 'a':
  83.             xi = getsi(fin);
  84.             yi = getsi(fin);
  85.             x0 = getsi(fin);
  86.             y0 = getsi(fin);
  87.             x1 = getsi(fin);
  88.             y1 = getsi(fin);
  89.             arc(xi,yi,x0,y0,x1,y1);
  90.             break;
  91.         case 'c':
  92.             xi = getsi(fin);
  93.             yi = getsi(fin);
  94.             r = getsi(fin);
  95.             circle(xi,yi,r);
  96.             break;
  97.         case 'f':
  98.             gets(s,fin);
  99.             linemod(s);
  100.             break;
  101.         case 'd':
  102.             xi = getsi(fin);
  103.             yi = getsi(fin);
  104.             dx = getsi(fin);
  105.             n = getsi(fin);
  106.             for(i=0; i<n; i++)pat[i] = getsi(fin);
  107.             dot(xi,yi,dx,n,pat);
  108.             break;
  109.             }
  110.         }
  111.     closepl();
  112.     }
  113. getsi(fin)  FILE *fin; {    /* get an integer stored in 2 ascii bytes. */
  114.     short a, b;
  115.     if((b = getc(fin)) == EOF)
  116.         return(EOF);
  117.     if((a = getc(fin)) == EOF)
  118.         return(EOF);
  119.     a = a<<8;
  120.     return(a|b);
  121. }
  122. gets(s,fin)  char *s;  FILE *fin; {
  123.     for( ; *s = getc(fin); s++)
  124.         if(*s == '\n')
  125.             break;
  126.     *s = '\0';
  127.     return;
  128. }
  129.