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.2 by greg, Mon Nov 25 09:50:56 1991 UTC vs.
Revision 2.9 by greg, Tue Jul 8 18:25:00 2014 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1991 Regents of the University of California */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ LBL";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*
5   *  mx_func.c - routine for mixture functions.
9 *
10 *     11/2/88
6   */
7  
8 < #include  "ray.h"
8 > #include "copyright.h"
9  
10 + #include  "ray.h"
11   #include  "func.h"
12 + #include  "rtotypes.h"
13  
14   /*
15   *      A mixture function is specified:
# Line 29 | Line 26 | static char SCCSid[] = "$SunId$ LBL";
26   */
27  
28  
29 < mx_func(m, r)                   /* compute mixture function */
30 < register OBJREC  *m;
31 < RAY  *r;
29 > int
30 > mx_func(                        /* compute mixture function */
31 >        OBJREC  *m,
32 >        RAY  *r
33 > )
34   {
35 <        register int  i;
35 >        OBJECT  obj;
36 >        int  i;
37          double  coef;
38          OBJECT  mod[2];
39 <        register MFUNC  *mf;
39 >        MFUNC  *mf;
40  
41          if (m->oargs.nsargs < 4)
42                  objerror(m, USER, "bad # arguments");
43 +        obj = objndx(m);
44          for (i = 0; i < 2; i++)
45                  if (!strcmp(m->oargs.sarg[i], VOIDID))
46                          mod[i] = OVOID;
47 <                else if ((mod[i] = modifier(m->oargs.sarg[i])) == OVOID) {
47 >                else if ((mod[i] = lastmod(obj, m->oargs.sarg[i])) == OVOID) {
48                          sprintf(errmsg, "undefined modifier \"%s\"",
49                                          m->oargs.sarg[i]);
50                          objerror(m, USER, errmsg);
# Line 52 | Line 53 | RAY  *r;
53          setfunc(m, r);
54          errno = 0;
55          coef = evalue(mf->ep[0]);
56 <        if (errno) {
56 >        if (errno == EDOM || errno == ERANGE) {
57                  objerror(m, WARNING, "compute error");
58 <                return;
58 >                return(0);
59          }
60 <        raymixture(r, mod[0], mod[1], coef);
60 >        if (raymixture(r, mod[0], mod[1], coef)) {
61 >                if (m->omod != OVOID)
62 >                        objerror(m, USER, "inappropriate modifier");
63 >                return(1);
64 >        }
65 >        return(0);
66   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines