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

Comparing ray/src/util/dctimestep.c (file contents):
Revision 2.46 by greg, Thu Mar 3 03:55:13 2022 UTC vs.
Revision 2.47 by greg, Fri Mar 11 02:27:02 2022 UTC

# Line 141 | Line 141 | main(int argc, char *argv[])
141          int             nsteps = 0;
142          char            *ofspec = NULL;
143          FILE            *ofp = stdout;
144 +        int             xres=0, yres=0;
145          CMATRIX         *cmtx;          /* component vector/matrix result */
146          char            fnbuf[256];
147          int             a, i;
# Line 194 | Line 195 | main(int argc, char *argv[])
195                                  goto userr;
196                          }
197                          break;
198 +                case 'x':
199 +                        xres = atoi(argv[++a]);
200 +                        break;
201 +                case 'y':
202 +                        yres = atoi(argv[++a]);
203 +                        break;
204                  default:
205                          goto userr;
206                  }
# Line 289 | Line 296 | main(int argc, char *argv[])
296                          const char      *wtype = (outfmt==DTascii) ? "w" : "wb";
297                          for (i = 0; i < nsteps; i++) {
298                                  CMATRIX *rvec = cm_column(rmtx, i);
299 +                                if (yres > 0) {
300 +                                        if (xres <= 0)
301 +                                                xres = rvec->nrows/yres;
302 +                                        if (xres*yres != rvec->nrows) {
303 +                                                fprintf(stderr, "Bad resolution: %d != %dx%d\n",
304 +                                                                rvec->nrows, xres, yres);
305 +                                                return(1);
306 +                                        }
307 +                                        rvec->nrows = yres;
308 +                                        rvec->ncols = xres;
309 +                                } else if (xres > 0) {
310 +                                        yres = rvec->nrows/xres;
311 +                                        if (xres*yres != rvec->nrows) {
312 +                                                fprintf(stderr,
313 +                                                        "Bad resolution: %d does not divide %d evenly\n",
314 +                                                                        xres, rvec->nrows);
315 +                                                return(1);
316 +                                        }
317 +                                        rvec->nrows = yres;
318 +                                        rvec->ncols = xres;
319 +                                }
320                                  sprintf(fnbuf, ofspec, i);
321                                  if ((ofp = fopen(fnbuf, wtype)) == NULL) {
322                                          fprintf(stderr,
# Line 304 | Line 332 | main(int argc, char *argv[])
332                                          printargs(argc, argv, ofp);
333                                          fputnow(ofp);
334                                          fprintf(ofp, "FRAME=%d\n", i);
335 <                                        fprintf(ofp, "NROWS=%d\n", rvec->nrows);
336 <                                        fputs("NCOLS=1\nNCOMP=3\n", ofp);
337 <                                        if ((outfmt == 'f') | (outfmt == 'd'))
335 >                                        if ((outfmt != DTrgbe) & (outfmt != DTxyze)) {
336 >                                                fprintf(ofp, "NROWS=%d\n", rvec->nrows);
337 >                                                fprintf(ofp, "NCOLS=%d\n", rvec->ncols);
338 >                                                fputs("NCOMP=3\n", ofp);
339 >                                        }
340 >                                        if ((outfmt == DTfloat) | (outfmt == DTdouble))
341                                                  fputendian(ofp);
342                                          fputformat(cm_fmt_id[outfmt], ofp);
343                                          fputc('\n', ofp);
# Line 331 | Line 362 | main(int argc, char *argv[])
362                                  newheader("RADIANCE", ofp);
363                                  printargs(argc, argv, ofp);
364                                  fputnow(ofp);
365 <                                fprintf(ofp, "NROWS=%d\n", rmtx->nrows);
366 <                                fprintf(ofp, "NCOLS=%d\n", rmtx->ncols);
367 <                                fputs("NCOMP=3\n", ofp);
368 <                                if ((outfmt == 'f') | (outfmt == 'd'))
365 >                                if ((outfmt != DTrgbe) & (outfmt != DTxyze)) {
366 >                                        fprintf(ofp, "NROWS=%d\n", rmtx->nrows);
367 >                                        fprintf(ofp, "NCOLS=%d\n", rmtx->ncols);
368 >                                        fputs("NCOMP=3\n", ofp);
369 >                                }
370 >                                if ((outfmt == DTfloat) | (outfmt == DTdouble))
371                                          fputendian(ofp);
372                                  fputformat(cm_fmt_id[outfmt], ofp);
373                                  fputc('\n', ofp);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines