ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/meta/tscat.c
Revision: 1.4
Committed: Sat Nov 15 02:13:37 2003 UTC (20 years, 6 months ago) by schorsch
Content type: text/plain
Branch: MAIN
CVS Tags: rad3R6P1, rad3R6
Changes since 1.3: +11 -14 lines
Log Message:
Continued ANSIfication, and reduced other compile warnings.

File Contents

# User Rev Content
1 greg 1.1 #ifndef lint
2 schorsch 1.4 static const char RCSid[] = "$Id: tscat.c,v 1.3 2003/08/01 14:14:24 schorsch Exp $";
3 greg 1.1 #endif
4     /*
5     * PROGRAM TO PLOT TEL-A-GRAF POINTS TO METAFILE
6     *
7     * Greg Ward
8     * 12/12/84
9     *
10     * cc -o ../tscat tscat.c tgraph.o primout.o mfio.o syscalls.o misc.o -lm
11     */
12    
13     #include "tgraph.h"
14 schorsch 1.2 #include "paths.h"
15 schorsch 1.4 #include "plot.h"
16 greg 1.1
17     #define XLEGEND (XBEG+XSIZ+4*TSIZ) /* x start of legend */
18    
19     #define YLEGEND (YBEG+2*YSIZ/3) /* y start of legend */
20    
21     short usecurve[NCUR]; /* booleans for curve usage */
22    
23     double xmin, ymin, xmax, ymax; /* domain */
24    
25     double xsize, ysize; /* axis dimensions */
26    
27     double xmnset = -FHUGE, xmxset = FHUGE, /* domain settings */
28     ymnset = -FHUGE, ymxset = FHUGE;
29    
30     short logx = FALSE, logy = FALSE; /* flags for log plots */
31    
32     short polar = FALSE; /* flag for polar plots */
33    
34     short grid = FALSE; /* flag for grid */
35    
36     char *sym[NCUR] = {"ex", "triangle", "square", "triangle2", "diamond",
37     "cross", "octagon", "crosssquare", "exsquare",
38     "trianglesquare", "triangle2square", "crossdiamond",
39     "crossoctagon", "exoctagon", "block", "bullet"};
40    
41     int ncurves;
42    
43     int xlegend,
44     ylegend; /* current legend position */
45    
46     int symrad = SYMRAD; /* symbol radius */
47    
48     char *progname;
49    
50    
51    
52 schorsch 1.4 int
53     main(
54     int argc,
55     char **argv
56     )
57 greg 1.1 /*
58     * Take Tel-A-Graf runnable files and convert them to
59     * metafile primitives to send to standard output
60     */
61    
62     {
63     char tfname[MAXFNAME];
64     FILE *fp;
65     int axflag;
66    
67     progname = *argv++;
68     argc--;
69    
70     initialize();
71    
72     for (; argc && (**argv == '-' || **argv == '+'); argc--, argv++)
73     option(*argv);
74    
75     if (polar) /* avoid dumb choices */
76     logx = FALSE;
77    
78     axflag = XTICS|XNUMS|YTICS|YNUMS;
79     if (grid)
80     axflag |= XGRID|YGRID;
81     if (polar)
82     axflag |= ORIGIN;
83     else
84     axflag |= BOX;
85    
86     pglob(PINCL, 2, "symbols.mta");
87    
88     if (argc)
89    
90     for ( ; argc--; argv++) {
91    
92     fp = efopen(*argv, "r");
93     normalize(fp, NULL);
94     makeaxis(axflag);
95     fseek(fp, 0L, 0);
96     plot(fp);
97     fclose(fp);
98     }
99     else {
100    
101 schorsch 1.2 /*sprintf(tfname, "%sts%d", TDIR, getpid());*/
102     temp_filename(tfname, sizeof(tfname), NULL);
103 greg 1.1 fp = efopen(tfname, "w+");
104     normalize(stdin, fp);
105     makeaxis(axflag);
106     fseek(fp, 0L, 0);
107     plot(fp);
108     fclose(fp);
109     unlink(tfname);
110     }
111    
112     pglob(PEOF, 0200, NULL);
113    
114     return(0);
115     }
116    
117    
118    
119    
120 schorsch 1.4 void
121     plot( /* read file and generate plot */
122     FILE *fp
123     )
124 greg 1.1 {
125     int ncur = 0; /* curves seen so far */
126     char line[255], *s;
127     double x, y;
128    
129     xlegend = XLEGEND;
130     ylegend = YLEGEND;
131    
132     if (ncurves > 0) {
133     pprim(PMSTR, 0100, xlegend, ylegend+800, xlegend, ylegend+800, "Legend:");
134     pprim(PMSTR, 0100, xlegend, ylegend+800, xlegend, ylegend+800, "______");
135     }
136    
137     while (fgets(line, sizeof line, fp) != NULL)
138    
139     if (istitle(line)) {
140     s = snagquo(line);
141     boxstring(0, 0, YBEG+YSIZ+1000, XYSIZE-1, YBEG+YSIZ+1500, s);
142     }
143    
144     else if (isxlabel(line)) {
145     s = snagquo(line);
146     boxstring(0, XBEG, YBEG-1250, XBEG+XSIZ, YBEG-900, s);
147     }
148    
149     else if (isylabel(line)) {
150     s = snagquo(line);
151     boxstring(020, XBEG-1900, YBEG, XBEG-1550, YBEG+YSIZ, s);
152     }
153    
154     else if (islabel(line)) {
155     if (++ncur < NCUR && usecurve[ncur]) {
156     symout(0, xlegend, ylegend+symrad, sym[ncur]);
157     pprim(PMSTR, 020, xlegend+400, ylegend+200,
158     xlegend+400, ylegend+200, snagquo(line));
159     ylegend -= 500;
160     }
161     }
162    
163     else if (usecurve[ncur] && isdata(line)) {
164    
165     if (getdata(line, &x, &y) >= 0)
166     symout(0, XCONV(x), YCONV(y), sym[ncur]);
167    
168     }
169    
170     pglob(PEOP, 0200, NULL);
171    
172     }
173