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

Comparing ray/src/rt/RcontribSimulManager.cpp (file contents):
Revision 2.6 by greg, Wed Nov 6 18:28:52 2024 UTC vs.
Revision 2.7 by greg, Wed Nov 6 19:45:59 2024 UTC

# Line 24 | Line 24 | extern const char      HDRSTR[];
24   extern const char       BIGEND[];
25   extern const char       FMTSTR[];
26  
27 int     contrib = 0;                    // computing contributions?
28
29 int     xres = 0;                       // horizontal (scan) size
30 int     yres = 0;                       // vertical resolution
31
27   // new/exclusive, overwrite if exists, or recover data
28   int     RSDOflags[] = {RDSwrite|RDSexcl|RDSextend, RDSwrite|RDSextend,
29                                  RDSread|RDSwrite};
# Line 163 | Line 158 | RcontribSimulManager::RctCall(RAY *r, void *cd)
158          }
159          SCOLOR          contr;
160          raycontrib(contr, r, PRIMARY);          // compute coefficient
161 <        if (contrib)
161 >        if (rcp->HasFlag(RCcontrib))
162                  smultscolor(contr, r->rcol);    // -> value contribution
163          for (int i = 0; i < NCSAMP; i++)
164                  *dvp++ += contr[i];             // accumulate color/spectrum
# Line 198 | Line 193 | RcontribSimulManager::AddModifier(const char *modn, co
193                  return false;
194          }
195          if (!nChan) {                           // initial call?
196 +                if ((xres < 0) | (yres <= 0)) {
197 +                        error(INTERNAL, "xres, yres must be set before first modifier");
198 +                        return false;
199 +                }
200                  if (!SetDataFormat(dtyp))
201                          return false;
202                  nChan = NCSAMP;
# Line 392 | Line 391 | RcontribOutput::NewHeader(const RcontribSimulManager *
391          strcpy(hdr+begData, ROWZEROSTR);
392          rowCountPos = begData+LNROWSTR;
393          begData += sizeof(ROWZEROSTR)-1;
394 <        if (!xres | (rowBytes > esiz)) {
394 >        if (!rcp->xres | (rowBytes > esiz)) {
395                  sprintf(hdr+begData, "NCOLS=%d\n", int(rowBytes/esiz));
396                  begData += strlen(hdr+begData);
397          }
# Line 430 | Line 429 | RcontribOutput::NewHeader(const RcontribSimulManager *
429                          hdr[begData++] = ' ';
430          hdr[begData++] = '\n';          // EOL for data format
431          hdr[begData++] = '\n';          // end of nominal header
432 <        if ((xres > 0) & (rowBytes == esiz)) {  // tack on resolution string?
433 <                sprintf(hdr+begData, PIXSTDFMT, yres, xres);
432 >        if ((rcp->xres > 0) & (rowBytes == esiz)) {     // tack on resolution string?
433 >                sprintf(hdr+begData, PIXSTDFMT, rcp->yres, rcp->xres);
434                  begData += strlen(hdr+begData);
435          }
436          return rData->ReleaseMemory(hdr, RDSwrite);
# Line 485 | Line 484 | RcontribOutput::CheckHeader(const RcontribSimulManager
484          }
485                                                  // check #columns
486          if (((cp = findArgs(hdr, "NCOLS=", begData)) && atoi(cp)*esiz != rowBytes) ||
487 <                        !xres | (rowBytes > esiz)) {
487 >                        !rcp->xres | (rowBytes > esiz)) {
488                  sprintf(errmsg, "expected NCOLS=%d in '%s'",
489                                  int(rowBytes/esiz), GetName());
490                  error(USER, errmsg);
# Line 500 | Line 499 | RcontribOutput::CheckHeader(const RcontribSimulManager
499          rowCountPos = cp - hdr;
500          int     rlast = atoi(cp);
501          begData++;                              // advance past closing EOL
502 <        if ((xres > 0) & (rowBytes == esiz)) {  // check/skip resolution string?
502 >        if ((rcp->xres > 0) & (rowBytes == esiz)) {     // check/skip resolution string?
503                  char    rbuf[64];
504 <                sprintf(rbuf, PIXSTDFMT, yres, xres);
504 >                sprintf(rbuf, PIXSTDFMT, rcp->yres, rcp->xres);
505                  int     rlen = strlen(rbuf);
506                  if (strncmp(rbuf, hdr+begData, rlen)) {
507                          sprintf(errmsg, "bad resolution string in '%s'", GetName());

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines