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.3 by greg, Mon Jun 11 05:07:55 2012 UTC vs.
Revision 2.12 by greg, Wed Jul 9 21:09:28 2014 UTC

# Line 8 | Line 8 | static const char RCSid[] = "$Id$";
8  
9   #include "rcontrib.h"
10   #include "resolu.h"
11 < #include "platform.h"
11 > #include <ctype.h>
12  
13   /* Close output stream and free record */
14   static void
# Line 112 | Line 112 | printheader(FILE *fout, const char *info)
112          printargs(gargc-1, gargv, fout);        /* add our command */
113          fprintf(fout, "SOFTWARE= %s\n", VersionID);
114          fputnow(fout);
115 +        fputs("NCOMP=3\n", fout);               /* always RGB */
116          if (info != NULL)                       /* add extra info if given */
117                  fputs(info, fout);
118          fputformat(formstr(outfmt), fout);
# Line 132 | Line 133 | printresolu(FILE *fout, int xr, int yr)
133   STREAMOUT *
134   getostream(const char *ospec, const char *mname, int bn, int noopen)
135   {
135        /* static const DCOLOR  nocontrib = BLKCOLOR; */
136          static STREAMOUT        stdos;
137 +        char                    info[1024];
138          int                     ofl;
139          char                    oname[1024];
140          LUENT                   *lep;
141          STREAMOUT               *sop;
142 +        char                    *cp;
143          
144          if (ospec == NULL) {                    /* use stdout? */
145                  if (!noopen & !using_stdout) {
146                          if (outfmt != 'a')
147                                  SET_FILE_BINARY(stdout);
148 <                        if (header)
149 <                                printheader(stdout, NULL);
148 >                        if (header) {
149 >                                cp = info;
150 >                                if (yres > 0) {
151 >                                        sprintf(cp, "NROWS=%d\n", yres *
152 >                                                        (xres + !xres) );
153 >                                        while (*cp) ++cp;
154 >                                }
155 >                                sprintf(cp, "NCOLS=%d\n", stdos.reclen);
156 >                                printheader(stdout, info);
157 >                        }
158                          printresolu(stdout, xres, yres);
159                          if (waitflush > 0)
160                                  fflush(stdout);
# Line 183 | Line 193 | getostream(const char *ospec, const char *mname, int b
193                  }
194          }
195          if (!noopen && sop->ofp == NULL) {      /* open output stream */
186                long            i;
196                  if (oname[0] == '!')            /* output to command */
197                          sop->ofp = popen(oname+1, "w");
198                  else                            /* else open file */
# Line 195 | Line 204 | getostream(const char *ospec, const char *mname, int b
204   #ifdef getc_unlocked
205                  flockfile(sop->ofp);            /* avoid lock/unlock overhead */
206   #endif
207 +                if (accumulate > 0) {           /* global resolution */
208 +                        sop->xr = xres; sop->yr = yres;
209 +                }
210                  if (header) {
211 <                        char    info[512];
200 <                        char    *cp = info;
211 >                        cp = info;
212                          if (ofl & OF_MODIFIER || sop->reclen == 1) {
213                                  sprintf(cp, "MODIFIER=%s\n", mname);
214                                  while (*cp) ++cp;
# Line 206 | Line 217 | getostream(const char *ospec, const char *mname, int b
217                                  sprintf(cp, "BIN=%d\n", bn);
218                                  while (*cp) ++cp;
219                          }
220 <                        *cp = '\0';
220 >                        if (sop->yr > 0) {
221 >                                sprintf(cp, "NROWS=%d\n", sop->yr *
222 >                                                (sop->xr + !sop->xr) );
223 >                                while (*cp) ++cp;
224 >                        }
225 >                        sprintf(cp, "NCOLS=%d\nNCOMP=3\n", sop->reclen);
226                          printheader(sop->ofp, info);
227                  }
212                if (accumulate > 0) {           /* global resolution */
213                        sop->xr = xres; sop->yr = yres;
214                }
228                  printresolu(sop->ofp, sop->xr, sop->yr);
216 #if 0
217                                                /* play catch-up */
218                for (i = accumulate > 0 ? lastdone/accumulate : 0; i--; ) {
219                        int     j = sop->reclen;
220                        if (j <= 0) j = 1;
221                        while (j--)
222                                put_contrib(nocontrib, sop->ofp);
223                        if (outfmt == 'a')
224                                putc('\n', sop->ofp);
225                }
226 #endif
229                  if (waitflush > 0)
230                          fflush(sop->ofp);
231          }
# Line 364 | Line 366 | void
366   end_record()
367   {
368          --waitflush;
369 <        lu_doall(&ofiletab, puteol, NULL);
369 >        lu_doall(&ofiletab, &puteol, NULL);
370          if (using_stdout & (outfmt == 'a'))
371                  putc('\n', stdout);
372          if (!waitflush) {
# Line 514 | Line 516 | reload_output()
516                          *(STREAMOUT *)oent->data = sout;
517                  }
518          }
519 <        lu_doall(&ofiletab, myclose, NULL);     /* close all files */
519 >        lu_doall(&ofiletab, &myclose, NULL);    /* close all files */
520   }
521  
522  
# Line 670 | Line 672 | recover_output()
672          }
673                                                  /* seek on all files */
674          nvals = lastout * outvsiz;
675 <        lu_doall(&ofiletab, myseeko, &nvals);
675 >        lu_doall(&ofiletab, &myseeko, &nvals);
676                                                  /* skip repeated input */
677 +        lastout *= accumulate;
678          for (nvals = 0; nvals < lastout; nvals++) {
679                  FVECT   vdummy;
680                  if (getvec(vdummy) < 0 || getvec(vdummy) < 0)
681                          error(USER, "unexpected EOF on input");
682          }
683 <        lastray = lastdone = lastout * accumulate;
683 >        lastray = lastdone = (RNUMBER)lastout;
684          if (raysleft)
685                  raysleft -= lastray;
686   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines