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

Comparing ray/src/rt/mx_func.c (file contents):
Revision 2.1 by greg, Tue Nov 12 17:08:33 1991 UTC vs.
Revision 2.4 by gwlarson, Mon Aug 10 18:35:14 1998 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1988 Regents of the University of California */
1 > /* Copyright (c) 1998 Silicon Graphics, Inc. */
2  
3   #ifndef lint
4 < static char SCCSid[] = "$SunId$ LBL";
4 > static char SCCSid[] = "$SunId$ SGI";
5   #endif
6  
7   /*
# Line 12 | Line 12 | static char SCCSid[] = "$SunId$ LBL";
12  
13   #include  "ray.h"
14  
15 + #include  "func.h"
16 +
17   /*
18   *      A mixture function is specified:
19   *
# Line 31 | Line 33 | mx_func(m, r)                  /* compute mixture function */
33   register OBJREC  *m;
34   RAY  *r;
35   {
36 <        extern double  varvalue();
35 <        extern int  errno;
36 >        OBJECT  obj;
37          register int  i;
38          double  coef;
39          OBJECT  mod[2];
40 <        register char  **sa;
40 >        register MFUNC  *mf;
41  
41        setfunc(m, r);
42
43        sa = m->oargs.sarg;
44
42          if (m->oargs.nsargs < 4)
43                  objerror(m, USER, "bad # arguments");
44 +        obj = objndx(m);
45          for (i = 0; i < 2; i++)
46 <                if (!strcmp(sa[i], VOIDID))
46 >                if (!strcmp(m->oargs.sarg[i], VOIDID))
47                          mod[i] = OVOID;
48 <                else if ((mod[i] = modifier(sa[i])) == OVOID) {
49 <                        sprintf(errmsg, "undefined modifier \"%s\"", sa[i]);
48 >                else if ((mod[i] = lastmod(obj, m->oargs.sarg[i])) == OVOID) {
49 >                        sprintf(errmsg, "undefined modifier \"%s\"",
50 >                                        m->oargs.sarg[i]);
51                          objerror(m, USER, errmsg);
52                  }
53 <        funcfile(sa[3]);
53 >        mf = getfunc(m, 3, 0x4, 0);
54 >        setfunc(m, r);
55          errno = 0;
56 <        coef = varvalue(sa[2]);
56 >        coef = evalue(mf->ep[0]);
57          if (errno) {
58                  objerror(m, WARNING, "compute error");
59 <                return;
59 >                return(0);
60          }
61 <        raymixture(r, mod[0], mod[1], coef);
61 >        if (raymixture(r, mod[0], mod[1], coef)) {
62 >                if (m->omod != OVOID)
63 >                        objerror(m, USER, "inappropriate modifier");
64 >                return(1);
65 >        }
66 >        return(0);
67   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines