ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/gen/mkillum.c
(Generate patch)

Comparing ray/src/gen/mkillum.c (file contents):
Revision 2.30 by greg, Tue Sep 18 19:51:07 2007 UTC vs.
Revision 2.42 by greg, Thu Sep 15 22:34:41 2016 UTC

# Line 8 | Line 8 | static const char RCSid[] = "$Id$";
8   #include  <signal.h>
9   #include  <ctype.h>
10  
11 < #include  "platform.h"
11 > #include  "paths.h"             /* win_popen() */
12   #include  "mkillum.h"
13 #include  "random.h"
13  
14                                  /* default parameters */
15   #define  SAMPDENS       48              /* points per projected steradian */
# Line 25 | Line 24 | static const char RCSid[] = "$Id$";
24  
25   struct illum_args  thisillum = {        /* our illum and default values */
26                  0,
28                UDzpos,
27                  DFLMAT,
28                  DFLDAT,
29                  0,
30                  VOIDID,
31                  SAMPDENS,
32                  NSAMPS,
35                NULL,
33                  0.,
34          };
35  
# Line 48 | Line 45 | int    doneheader = 0;         /* printed header yet? */
45   int     warnings = 1;           /* print warnings? */
46  
47   void init(char *octnm, int np);
48 < void filter(register FILE       *infp, char     *name);
48 > void filter(FILE        *infp, char     *name);
49   void xoptions(char      *s, char        *nm);
50   void printopts(void);
51 < void printhead(register int  ac, register char  **av);
51 > void printhead(int  ac, char  **av);
52   void xobject(FILE  *fp, char  *nm);
53  
54  
# Line 64 | Line 61 | main(          /* compute illum distributions using rtrace */
61          int     nprocs = 1;
62          FILE    *fp;
63          int     rval;
64 <        register int    i;
64 >        int     i;
65                                  /* set global arguments */
66          gargv = argv;
67          progname = gargv[0];
68                                  /* set up rendering defaults */
69 <        dstrsrc = 0.25;
69 >        dstrsrc = 0.5;
70          directrelay = 3;
74        directvis = 0;
71          ambounce = 2;
72                                  /* get options from command line */
73          for (i = 1; i < argc; i++) {
# Line 152 | Line 148 | init(char *octnm, int np)              /* start rendering process(
148  
149   void
150   eputs(                          /* put string to stderr */
151 <        register char  *s
151 >        char  *s
152   )
153   {
154          static int  midline = 0;
# Line 177 | Line 173 | char  *s;
173  
174  
175   void
176 + quit(ec)                        /* make sure exit is called */
177 + int     ec;
178 + {
179 +        if (ray_pnprocs > 0)    /* close children if any */
180 +                ray_pclose(0);          
181 +        exit(ec);
182 + }
183 +
184 +
185 + void
186   filter(         /* process stream */
187 <        register FILE   *infp,
187 >        FILE    *infp,
188          char    *name
189   )
190   {
191          char    buf[512];
192          FILE    *pfp;
193 <        register int    c;
193 >        int     c;
194  
195          while ((c = getc(infp)) != EOF) {
196                  if (isspace(c))
# Line 216 | Line 222 | xoptions(                      /* process options in string s */
222          char    *nm
223   )
224   {
219        extern FILE     *freopen();
225          char    buf[64];
226          int     negax;
227          int     nerrs = 0;
228 <        register char   *cp;
228 >        char    *cp;
229  
230          if (strncmp(s, "#@mkillum", 9) || !isspace(s[9])) {
231                  fputs(s, stdout);               /* not for us */
# Line 298 | Line 303 | xoptions(                      /* process options in string s */
303                          }
304                          cp = sskip(cp);
305                          continue;
306 <                case 'd':                       /* sample density / BSDF data */
306 >                case 'd':                       /* sample density */
307                          if (*++cp != '=')
308                                  break;
304                        if (thisillum.sd != NULL) {
305                                free_BSDF(thisillum.sd);
306                                thisillum.sd = NULL;
307                        }
309                          if (!*++cp || isspace(*cp))
310                                  continue;
311 <                        if (isintd(++cp, " \t\n\r")) {
311 >                        if (isintd(cp, " \t\n\r")) {
312                                  thisillum.sampdens = atoi(cp);
313                          } else {
314 <                                atos(buf, sizeof(buf), cp);
315 <                                thisillum.sd = load_BSDF(buf);
315 <                                if (thisillum.sd == NULL)
316 <                                        break;
314 >                                error(WARNING, "direct BSDF input unsupported");
315 >                                goto opterr;
316                          }
317                          cp = sskip(cp);
318                          continue;
# Line 359 | Line 358 | xoptions(                      /* process options in string s */
358                          }
359                          doneheader = 0;
360                          continue;
362                case 'u':                       /* up direction */
363                        if (*++cp != '=')
364                                break;
365                        if (!*++cp || isspace(*cp)) {
366                                thisillum.udir = UDunknown;
367                                continue;
368                        }
369                        negax = 0;
370                        if (*cp == '+')
371                                cp++;
372                        else if (*cp == '-') {
373                                negax++;
374                                cp++;
375                        }
376                        switch (*cp++) {
377                        case 'x':
378                        case 'X':
379                                thisillum.udir = negax ? UDxneg : UDxpos;
380                                break;
381                        case 'y':
382                        case 'Y':
383                                thisillum.udir = negax ? UDyneg : UDypos;
384                                break;
385                        case 'z':
386                        case 'Z':
387                                thisillum.udir = negax ? UDxneg : UDxpos;
388                                break;
389                        default:
390                                thisillum.udir = UDunknown;
391                                break;
392                        }
393                        if (thisillum.udir == UDunknown || !isspace(*cp))
394                                break;
395                        continue;
361                  case '!':                       /* processed file! */
362                          sprintf(errmsg, "(%s): already processed!", nm);
363                          error(WARNING, errmsg);
# Line 435 | Line 400 | printopts(void)                        /* print out option default values *
400                  printf("l+\t\t\t\t# light type on\n");
401          else
402                  printf("l-\t\t\t\t# light type off\n");
403 <        printf("d=%d\t\t\t\t# density of points\n", thisillum.sampdens);
404 <        printf("s=%d\t\t\t\t# samples per point\n", thisillum.nsamps);
403 >        printf("d=%d\t\t\t\t# density of directions\n", thisillum.sampdens);
404 >        printf("s=%d\t\t\t\t# samples per direction\n", thisillum.nsamps);
405          printf("b=%f\t\t\t# minimum average brightness\n", thisillum.minbrt);
441        switch (thisillum.udir) {
442        case UDzneg:
443                fputs("u=-Z\t\t\t\t# up is negative Z\n", stdout);
444                break;
445        case UDyneg:
446                fputs("u=-Y\t\t\t\t# up is negative Y\n", stdout);
447                break;
448        case UDxneg:
449                fputs("u=-X\t\t\t\t# up is negative X\n", stdout);
450                break;
451        case UDxpos:
452                fputs("u=+X\t\t\t\t# up is positive X\n", stdout);
453                break;
454        case UDypos:
455                fputs("u=+Y\t\t\t\t# up is positive Y\n", stdout);
456                break;
457        case UDzpos:
458                fputs("u=+Z\t\t\t\t# up is positive Z\n", stdout);
459                break;
460        case UDunknown:
461                break;
462        }
406   }
407  
408  
409   void
410   printhead(                      /* print out header */
411 <        register int  ac,
412 <        register char  **av
411 >        int  ac,
412 >        char  **av
413   )
414   {
415          putchar('#');

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines