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

Comparing ray/src/rt/rc2.c (file contents):
Revision 2.10 by greg, Fri May 30 16:05:52 2014 UTC vs.
Revision 2.17 by schorsch, Sun Mar 6 01:13:18 2016 UTC

# Line 6 | Line 6 | static const char RCSid[] = "$Id$";
6   * File i/o and recovery
7   */
8  
9 + #include <ctype.h>
10 + #include "platform.h"
11   #include "rcontrib.h"
12   #include "resolu.h"
11 #include <ctype.h>
13  
14   /* Close output stream and free record */
15   static void
# Line 139 | Line 140 | getostream(const char *ospec, const char *mname, int b
140          char                    oname[1024];
141          LUENT                   *lep;
142          STREAMOUT               *sop;
143 +        char                    *cp;
144          
145          if (ospec == NULL) {                    /* use stdout? */
146                  if (!noopen & !using_stdout) {
147                          if (outfmt != 'a')
148                                  SET_FILE_BINARY(stdout);
149                          if (header) {
150 <                                sprintf(info, "NCOLS=%d\nNCOMP=3\n",
151 <                                                stdos.reclen);
150 >                                cp = info;
151 >                                if (yres > 0) {
152 >                                        sprintf(cp, "NROWS=%d\n", yres *
153 >                                                        (xres + !xres) );
154 >                                        while (*cp) ++cp;
155 >                                }
156 >                                if ((xres <= 0) | (stdos.reclen > 1))
157 >                                        sprintf(cp, "NCOLS=%d\n", stdos.reclen);
158                                  printheader(stdout, info);
159                          }
160 <                        printresolu(stdout, xres, yres);
160 >                        if (stdos.reclen == 1)
161 >                                printresolu(stdout, xres, yres);
162                          if (waitflush > 0)
163                                  fflush(stdout);
164                          stdos.xr = xres; stdos.yr = yres;
# Line 198 | Line 207 | getostream(const char *ospec, const char *mname, int b
207   #ifdef getc_unlocked
208                  flockfile(sop->ofp);            /* avoid lock/unlock overhead */
209   #endif
210 +                if (accumulate > 0) {           /* global resolution */
211 +                        sop->xr = xres; sop->yr = yres;
212 +                }
213                  if (header) {
214 <                        char    *cp = info;
214 >                        cp = info;
215                          if (ofl & OF_MODIFIER || sop->reclen == 1) {
216                                  sprintf(cp, "MODIFIER=%s\n", mname);
217                                  while (*cp) ++cp;
# Line 208 | Line 220 | getostream(const char *ospec, const char *mname, int b
220                                  sprintf(cp, "BIN=%d\n", bn);
221                                  while (*cp) ++cp;
222                          }
223 <                        sprintf(cp, "NCOLS=%d\nNCOMP=3\n", sop->reclen);
223 >                        if (sop->yr > 0) {
224 >                                sprintf(cp, "NROWS=%d\n", sop->yr *
225 >                                                (sop->xr + !sop->xr) );
226 >                                while (*cp) ++cp;
227 >                        }
228 >                        if ((sop->xr <= 0) | (sop->reclen > 1))
229 >                                sprintf(cp, "NCOLS=%d\n", sop->reclen);
230                          printheader(sop->ofp, info);
231                  }
232 <                if (accumulate > 0) {           /* global resolution */
233 <                        sop->xr = xres; sop->yr = yres;
216 <                }
217 <                printresolu(sop->ofp, sop->xr, sop->yr);
232 >                if (sop->reclen == 1)
233 >                        printresolu(sop->ofp, sop->xr, sop->yr);
234                  if (waitflush > 0)
235                          fflush(sop->ofp);
236          }
# Line 467 | Line 483 | reload_output()
483                                                          oname);
484                                          error(USER, errmsg);
485                                  }
486 <                                if ((sout.xr > 0) & (sout.yr > 0) &&
486 >                                if ((sout.reclen == 1) & (sout.xr > 0) & (sout.yr > 0) &&
487                                                  (!fscnresolu(&xr, &yr, sout.ofp) ||
488                                                          (xr != sout.xr) |
489                                                          (yr != sout.yr))) {
# Line 577 | Line 593 | recover_output()
593                          } else {
594                                  sout.reclen = 0;
595                                  sout.outpipe = 0;
596 +                                sout.xr = xres;
597 +                                sout.yr = yres;
598                                  sout.ofp = NULL;
599                          }
600                          if (sout.ofp != NULL) { /* already open? */
# Line 617 | Line 635 | recover_output()
635                                                  oname);
636                                  error(USER, errmsg);
637                          }
638 <                        sout.xr = xres; sout.yr = yres;
621 <                        if ((sout.xr > 0) & (sout.yr > 0) &&
638 >                        if ((sout.reclen == 1) & (sout.xr > 0) & (sout.yr > 0) &&
639                                          (!fscnresolu(&xr, &yr, sout.ofp) ||
640                                                  (xr != sout.xr) |
641                                                  (yr != sout.yr))) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines