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

Comparing ray/src/rt/p_data.c (file contents):
Revision 2.1 by greg, Tue Nov 12 17:09:34 1991 UTC vs.
Revision 2.2 by greg, Mon Nov 25 09:50:53 1991 UTC

# Line 14 | Line 14 | static char SCCSid[] = "$SunId$ LBL";
14  
15   #include  "data.h"
16  
17 + #include  "func.h"
18 +
19   /*
20   *      A stored pattern can either be brightness or
21   *  color data.  Brightness data is specified as:
# Line 52 | Line 54 | p_bdata(m, r)                  /* interpolate brightness data */
54   register OBJREC  *m;
55   RAY  *r;
56   {
55        extern double  varvalue(), funvalue(), datavalue();
56        extern int  errno;
57        int  nv;
57          double  bval;
58          double  pt[MAXDIM];
59          DATARRAY  *dp;
60 <        register char  **sa;
60 >        register MFUNC  *mf;
61 >        register int  i;
62  
63        setfunc(m, r);
64
65        sa = m->oargs.sarg;
66
63          if (m->oargs.nsargs < 4)
64                  objerror(m, USER, "bad # arguments");
65 <        funcfile(sa[2]);
65 >        dp = getdata(m->oargs.sarg[1]);
66 >        i = (1 << dp->nd) - 1;
67 >        mf = getfunc(m, 2, i<<3, 0);
68 >        setfunc(m, r);
69          errno = 0;
70 <        for (nv = 0; nv+3 < m->oargs.nsargs &&
71 <                        sa[nv+3][0] != '-'; nv++) {
72 <                if (nv >= MAXDIM)
73 <                        goto dimerr;
75 <                pt[nv] = varvalue(sa[nv+3]);
70 >        for (i = dp->nd; i-- > 0; ) {
71 >                pt[i] = evalue(mf->ep[i]);
72 >                if (errno)
73 >                        goto computerr;
74          }
77        if (errno)
78                goto computerr;
79        dp = getdata(sa[1]);
80        if (dp->nd != nv)
81                goto dimerr;
75          bval = datavalue(dp, pt);
76          errno = 0;
77 <        bval = funvalue(sa[0], 1, &bval);
77 >        bval = funvalue(m->oargs.sarg[0], 1, &bval);
78          if (errno)
79                  goto computerr;
80          scalecolor(r->pcol, bval);
81          return;
89
90 dimerr:
91        objerror(m, USER, "dimension error");
92
82   computerr:
83          objerror(m, WARNING, "compute error");
84          return;
# Line 100 | Line 89 | p_cdata(m, r)                  /* interpolate color data */
89   register OBJREC  *m;
90   RAY  *r;
91   {
103        extern double  varvalue(), funvalue(), datavalue();
104        extern int  errno;
105        int  i, nv;
92          double  col[3];
93          COLOR  cval;
94          double  pt[MAXDIM];
95 +        int  nv;
96          DATARRAY  *dp;
97 <        register char  **sa;
97 >        register MFUNC  *mf;
98 >        register int  i;
99  
112        setfunc(m, r);
113
114        sa = m->oargs.sarg;
115
100          if (m->oargs.nsargs < 8)
101                  objerror(m, USER, "bad # arguments");
102 <        funcfile(sa[6]);
103 <        for (nv = 0; nv+7 < m->oargs.nsargs &&
104 <                        sa[nv+7][0] != '-'; nv++) {
105 <                if (nv >= MAXDIM)
106 <                        goto dimerr;
107 <                errno = 0;
108 <                pt[nv] = varvalue(sa[nv+7]);
102 >        dp = getdata(m->oargs.sarg[3]);
103 >        i = (1 << (nv = dp->nd)) - 1;
104 >        mf = getfunc(m, 6, i<<7, 0);
105 >        setfunc(m, r);
106 >        errno = 0;
107 >        for (i = 0; i < nv; i++) {
108 >                pt[i] = evalue(mf->ep[i]);
109                  if (errno)
110                          goto computerr;
111          }
112 <        for (i = 0; i < 3; i++) {
113 <                dp = getdata(sa[i+3]);
112 >        col[0] = datavalue(dp, pt);
113 >        for (i = 1; i < 3; i++) {
114 >                dp = getdata(m->oargs.sarg[i+3]);
115                  if (dp->nd != nv)
116 <                        goto dimerr;
116 >                        objerror(m, USER, "dimension error");
117                  col[i] = datavalue(dp, pt);
118          }
119          errno = 0;
120 <        setcolor(cval,  funvalue(sa[0], 3, col),
121 <                        funvalue(sa[1], 3, col),
122 <                        funvalue(sa[2], 3, col));
120 >        setcolor(cval,  funvalue(m->oargs.sarg[0], 3, col),
121 >                        funvalue(m->oargs.sarg[1], 3, col),
122 >                        funvalue(m->oargs.sarg[2], 3, col));
123          if (errno)
124                  goto computerr;
125          multcolor(r->pcol, cval);
126          return;
142
143 dimerr:
144        objerror(m, USER, "dimension error");
145
127   computerr:
128          objerror(m, WARNING, "compute error");
129          return;
# Line 153 | Line 134 | p_pdata(m, r)                  /* interpolate picture data */
134   register OBJREC  *m;
135   RAY  *r;
136   {
156        extern double  varvalue(), funvalue(), datavalue();
157        extern int  errno;
158        int  i;
137          double  col[3];
138          COLOR  cval;
139          double  pt[2];
140          DATARRAY  *dp;
141 <        register char  **sa;
141 >        register MFUNC  *mf;
142 >        register int  i;
143  
165        setfunc(m, r);
166
167        sa = m->oargs.sarg;
168
144          if (m->oargs.nsargs < 7)
145                  objerror(m, USER, "bad # arguments");
146 <        funcfile(sa[4]);
146 >        mf = getfunc(m, 4, 0x3<<5, 0);
147 >        setfunc(m, r);
148          errno = 0;
149 <        pt[1] = varvalue(sa[5]);        /* y major ordering */
150 <        pt[0] = varvalue(sa[6]);
149 >        pt[1] = evalue(mf->ep[0]);      /* y major ordering */
150 >        pt[0] = evalue(mf->ep[1]);
151          if (errno)
152                  goto computerr;
153 <        dp = getpict(sa[3]);
153 >        dp = getpict(m->oargs.sarg[3]);
154          for (i = 0; i < 3; i++)
155                  col[i] = datavalue(dp+i, pt);
156          errno = 0;
157 <        setcolor(cval,  funvalue(sa[0], 3, col),
158 <                        funvalue(sa[1], 3, col),
159 <                        funvalue(sa[2], 3, col));
157 >        setcolor(cval,  funvalue(m->oargs.sarg[0], 3, col),
158 >                        funvalue(m->oargs.sarg[1], 3, col),
159 >                        funvalue(m->oargs.sarg[2], 3, col));
160          if (errno)
161                  goto computerr;
162          multcolor(r->pcol, cval);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines