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

Comparing ray/src/rt/rv2.c (file contents):
Revision 1.24 by greg, Thu Jul 18 16:37:59 1991 UTC vs.
Revision 1.30 by greg, Mon Oct 21 13:30:43 1991 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1987 Regents of the University of California */
1 > /* Copyright (c) 1991 Regents of the University of California */
2  
3   #ifndef lint
4   static char SCCSid[] = "$SunId$ LBL";
# Line 22 | Line 22 | static char SCCSid[] = "$SunId$ LBL";
22  
23   #define  CTRL(c)        ('c'-'@')
24  
25 + extern char  VersionID[];
26   extern char  *progname;
27 + extern char  *octname;
28  
29  
30   getframe(s)                             /* get a new frame */
# Line 306 | Line 308 | char  *str, *dsc;
308   int  typ;
309   register union {int i; double d; COLOR C;}  *ptr;
310   {
311 +        extern char  *index();
312          int  i0;
313          double  d0, d1, d2;
314          char  buf[48];
# Line 339 | Line 342 | register union {int i; double d; COLOR C;}  *ptr;
342                          sprintf(buf, " (%c): ", ptr->i ? 'y' : 'n');
343                          (*dev->comout)(buf);
344                          (*dev->comin)(buf, NULL);
345 +                        if (buf[0] == '\0' ||
346 +                                        index("yY+1tTnN-0fF", buf[0]) == NULL)
347 +                                break;
348                  }
349 <                ptr->i = tolower(buf[0]) == 'y';
349 >                ptr->i = index("yY+1tT", buf[0]) != NULL;
350                  break;
351          case 'C':                       /* color */
352                  if (sscanf(str, "%lf %lf %lf", &d0, &d1, &d2) != 3) {
# Line 378 | Line 384 | register char  *s;
384          extern int  ambssamp;
385          extern int  ambounce;
386          extern int  directinvis;
387 +        extern double  srcsizerat;
388          extern int  do_irrad;
389          char  buf[128];
390          
# Line 415 | Line 422 | register char  *s;
422                          getparam(s+2, "direct invisibility",
423                                          'b', &directinvis);
424                          break;
425 +                case 's':                       /* sampling */
426 +                        getparam(s+2, "direct sampling", 'r', &srcsizerat);
427 +                        break;
428                  default:
429                          goto badparam;
430                  }
# Line 468 | Line 478 | register char  *s;
478                  break;
479          default:;
480   badparam:
481 +                *sskip(s) = '\0';
482                  sprintf(errmsg, "%s: unknown variable", s);
483                  error(COMMAND, errmsg);
484                  break;
# Line 559 | Line 570 | char  *s;
570                                                  /* write header */
571          fputs(progname, fp);
572          fprintview(&ourview, fp);
573 <        putc('\n', fp);
573 >        if (octname != NULL)
574 >                fprintf(fp, " %s\n", octname);
575 >        else
576 >                putc('\n', fp);
577 >        fprintf(fp, "SOFTWARE= %s\n", VersionID);
578          if (exposure != 1.0)
579                  fputexpos(exposure, fp);
580          if (dev->pixaspect != 1.0)
# Line 569 | Line 584 | char  *s;
584          fputresolu(YMAJOR|YDECR, hresolu, vresolu, fp);
585  
586          scanline = (COLR *)malloc(hresolu*sizeof(COLR));
587 <        if (scanline == NULL)
588 <                error(SYSTEM, "out of memory in writepict");
587 >        if (scanline == NULL) {
588 >                error(COMMAND, "not enough memory!");
589 >                fclose(fp);
590 >                unlink(fname);
591 >                return;
592 >        }
593          for (y = vresolu-1; y >= 0; y--) {
594                  getpictcolrs(y, scanline, &ptrunk, hresolu, vresolu);
595                  if (fwritecolrs(scanline, hresolu, fp) < 0)
596                          break;
597          }
598 +        free((char *)scanline);
599          if (fclose(fp) < 0)
600                  error(COMMAND, "write error");
581        free((char *)scanline);
601   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines