7 |
|
|
8 |
|
#include <signal.h> |
9 |
|
#include <ctype.h> |
10 |
– |
#include <stdio.h> |
10 |
|
|
11 |
|
#include "platform.h" |
12 |
|
#include "mkillum.h" |
13 |
+ |
#include "random.h" |
14 |
|
|
15 |
|
/* default parameters */ |
16 |
|
#define SAMPDENS 48 /* points per projected steradian */ |
25 |
|
|
26 |
|
/* rtrace command and defaults */ |
27 |
|
char *rtargv[64] = { "rtrace", "-dj", ".25", "-dr", "3", "-dv-", |
28 |
< |
"-ab", "2", "-ad", "256", "-as", "128", "-aa", ".15", }; |
28 |
> |
"-ab", "2", "-ad", "1024", "-as", "512", "-aa", ".1", }; |
29 |
|
int rtargc = 14; |
30 |
|
/* overriding rtrace options */ |
31 |
|
char *myrtopts[] = { "-I-", "-i-", "-ld-", "-ov", "-h-", |
58 |
|
|
59 |
|
int warnings = 1; /* print warnings? */ |
60 |
|
|
61 |
+ |
void init(void); |
62 |
+ |
void filter(register FILE *infp, char *name); |
63 |
+ |
void xoptions(char *s, char *nm); |
64 |
+ |
void printopts(void); |
65 |
+ |
void printhead(register int ac, register char **av); |
66 |
+ |
void xobject(FILE *fp, char *nm); |
67 |
|
|
68 |
< |
main(argc, argv) /* compute illum distributions using rtrace */ |
69 |
< |
int argc; |
70 |
< |
char *argv[]; |
68 |
> |
|
69 |
> |
int |
70 |
> |
main( /* compute illum distributions using rtrace */ |
71 |
> |
int argc, |
72 |
> |
char *argv[] |
73 |
> |
) |
74 |
|
{ |
75 |
|
char *rtpath; |
76 |
|
FILE *fp; |
136 |
|
} |
137 |
|
else |
138 |
|
filter(stdin, "standard input"); |
139 |
< |
quit(0); |
139 |
> |
return 0; |
140 |
|
} |
141 |
|
|
142 |
|
|
146 |
|
{ |
147 |
|
int rtstat; |
148 |
|
|
149 |
< |
rtstat = close_process(rt.pd); |
150 |
< |
if (status == 0) |
149 |
> |
rtstat = close_process(&(rt.pd)); |
150 |
> |
if (status == 0) { |
151 |
|
if (rtstat < 0) |
152 |
|
error(WARNING, |
153 |
|
"unknown return status from rtrace process"); |
154 |
|
else |
155 |
|
status = rtstat; |
156 |
+ |
} |
157 |
|
exit(status); |
158 |
|
} |
159 |
|
|
160 |
< |
|
161 |
< |
init() /* start rtrace and set up buffers */ |
160 |
> |
void |
161 |
> |
init(void) /* start rtrace and set up buffers */ |
162 |
|
{ |
163 |
|
extern int o_face(), o_sphere(), o_ring(); |
164 |
|
int maxbytes; |
167 |
|
ofun[OBJ_SPHERE].funp = o_sphere; |
168 |
|
ofun[OBJ_RING].funp = o_ring; |
169 |
|
/* set up signal handling */ |
170 |
< |
#ifndef _WIN32 /* XXX what do we use instead? */ |
170 |
> |
#ifdef SIGPIPE /* not present on Windows */ |
171 |
|
signal(SIGPIPE, quit); |
172 |
|
#endif |
173 |
|
/* start rtrace process */ |
174 |
|
errno = 0; |
175 |
< |
maxbytes = open_process(rt.pd, rtargv); |
175 |
> |
maxbytes = open_process(&(rt.pd), rtargv); |
176 |
|
if (maxbytes == 0) { |
177 |
|
eputs(rtargv[0]); |
178 |
|
eputs(": command not found\n"); |
192 |
|
|
193 |
|
|
194 |
|
void |
195 |
< |
eputs(s) /* put string to stderr */ |
196 |
< |
register char *s; |
195 |
> |
eputs( /* put string to stderr */ |
196 |
> |
register char *s |
197 |
> |
) |
198 |
|
{ |
199 |
|
static int midline = 0; |
200 |
|
|
217 |
|
} |
218 |
|
|
219 |
|
|
220 |
< |
filter(infp, name) /* process stream */ |
221 |
< |
register FILE *infp; |
222 |
< |
char *name; |
220 |
> |
void |
221 |
> |
filter( /* process stream */ |
222 |
> |
register FILE *infp, |
223 |
> |
char *name |
224 |
> |
) |
225 |
|
{ |
226 |
|
char buf[512]; |
227 |
|
FILE *pfp; |
251 |
|
} |
252 |
|
|
253 |
|
|
254 |
< |
xoptions(s, nm) /* process options in string s */ |
255 |
< |
char *s; |
256 |
< |
char *nm; |
254 |
> |
void |
255 |
> |
xoptions( /* process options in string s */ |
256 |
> |
char *s, |
257 |
> |
char *nm |
258 |
> |
) |
259 |
|
{ |
260 |
|
extern FILE *freopen(); |
261 |
|
char buf[64]; |
414 |
|
printf("# %s", s+2); |
415 |
|
} |
416 |
|
|
417 |
< |
|
418 |
< |
printopts() /* print out option default values */ |
417 |
> |
void |
418 |
> |
printopts(void) /* print out option default values */ |
419 |
|
{ |
420 |
|
printf("m=%-15s\t\t# material name\n", thisillum.matname); |
421 |
|
printf("f=%-15s\t\t# data file name\n", thisillum.datafile); |
436 |
|
} |
437 |
|
|
438 |
|
|
439 |
< |
printhead(ac, av) /* print out header */ |
440 |
< |
register int ac; |
441 |
< |
register char **av; |
439 |
> |
void |
440 |
> |
printhead( /* print out header */ |
441 |
> |
register int ac, |
442 |
> |
register char **av |
443 |
> |
) |
444 |
|
{ |
445 |
|
putchar('#'); |
446 |
|
while (ac-- > 0) { |
451 |
|
} |
452 |
|
|
453 |
|
|
454 |
< |
xobject(fp, nm) /* translate an object from fp */ |
455 |
< |
FILE *fp; |
456 |
< |
char *nm; |
454 |
> |
void |
455 |
> |
xobject( /* translate an object from fp */ |
456 |
> |
FILE *fp, |
457 |
> |
char *nm |
458 |
> |
) |
459 |
|
{ |
460 |
|
OBJREC thisobj; |
461 |
|
char str[MAXSTR]; |