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

Comparing ray/src/rt/rcontrib.c (file contents):
Revision 2.21 by greg, Sat Jul 19 18:39:35 2014 UTC vs.
Revision 2.25 by greg, Wed May 20 13:16:20 2015 UTC

# Line 8 | Line 8 | static const char RCSid[] = "$Id$";
8  
9   #include "copyright.h"
10  
11 #include <ctype.h>
11   #include "rcontrib.h"
12   #include "otypes.h"
13   #include "source.h"
# Line 215 | Line 214 | rcinit()
214  
215   /************************** MAIN CALCULATION PROCESS ***********************/
216  
218 /* Set parameters for current bin evaluation */
219 static void
220 set_eparams(char *prms)
221 {
222        char    vname[64];
223        double  value;
224        char    *cps, *cpd;
225                                        /* assign each variable */
226        for (cps = prms; *cps; cps++) {
227                if (isspace(*cps))
228                        continue;
229                if (!isalpha(*cps))
230                        goto bad_params;
231                cpd = vname;
232                while (*cps && (*cps != '=') & !isspace(*cps)) {
233                        if (!isid(*cps))
234                                goto bad_params;
235                        *cpd++ = *cps++;
236                }
237                if (cpd == vname)
238                        goto bad_params;
239                *cpd = '\0';
240                while (isspace(*cps)) cps++;
241                if (*cps++ != '=')
242                        goto bad_params;
243                value = atof(cps);
244                if ((cps = fskip(cps)) == NULL)
245                        goto bad_params;
246                while (isspace(*cps)) cps++;
247                cps += (*cps == ',') | (*cps == ';');
248                varset(vname, '=', value);
249        }
250        return;
251 bad_params:
252        sprintf(errmsg, "bad parameter list '%s'", prms);
253        error(USER, errmsg);
254 }
255
217   /* Our trace call to sum contributions */
218   static void
219   trace_contrib(RAY *r)
220   {
260        static char     *last_params = NULL;
221          MODCONT *mp;
222          double  bval;
223          int     bn;
# Line 275 | Line 235 | trace_contrib(RAY *r)
235                  return;
236  
237          worldfunc(RCCONTEXT, r);                /* else set context */
238 <        if ((mp->params != NULL) & (mp->params != last_params) &&
279 <                        (last_params == NULL || strcmp(mp->params, last_params)))
280 <                set_eparams(last_params = (char *)mp->params);
238 >        set_eparams((char *)mp->params);
239          if ((bval = evalue(mp->binv)) <= -.5)   /* and get bin number */
240                  return;                         /* silently ignore negatives */
241          if ((bn = (int)(bval + .5)) >= mp->nbins) {
242 <                error(WARNING, "bad bin number (ignored)");
242 >                sprintf(errmsg, "bad bin number (%d ignored)", bn);
243 >                error(WARNING, errmsg);
244                  return;
245          }
246          raycontrib(contr, r, PRIMARY);          /* compute coefficient */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines