| 135 |
|
char *argv[]; |
| 136 |
|
{ |
| 137 |
|
char ropts[512]; |
| 138 |
+ |
char popts[64]; |
| 139 |
|
int i; |
| 140 |
|
|
| 141 |
|
progname = argv[0]; |
| 190 |
|
/* check date on ambient file */ |
| 191 |
|
checkambfile(); |
| 192 |
|
/* run simulation */ |
| 193 |
< |
renderopts(ropts); |
| 193 |
> |
renderopts(ropts, popts); |
| 194 |
|
xferopts(ropts); |
| 195 |
|
if (rvdevice != NULL) |
| 196 |
< |
rview(ropts); |
| 196 |
> |
rview(ropts, popts); |
| 197 |
|
else |
| 198 |
< |
rpict(ropts); |
| 198 |
> |
rpict(ropts, popts); |
| 199 |
|
exit(0); |
| 200 |
|
userr: |
| 201 |
|
fprintf(stderr, |
| 821 |
|
} |
| 822 |
|
|
| 823 |
|
|
| 824 |
< |
renderopts(op) /* set rendering options */ |
| 825 |
< |
char *op; |
| 824 |
> |
renderopts(op, po) /* set rendering options */ |
| 825 |
> |
char *op, *po; |
| 826 |
|
{ |
| 827 |
|
switch(vscale(QUALITY)) { |
| 828 |
|
case LOW: |
| 829 |
< |
lowqopts(op); |
| 829 |
> |
lowqopts(op, po); |
| 830 |
|
break; |
| 831 |
|
case MEDIUM: |
| 832 |
< |
medqopts(op); |
| 832 |
> |
medqopts(op, po); |
| 833 |
|
break; |
| 834 |
|
case HIGH: |
| 835 |
< |
hiqopts(op); |
| 835 |
> |
hiqopts(op, po); |
| 836 |
|
break; |
| 837 |
|
} |
| 838 |
|
} |
| 839 |
|
|
| 840 |
|
|
| 841 |
< |
lowqopts(op) /* low quality rendering options */ |
| 841 |
> |
lowqopts(op, po) /* low quality rendering options */ |
| 842 |
|
register char *op; |
| 843 |
+ |
char *po; |
| 844 |
|
{ |
| 845 |
|
double d, org[3], siz[3]; |
| 846 |
|
|
| 847 |
|
*op = '\0'; |
| 848 |
+ |
*po = '\0'; |
| 849 |
|
if (sscanf(vval(ZONE), "%*s %lf %lf %lf %lf %lf %lf", &org[0], |
| 850 |
|
&siz[0], &org[1], &siz[1], &org[2], &siz[2]) != 6) |
| 851 |
|
badvalue(ZONE); |
| 852 |
|
siz[0] -= org[0]; siz[1] -= org[1]; siz[2] -= org[2]; |
| 853 |
+ |
if (siz[0] <= FTINY | siz[1] <= FTINY | siz[2] <= FTINY) |
| 854 |
+ |
badvalue(ZONE); |
| 855 |
|
getoctcube(org, &d); |
| 856 |
|
d *= 3./(siz[0]+siz[1]+siz[2]); |
| 857 |
|
switch (vscale(DETAIL)) { |
| 858 |
|
case LOW: |
| 859 |
< |
op = addarg(op, "-ps 16 -dp 64"); |
| 859 |
> |
po = addarg(po, "-ps 16"); |
| 860 |
> |
op = addarg(op, "-dp 64"); |
| 861 |
|
sprintf(op, " -ar %d", (int)(4*d)); |
| 862 |
|
op += strlen(op); |
| 863 |
|
break; |
| 864 |
|
case MEDIUM: |
| 865 |
< |
op = addarg(op, "-ps 8 -dp 128"); |
| 865 |
> |
po = addarg(po, "-ps 8"); |
| 866 |
> |
op = addarg(op, "-dp 128"); |
| 867 |
|
sprintf(op, " -ar %d", (int)(8*d)); |
| 868 |
|
op += strlen(op); |
| 869 |
|
break; |
| 870 |
|
case HIGH: |
| 871 |
< |
op = addarg(op, "-ps 4 -dp 256"); |
| 871 |
> |
po = addarg(po, "-ps 4"); |
| 872 |
> |
op = addarg(op, "-dp 256"); |
| 873 |
|
sprintf(op, " -ar %d", (int)(16*d)); |
| 874 |
|
op += strlen(op); |
| 875 |
|
break; |
| 876 |
|
} |
| 877 |
< |
op = addarg(op, "-pt .16"); |
| 877 |
> |
po = addarg(po, "-pt .16"); |
| 878 |
|
if (vbool(PENUMBRAS)) |
| 879 |
|
op = addarg(op, "-ds .4"); |
| 880 |
|
else |
| 906 |
|
} |
| 907 |
|
|
| 908 |
|
|
| 909 |
< |
medqopts(op) /* medium quality rendering options */ |
| 909 |
> |
medqopts(op, po) /* medium quality rendering options */ |
| 910 |
|
register char *op; |
| 911 |
+ |
char *po; |
| 912 |
|
{ |
| 913 |
|
double d, org[3], siz[3]; |
| 914 |
|
|
| 915 |
|
*op = '\0'; |
| 916 |
+ |
*po = '\0'; |
| 917 |
|
if (sscanf(vval(ZONE), "%*s %lf %lf %lf %lf %lf %lf", &org[0], |
| 918 |
|
&siz[0], &org[1], &siz[1], &org[2], &siz[2]) != 6) |
| 919 |
|
badvalue(ZONE); |
| 920 |
|
siz[0] -= org[0]; siz[1] -= org[1]; siz[2] -= org[2]; |
| 921 |
+ |
if (siz[0] <= FTINY | siz[1] <= FTINY | siz[2] <= FTINY) |
| 922 |
+ |
badvalue(ZONE); |
| 923 |
|
getoctcube(org, &d); |
| 924 |
|
d *= 3./(siz[0]+siz[1]+siz[2]); |
| 925 |
|
switch (vscale(DETAIL)) { |
| 926 |
|
case LOW: |
| 927 |
< |
op = addarg(op, vbool(PENUMBRAS) ? "-ps 4" : "-ps 8"); |
| 927 |
> |
po = addarg(po, vbool(PENUMBRAS) ? "-ps 4" : "-ps 8"); |
| 928 |
|
op = addarg(op, "-dp 256"); |
| 929 |
|
sprintf(op, " -ar %d", (int)(8*d)); |
| 930 |
|
op += strlen(op); |
| 931 |
|
break; |
| 932 |
|
case MEDIUM: |
| 933 |
< |
op = addarg(op, vbool(PENUMBRAS) ? "-ps 3" : "-ps 6"); |
| 933 |
> |
po = addarg(po, vbool(PENUMBRAS) ? "-ps 3" : "-ps 6"); |
| 934 |
|
op = addarg(op, "-dp 512"); |
| 935 |
|
sprintf(op, " -ar %d", (int)(16*d)); |
| 936 |
|
op += strlen(op); |
| 937 |
|
break; |
| 938 |
|
case HIGH: |
| 939 |
< |
op = addarg(op, vbool(PENUMBRAS) ? "-ps 2" : "-ps 4"); |
| 939 |
> |
po = addarg(po, vbool(PENUMBRAS) ? "-ps 2" : "-ps 4"); |
| 940 |
|
op = addarg(op, "-dp 1024"); |
| 941 |
|
sprintf(op, " -ar %d", (int)(32*d)); |
| 942 |
|
op += strlen(op); |
| 943 |
|
break; |
| 944 |
|
} |
| 945 |
< |
op = addarg(op, "-pt .08"); |
| 945 |
> |
po = addarg(po, "-pt .08"); |
| 946 |
|
if (vbool(PENUMBRAS)) |
| 947 |
|
op = addarg(op, "-ds .2 -dj .5"); |
| 948 |
|
else |
| 977 |
|
} |
| 978 |
|
|
| 979 |
|
|
| 980 |
< |
hiqopts(op) /* high quality rendering options */ |
| 980 |
> |
hiqopts(op, po) /* high quality rendering options */ |
| 981 |
|
register char *op; |
| 982 |
+ |
char *po; |
| 983 |
|
{ |
| 984 |
|
double d, org[3], siz[3]; |
| 985 |
|
|
| 986 |
|
*op = '\0'; |
| 987 |
+ |
*po = '\0'; |
| 988 |
|
if (sscanf(vval(ZONE), "%*s %lf %lf %lf %lf %lf %lf", &org[0], |
| 989 |
|
&siz[0], &org[1], &siz[1], &org[2], &siz[2]) != 6) |
| 990 |
|
badvalue(ZONE); |
| 991 |
|
siz[0] -= org[0]; siz[1] -= org[1]; siz[2] -= org[2]; |
| 992 |
+ |
if (siz[0] <= FTINY | siz[1] <= FTINY | siz[2] <= FTINY) |
| 993 |
+ |
badvalue(ZONE); |
| 994 |
|
getoctcube(org, &d); |
| 995 |
|
d *= 3./(siz[0]+siz[1]+siz[2]); |
| 996 |
|
switch (vscale(DETAIL)) { |
| 997 |
|
case LOW: |
| 998 |
< |
op = addarg(op, vbool(PENUMBRAS) ? "-ps 1" : "-ps 8"); |
| 998 |
> |
po = addarg(po, vbool(PENUMBRAS) ? "-ps 1" : "-ps 8"); |
| 999 |
|
op = addarg(op, "-dp 1024"); |
| 1000 |
|
sprintf(op, " -ar %d", (int)(16*d)); |
| 1001 |
|
op += strlen(op); |
| 1002 |
|
break; |
| 1003 |
|
case MEDIUM: |
| 1004 |
< |
op = addarg(op, vbool(PENUMBRAS) ? "-ps 1" : "-ps 5"); |
| 1004 |
> |
po = addarg(po, vbool(PENUMBRAS) ? "-ps 1" : "-ps 5"); |
| 1005 |
|
op = addarg(op, "-dp 2048"); |
| 1006 |
|
sprintf(op, " -ar %d", (int)(32*d)); |
| 1007 |
|
op += strlen(op); |
| 1008 |
|
break; |
| 1009 |
|
case HIGH: |
| 1010 |
< |
op = addarg(op, vbool(PENUMBRAS) ? "-ps 1" : "-ps 3"); |
| 1010 |
> |
po = addarg(po, vbool(PENUMBRAS) ? "-ps 1" : "-ps 3"); |
| 1011 |
|
op = addarg(op, "-dp 4096"); |
| 1012 |
|
sprintf(op, " -ar %d", (int)(64*d)); |
| 1013 |
|
op += strlen(op); |
| 1014 |
|
break; |
| 1015 |
|
} |
| 1016 |
< |
op = addarg(op, "-pt .04"); |
| 1016 |
> |
po = addarg(po, "-pt .04"); |
| 1017 |
|
if (vbool(PENUMBRAS)) |
| 1018 |
|
op = addarg(op, "-ds .1 -dj .7"); |
| 1019 |
|
else |
| 1163 |
|
badvalue(ZONE); |
| 1164 |
|
for (i = 0; i < 3; i++) { |
| 1165 |
|
dim[i] -= cent[i]; |
| 1166 |
+ |
if (dim[i] <= FTINY) |
| 1167 |
+ |
badvalue(ZONE); |
| 1168 |
|
cent[i] += .5*dim[i]; |
| 1169 |
|
} |
| 1170 |
|
mult = vlet(ZONE)=='E' ? 2. : .45 ; |
| 1328 |
|
} |
| 1329 |
|
|
| 1330 |
|
|
| 1331 |
< |
rview(opts) /* run rview with first view */ |
| 1332 |
< |
char *opts; |
| 1331 |
> |
rview(opts, po) /* run rview with first view */ |
| 1332 |
> |
char *opts, *po; |
| 1333 |
|
{ |
| 1334 |
|
char *vw; |
| 1335 |
|
char combuf[512]; |
| 1338 |
|
return; |
| 1339 |
|
if (sayview) |
| 1340 |
|
printview(vw); |
| 1341 |
< |
sprintf(combuf, "rview %s%s -R %s ", vw, opts, rifname); |
| 1341 |
> |
sprintf(combuf, "rview %s%s%s -R %s ", vw, po, opts, rifname); |
| 1342 |
|
if (rvdevice != NULL) |
| 1343 |
|
sprintf(combuf+strlen(combuf), "-o %s ", rvdevice); |
| 1344 |
|
if (vdef(EXPOSURE)) |
| 1351 |
|
} |
| 1352 |
|
|
| 1353 |
|
|
| 1354 |
< |
rpict(opts) /* run rpict and pfilt for each view */ |
| 1355 |
< |
char *opts; |
| 1354 |
> |
rpict(opts, po) /* run rpict and pfilt for each view */ |
| 1355 |
> |
char *opts, *po; |
| 1356 |
|
{ |
| 1357 |
|
char combuf[1024]; |
| 1358 |
|
char rawfile[MAXPATH], picfile[MAXPATH], rep[MAXPATH+16], res[32]; |
| 1413 |
|
/* build rpict command */ |
| 1414 |
|
sprintf(rawfile, "%s_%s.raw", vval(PICTURE), vs); |
| 1415 |
|
if (fdate(rawfile) >= oct1date) /* recover */ |
| 1416 |
< |
sprintf(combuf, "rpict%s%s -ro %s %s", |
| 1417 |
< |
rep, opts, rawfile, oct1name); |
| 1416 |
> |
sprintf(combuf, "rpict%s%s%s -ro %s %s", |
| 1417 |
> |
rep, po, opts, rawfile, oct1name); |
| 1418 |
|
else { |
| 1419 |
|
if (overture) { /* run overture calculation */ |
| 1420 |
|
sprintf(combuf, |
| 1431 |
|
rmfile(overfile); |
| 1432 |
|
#endif |
| 1433 |
|
} |
| 1434 |
< |
sprintf(combuf, "rpict%s %s %s%s %s > %s", |
| 1435 |
< |
rep, vw, res, opts, |
| 1434 |
> |
sprintf(combuf, "rpict%s %s %s%s%s %s > %s", |
| 1435 |
> |
rep, vw, res, po, opts, |
| 1436 |
|
oct1name, rawfile); |
| 1437 |
|
} |
| 1438 |
|
if (runcom(combuf)) { /* run rpict */ |