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

Comparing ray/src/rt/RpictSimulManager.cpp (file contents):
Revision 2.5 by greg, Wed Aug 21 23:32:24 2024 UTC vs.
Revision 2.7 by greg, Thu Aug 22 00:44:02 2024 UTC

# Line 732 | Line 732 | RpictSimulManager::NewOutput(FILE *pdfp[2], const char
732          default:;
733          }
734          fputc('\n', pdfp[0]);                   // flush picture header + resolution
735        fprtresolu(GetWidth(), GetHeight(), pdfp[0]);
735          if (fflush(pdfp[0]) == EOF) {
736                  sprintf(errmsg, "cannot write header to picture '%s'", pfname);
737                  error(SYSTEM, errmsg);
# Line 740 | Line 739 | RpictSimulManager::NewOutput(FILE *pdfp[2], const char
739                  pdfp[0] = NULL;
740                  return RDTnone;
741          }
742 <        if (dfname) {
742 >        if (dfname) {                           // open depth output
743                  if (dfname[0] == '!')
744                          pdfp[1] = popen(dfname+1, "w");
745                  else
# Line 761 | Line 760 | RpictSimulManager::NewOutput(FILE *pdfp[2], const char
760                  fputs(DEPTHSTR, pdfp[1]); fputs(dunit, pdfp[1]); fputc('\n', pdfp[1]);
761                  fputformat(DEPTH16FMT, pdfp[1]);
762                  fputc('\n', pdfp[1]);           // end-of-info
764                fprtresolu(GetWidth(), GetHeight(), pdfp[1]);
763                  if (fflush(pdfp[1]) == EOF) {
764                          sprintf(errmsg, "cannot write header to '%s'", dfname);
765                          error(SYSTEM, errmsg);
# Line 788 | Line 786 | RpictSimulManager::RenderFrame(const char *pfname, Ren
786          dt = NewOutput(pdfp, pfname, dt, dfname);
787          if (dt == RDTnone)
788                  return RDTnone;
789 +                                                // add resolution string(s)
790 +        fprtresolu(GetWidth(), GetHeight(), pdfp[0]);
791 +        if (RDTdepthT(dt) == RDTdshort)
792 +                fprtresolu(GetWidth(), GetHeight(), pdfp[1]);
793  
794          const int       bheight = (psample > 1) ? int(2*psample+.99) : 4;
795          const int       vstep =  bheight >> (psample > 1);
# Line 1003 | Line 1005 | RpictSimulManager::ReopenOutput(FILE *pdfp[2], const c
1005          SET_FILE_BINARY(pdfp[1]);
1006          int     n, len = strlen(HDRSTR);
1007          char    buf[32];                // sniff for 16-bit header
1008 <        if (read(fileno(pdfp[1]), buf, len+1) < len+1) {
1008 >        if (getbinary(buf, 1, len+1, pdfp[1]) < len+1) {
1009                  sprintf(errmsg, "empty depth file '%s'", dfname);
1010                  error(SYSTEM, errmsg);
1011                  fclose(pdfp[0]); fclose(pdfp[1]);
# Line 1013 | Line 1015 | RpictSimulManager::ReopenOutput(FILE *pdfp[2], const c
1015          for (n = 0; n < len; n++)
1016                  if (buf[n] != HDRSTR[n])
1017                          break;          // not a Radiance header
1018 <        lseek(fileno(pdfp[1]), 0, SEEK_SET);
1018 >        rewind(pdfp[1]);
1019          if ((n < len) | !isprint(buf[len]))
1020                  return RDTnewDT(dt, RDTdfloat);
1021  
# Line 1130 | Line 1132 | RpictSimulManager::ResumeFrame(const char *pfname, con
1132                  error(WARNING, errmsg);
1133          }
1134          long    toSkip = 0;
1135 <        switch (RDTdepthT(dt)) {                        // append depth file, too?
1135 >        switch (RDTdepthT(dt)) {                // append depth file, too?
1136          case RDTdfloat:
1137                  toSkip = sizeof(float)*GetWidth()*doneScans;
1138                  break;
# Line 1145 | Line 1147 | RpictSimulManager::ResumeFrame(const char *pfname, con
1147                  toSkip = 2L*GetWidth()*doneScans;
1148                  break;
1149          default:;
1150 <        }
1151 <        if (toSkip && fseek(pdfp[1], toSkip, SEEK_CUR) < 0) {
1150 >        }                                       // fseek() needed for output
1151 >        if (pdfp[1] && fseek(pdfp[1], toSkip, SEEK_CUR) < 0) {
1152                  sprintf(errmsg, "cannot seek on depth file '%s'", dfname);
1153                  error(SYSTEM, errmsg);
1154                  fclose(pdfp[0]); fclose(pdfp[1]);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines