--- ray/src/gen/mkillum.c 1991/07/25 10:59:05 1.6 +++ ray/src/gen/mkillum.c 1991/11/12 17:05:04 2.1 @@ -15,9 +15,10 @@ static char SCCSid[] = "$SunId$ LBL"; #include /* default parameters */ -#define SAMPDENS 128 /* points per projected steradian */ +#define SAMPDENS 48 /* points per projected steradian */ #define NSAMPS 32 /* samples per point */ #define DFLMAT "illum_mat" /* material name */ +#define DFLDAT "illum" /* data file name */ /* selection options */ #define S_NONE 0 /* select none */ #define S_ELEM 1 /* select specified element */ @@ -36,11 +37,12 @@ struct rtproc rt; /* our rtrace process */ struct illum_args thisillum = { /* our illum and default values */ 0, DFLMAT, - DFLMAT, + DFLDAT, 0, VOIDID, SAMPDENS, NSAMPS, + 0., }; char matcheck[MAXSTR]; /* current material to include or exclude */ @@ -89,6 +91,7 @@ char *argv[]; rtargv[rtargc] = NULL; /* just asking for defaults? */ if (!strcmp(argv[gargc-1], "-defaults")) { + printopts(); fflush(stdout); rtpath = getpath(rtargv[0], getenv("PATH"), X_OK); if (rtpath == NULL) { eputs(rtargv[0]); @@ -144,6 +147,7 @@ init() /* start rtrace and set up buffers */ /* set up signal handling */ signal(SIGPIPE, quit); /* start rtrace process */ + errno = 0; maxbytes = open_process(rt.pd, rtargv); if (maxbytes == 0) { eputs(rtargv[0]); @@ -256,6 +260,7 @@ char *nm; break; if (!*++cp) { strcpy(thisillum.datafile,thisillum.matname); + thisillum.dfnum = 0; thisillum.flags &= ~IL_DATCLB; continue; } @@ -268,8 +273,9 @@ char *nm; case 'e': /* exclude material */ if (cp[1] != '=') break; - matselect = (*++cp == 'i') ? S_ELEM : S_COMPL; - atos(matcheck, MAXSTR, ++cp); + matselect = (*cp == 'i') ? S_ELEM : S_COMPL; + cp += 2; + atos(matcheck, MAXSTR, cp); cp = sskip(cp); continue; case 'a': /* use everything */ @@ -325,6 +331,16 @@ char *nm; break; cp++; continue; + case 'b': /* brightness */ + if (*++cp != '=') + break; + if (!isfltd(++cp, " \t\n")) + break; + thisillum.minbrt = atof(cp); + if (thisillum.minbrt < 0.) + thisillum.minbrt = 0.; + cp = sskip(cp); + continue; case 'o': /* output file */ if (*++cp != '=') break; @@ -340,9 +356,9 @@ char *nm; doneheader = 0; continue; case '!': /* processed file! */ - sprintf(errmsg, "(%s): processed by mkillum already!", - nm); + sprintf(errmsg, "(%s): already processed!", nm); error(WARNING, errmsg); + matselect = S_NONE; return; } opterr: /* skip faulty option */ @@ -362,6 +378,17 @@ char *nm; } /* print pure comment */ printf("# %s", s+2); +} + + +printopts() /* print out option default values */ +{ + printf("m=%-15s\t\t# material name\n", thisillum.matname); + printf("f=%-15s\t\t# data file name\n", thisillum.datafile); + printf("c=n\t\t\t\t# color none\n"); + printf("d=%d\t\t\t\t# density of points\n", thisillum.sampdens); + printf("s=%d\t\t\t\t# samples per point\n", thisillum.nsamps); + printf("b=%f\t\t\t# minimum average brightness\n", thisillum.minbrt); }