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

Comparing ray/src/px/ra_bn.c (file contents):
Revision 1.5 by greg, Wed Jun 20 09:17:32 1990 UTC vs.
Revision 1.7 by greg, Thu Apr 18 14:35:35 1991 UTC

# Line 50 | Line 50 | char  *argv[];
50                          }
51                  else
52                          break;
53 +                                                /* set gamma correction */
54 +        setcolrgam(gamma);
55  
56          if (reverse) {
57                  if (i > argc-1 || i < argc-2)
# Line 67 | Line 69 | char  *argv[];
69                  }
70                                          /* put header */
71                  printargs(i, argv, rafp);
72 +                fputformat(COLRFMT, rafp);
73                  putc('\n', rafp);
74                  fputresolu(YMAJOR|YDECR, xmax, ymax, rafp);
75                                          /* convert file */
# Line 82 | Line 85 | char  *argv[];
85                          quiterr(errmsg);
86                  }
87                                          /* get header */
88 <                getheader(rafp, NULL);
89 <                if (fgetresolu(&xmax, &ymax, rafp) != (YMAJOR|YDECR))
88 >                if (checkheader(rafp, COLRFMT, NULL) < 0 ||
89 >                        fgetresolu(&xmax, &ymax, rafp) != (YMAJOR|YDECR))
90                          quiterr("bad RADIANCE format");
91                  if (openbarney(argv[i+1], "w") < 0) {
92                          sprintf(errmsg, "cannot open output \"%s\"", argv[i+1]);
# Line 165 | Line 168 | register FILE  *fp;
168  
169   ra2bn()                                 /* convert radiance to barneyscan */
170   {
171 <        unsigned char   gmap[1024];
172 <        register int    i,k,c;
170 <        register COLOR  *inl;
171 >        register int    i;
172 >        register COLR   *inl;
173          int     j;
174  
175 <        if ((inl = (COLOR *)malloc(xmax*sizeof(COLOR))) == NULL)
175 >        if ((inl = (COLR *)malloc(xmax*sizeof(COLR))) == NULL)
176                  quiterr("out of memory");
175        for (i = 0; i < 1024; i++)
176                gmap[i] = 256.*pow((i+.5)/1024., 1./gamma);
177          for (j = 0; j < ymax; j++) {
178 <                if (freadscan(inl, xmax, rafp) < 0)
178 >                if (freadcolrs(inl, xmax, rafp) < 0)
179                          quiterr("error reading RADIANCE file");
180 <                for (i = 0; i < xmax; i++)
181 <                        for (k = 0; k < 3; k++) {
182 <                                c = 1024.*colval(inl[i],k);
183 <                                if (c >= 1024)
184 <                                        c = 1023;
185 <                                putc(gmap[c], bnfp[k]);
186 <                        }
180 >                colrs_gambs(inl, xmax);
181 >                for (i = 0; i < xmax; i++) {
182 >                        putc(inl[i][RED], bnfp[0]);
183 >                        putc(inl[i][GRN], bnfp[1]);
184 >                        putc(inl[i][BLU], bnfp[2]);
185 >                }
186 >                if (ferror(bnfp[0]) || ferror(bnfp[1]) || ferror(bnfp[2]))
187 >                        quiterr("error writing Barney files");
188          }
189          free((char *)inl);
190   }
# Line 191 | Line 192 | ra2bn()                                        /* convert radiance to barneyscan */
192  
193   bn2ra()                                 /* convert barneyscan to radiance */
194   {
195 <        float   gmap[256];
196 <        register int    i,k,c;
196 <        register COLOR  *outline;
195 >        register int    i;
196 >        register COLR   *outline;
197          int     j;
198  
199 <        if ((outline = (COLOR *)malloc(xmax*sizeof(COLOR))) == NULL)
199 >        if ((outline = (COLR *)malloc(xmax*sizeof(COLR))) == NULL)
200                  quiterr("out of memory");
201        for (i = 0; i < 256; i++)
202                gmap[i] = pow((i+.5)/256., gamma);
201          for (j = 0; j < ymax; j++) {
202 <                for (i = 0; i < xmax; i++)
203 <                        for (k = 0; k < 3; k++)
204 <                                if ((c = getc(bnfp[k])) == EOF)
205 <                                        quiterr("error reading barney file");
206 <                                else
207 <                                        colval(outline[i],k) = gmap[c];
208 <                if (fwritescan(outline, xmax, rafp) < 0)
202 >                for (i = 0; i < xmax; i++) {
203 >                        outline[i][RED] = getc(bnfp[0]);
204 >                        outline[i][GRN] = getc(bnfp[1]);
205 >                        outline[i][BLU] = getc(bnfp[2]);
206 >                }
207 >                if (feof(bnfp[0]) || feof(bnfp[1]) || feof(bnfp[2]))
208 >                        quiterr("error reading barney file");
209 >                gambs_colrs(outline, xmax);
210 >                if (fwritecolrs(outline, xmax, rafp) < 0)
211                          quiterr("error writing RADIANCE file");
212          }
213          free((char *)outline);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines