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

Comparing ray/src/util/rcode_depth.c (file contents):
Revision 2.3 by greg, Fri Jul 19 01:24:33 2019 UTC vs.
Revision 2.11 by greg, Mon Jul 20 15:53:30 2020 UTC

# Line 27 | Line 27 | usage_exit(int code)
27          fputs("Usage: ", stderr);
28          fputs(progname, stderr);
29          fputs(
30 <        " [-d ref_depth/unit][-h[io]][-H[io]][-f[afd]] [input [output]]\n",
30 >        " [-d ref_depth/unit][-h[io]][-H[io]][-f[afd]][-x xr -y yr] [input [output.dpt]]\n",
31                          stderr);
32          fputs("   Or: ", stderr);
33          fputs(progname, stderr);
34          fputs(
35 <        " {-r|-p} [-i][-u][-h[io]][-H[io]][-f[afd]] [input [output]]\n",
35 >        " {-r|-p} [-i][-u][-h[io]][-H[io]][-f[afd]] [input.dpt [output]]\n",
36                          stderr);
37          exit(code);
38   }
# Line 45 | Line 45 | encode_depths(DEPTHCODEC *dcp)
45          long    nexpected = (long)dcp->res.xr * dcp->res.yr;
46  
47          if (dcp->inpfmt[0]) {
48 <                if (strcasestr(dcp->inpfmt, "ascii") != NULL)
48 >                if (!strcmp(dcp->inpfmt, "ascii"))
49                          dcp->format = 'a';
50 <                else if (strcasestr(dcp->inpfmt, "float") != NULL)
50 >                else if (!strcmp(dcp->inpfmt, "float"))
51                          dcp->format = 'f';
52 <                else if (strcasestr(dcp->inpfmt, "double") != NULL)
52 >                else if (!strcmp(dcp->inpfmt, "double"))
53                          dcp->format = 'd';
54                  else {
55                          fputs(dcp->inpname, stderr);
# Line 59 | Line 59 | encode_depths(DEPTHCODEC *dcp)
59                          return 0;
60                  }
61          }
62 +        if (dcp->format == 'a')
63 +                SET_FILE_TEXT(dcp->finp);
64  
65          do {
66                  int     ok = 0;
# Line 71 | Line 73 | encode_depths(DEPTHCODEC *dcp)
73                          break;
74                  case 'f':
75                          ok = (getbinary(&f, sizeof(f), 1, dcp->finp) == 1);
76 +                        if (dcp->swapped)
77 +                                swap32((char *)&f, 1);
78                          d = f;
79                          break;
80                  case 'd':
81                          ok = (getbinary(&d, sizeof(d), 1, dcp->finp) == 1);
82 +                        if (dcp->swapped)
83 +                                swap64((char *)&d, 1);
84                          break;
85                  }
86                  if (!ok)
# Line 252 | Line 258 | pixel_points(DEPTHCODEC *dcp, int unbuf)
258          }
259          if (!check_decode_worldpos(dcp))
260                  return 0;
261 <        
261 >
262          while (scanf("%d %d", &xy[0], &xy[1]) == 2) {
263                  loc2pix(xy, &dcp->res,
264                          (xy[0]+.5)/dcp->res.xr, (xy[1]+.5)/dcp->res.yr);
# Line 277 | Line 283 | pixel_points(DEPTHCODEC *dcp, int unbuf)
283   int
284   main(int argc, char *argv[])
285   {
286 +        int             xres=0, yres=0;
287          int             conversion = CV_FWD;
288          int             bypixel = 0;
289          int             unbuffered = 0;
# Line 350 | Line 357 | main(int argc, char *argv[])
357                                  usage_exit(1);
358                          }
359                          break;
360 +                case 'x':
361 +                        xres = atoi(argv[++a]);
362 +                        break;
363 +                case 'y':
364 +                        yres = atoi(argv[++a]);
365 +                        break;
366                  case 'i':
367                          bypixel++;
368                          break;
# Line 361 | Line 374 | main(int argc, char *argv[])
374                  }
375          dc.hdrflags |= (conversion == CV_FWD) * HF_ENCODE;
376  
377 <        if ((dc.hdrflags & (HF_RESIN|HF_RESOUT)) == HF_RESOUT) {
377 >        if ((xres > 0) & (yres > 0)) {
378 >                dc.hdrflags &= ~HF_RESIN;
379 >                dc.res.rt = PIXSTANDARD;
380 >                dc.res.xr = xres;
381 >                dc.res.yr = yres;
382 >        } else if ((dc.hdrflags & (HF_RESIN|HF_RESOUT)) == HF_RESOUT) {
383                  fputs(progname, stderr);
384                  fputs(": unknown resolution for output\n", stderr);
385                  return 1;
# Line 383 | Line 401 | main(int argc, char *argv[])
401                          fputs(": -i option requires input resolution\n", stderr);
402                          usage_exit(1);
403                  }
404 <                dc.hdrflags &= ~(HF_HEADOUT|HF_RESOUT);
404 >                dc.hdrflags &= ~HF_RESOUT;
405          }
406          if (a < argc-2) {
407                  fputs(progname, stderr);
# Line 400 | Line 418 | main(int argc, char *argv[])
418                  fputs(": cannot open for writing\n", stderr);
419                  return 1;
420          }
421 <        SET_FILE_BINARY(dc.finp);
422 <        if ((conversion != CV_FWD) | (dc.format != 'a'))
405 <                SET_FILE_BINARY(stdout);
421 >        SET_FILE_BINARY(dc.finp);       /* starting assumption */
422 >        SET_FILE_BINARY(stdout);
423   #ifdef getc_unlocked                    /* avoid stupid semaphores */
424          flockfile(dc.finp);
425          flockfile(stdout);
# Line 410 | Line 427 | main(int argc, char *argv[])
427                                          /* read/copy header */
428          if (!process_dc_header(&dc, a, argv))
429                  return 1;
430 +                
431 +        if ((conversion != CV_FWD) & (dc.format == 'a'))
432 +                SET_FILE_TEXT(stdout);
433                                          /* process data */
434          switch (conversion) {
435          case CV_FWD:                    /* distance -> depth code */
436 +                if (!strcmp(dc.depth_unit, "1")) {
437 +                        fputs(progname, stderr);
438 +                        fputs(": warning - using reference depth of 1.0\n",
439 +                                        stderr);
440 +                }
441                  if (!encode_depths(&dc))
442                          return 1;
443                  break;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines