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

Comparing ray/src/common/normcodec.c (file contents):
Revision 2.1 by greg, Fri Jul 26 16:18:06 2019 UTC vs.
Revision 2.3 by greg, Wed Aug 14 21:00:14 2019 UTC

# Line 20 | Line 20 | set_nc_defaults(NORMCODEC *ncp)
20          ncp->finp = stdin;
21          ncp->inpname = "<stdin>";
22          ncp->format = 'a';
23 +        ncp->swapped = 0;
24          ncp->res.rt = PIXSTANDARD;
25          if (!progname) progname = "norm_codec";
26   }
# Line 30 | Line 31 | static int
31   headline(char *s, void *p)
32   {
33          NORMCODEC       *ncp = (NORMCODEC *)p;
34 +        int             rv;
35  
36          if (formatval(ncp->inpfmt, s))  /* don't pass format */
37                  return 0;
38  
39 +        if ((rv = isbigendian(s)) >= 0) {
40 +                ncp->swapped = (nativebigendian() != rv);
41 +                return 0;
42 +        }
43          if (ncp->hdrflags & HF_HEADOUT)
44                  fputs(s, stdout);       /* copy to standard output */
45          return 1;
# Line 46 | Line 52 | process_nc_header(NORMCODEC *ncp, int ac, char *av[])
52   {
53          if (ncp->hdrflags & HF_HEADIN &&
54                          getheader(ncp->finp, headline, ncp) < 0) {
55 <                fputs(ncp->inpname, stderr);
56 <                fputs(": bad header\n", stderr);
57 <                return 1;
55 >                if (ncp->hdrflags & HF_STDERR) {
56 >                        fputs(ncp->inpname, stderr);
57 >                        fputs(": bad header\n", stderr);
58 >                }
59 >                return 0;
60          }
61          if (ncp->hdrflags & HF_HEADOUT) {       /* finish header */
62                  if (!(ncp->hdrflags & HF_HEADIN))
# Line 63 | Line 71 | process_nc_header(NORMCODEC *ncp, int ac, char *av[])
71                                  fputformat("ascii", stdout);
72                                  break;
73                          case 'f':
74 +                                fputendian(stdout);
75                                  fputformat("float", stdout);
76                                  break;
77                          case 'd':
78 +                                fputendian(stdout);
79                                  fputformat("double", stdout);
80                                  break;
81                          }
# Line 73 | Line 83 | process_nc_header(NORMCODEC *ncp, int ac, char *av[])
83          }
84                                          /* get/put resolution string */
85          if (ncp->hdrflags & HF_RESIN && !fgetsresolu(&ncp->res, ncp->finp)) {
86 <                fputs(ncp->inpname, stderr);
87 <                fputs(": bad resolution string\n", stderr);
88 <                return 1;
86 >                if (ncp->hdrflags & HF_STDERR) {
87 >                        fputs(ncp->inpname, stderr);
88 >                        fputs(": bad resolution string\n", stderr);
89 >                }
90 >                return 0;
91          }
92          if (ncp->hdrflags & HF_RESOUT)
93                  fputsresolu(&ncp->res, stdout);
# Line 90 | Line 102 | int
102   check_decode_normals(NORMCODEC *ncp)
103   {
104          if (ncp->hdrflags & HF_ENCODE) {
105 <                fputs(progname, stderr);
106 <                fputs(": wrong header mode for decode\n", stderr);
105 >                if (ncp->hdrflags & HF_STDERR) {
106 >                        fputs(progname, stderr);
107 >                        fputs(": wrong header mode for decode\n", stderr);
108 >                }
109                  return 0;
110          }
111          if (ncp->inpfmt[0] && strcmp(ncp->inpfmt, NORMAL32FMT)) {
112 <                fputs(ncp->inpname, stderr);
113 <                fputs(": unexpected input format: ", stderr);
114 <                fputs(ncp->inpfmt, stderr);
115 <                fputc('\n', stderr);
112 >                if (ncp->hdrflags & HF_STDERR) {
113 >                        fputs(ncp->inpname, stderr);
114 >                        fputs(": unexpected input format: ", stderr);
115 >                        fputs(ncp->inpfmt, stderr);
116 >                        fputc('\n', stderr);
117 >                }
118                  return 0;
119          }
120          return 1;
# Line 129 | Line 145 | seek_nc_pix(NORMCODEC *ncp, int x, int y)
145          long    seekpos;
146  
147          if ((ncp->res.xr <= 0) | (ncp->res.yr <= 0)) {
148 <                fputs(progname, stderr);
149 <                fputs(": need map resolution to seek\n", stderr);
148 >                if (ncp->hdrflags & HF_STDERR) {
149 >                        fputs(progname, stderr);
150 >                        fputs(": need map resolution to seek\n", stderr);
151 >                }
152                  return -1;
153          }
154          if ((x < 0) | (y < 0) ||
155                          (x >= scanlen(&ncp->res)) | (y >= numscans(&ncp->res))) {
156 <                fputs(ncp->inpname, stderr);
157 <                fputs(": warning - pixel index off map\n", stderr);
156 >                if (ncp->hdrflags & HF_STDERR) {
157 >                        fputs(ncp->inpname, stderr);
158 >                        fputs(": warning - pixel index off map\n", stderr);
159 >                }
160                  return 0;
161          }
162          seekpos = ncp->dstart + 4*((long)y*scanlen(&ncp->res) + x);
163  
164          if (seekpos != ncp->curpos &&
165                          fseek(ncp->finp, seekpos, SEEK_SET) == EOF) {
166 <                fputs(ncp->inpname, stderr);
167 <                fputs(": seek error\n", stderr);
166 >                if (ncp->hdrflags & HF_STDERR) {
167 >                        fputs(ncp->inpname, stderr);
168 >                        fputs(": seek error\n", stderr);
169 >                }
170                  return -1;
171          }
172          ncp->curpos = seekpos;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines