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

Comparing ray/src/px/pvalue.c (file contents):
Revision 1.1 by greg, Thu Feb 2 10:49:31 1989 UTC vs.
Revision 1.5 by greg, Fri Dec 14 16:33:19 1990 UTC

# Line 33 | Line 33 | int  format = 'a';             /* input/output format */
33  
34   int  header = 1;                /* do header */
35  
36 < double  exposure = 1.0;
36 > COLOR  exposure = WHTCOLOR;
37  
38   char  *progname;
39  
# Line 129 | Line 129 | unkopt:
129                                          progname);
130                          quit(1);
131                  }
132 <                printf("-Y %d +X %d\n", yres, xres);    /* resolution */
132 >                fputresolu(YMAJOR|YDECR, xres, yres, stdout);
133                  valtopix();
134          } else {
135                                                  /* get header */
136                  getheader(fin, checkhead);
137  
138                  if (xres <= 0 || yres <= 0)             /* get picture size */
139 <                        if (fscanf(fin, "-Y %d +X %d\n", &yres, &xres) != 2) {
139 >                        if (fgetresolu(&xres, &yres, fin) != (YMAJOR|YDECR)) {
140                                  fprintf(stderr,
141                                  "%s: missing x and y resolution\n",
142                                                  progname);
# Line 156 | Line 156 | unkopt:
156   checkhead(line)                         /* deal with line from header */
157   char  *line;
158   {
159 +        double  d;
160 +        COLOR   ctmp;
161 +
162          if (header)
163                  fputs(line, stdout);
164 <        if (!strncmp(line, "EXPOSURE=", 9))
165 <                exposure *= atof(line+9);
164 >        if (isexpos(line)) {
165 >                d = 1.0/exposval(line);
166 >                scalecolor(exposure, d);
167 >        } else if (iscolcor(line)) {
168 >                colcorval(ctmp, line);
169 >                colval(exposure,RED) /= colval(ctmp,RED);
170 >                colval(exposure,GRN) /= colval(ctmp,GRN);
171 >                colval(exposure,BLU) /= colval(ctmp,BLU);
172 >        }
173   }
174  
175  
# Line 190 | Line 200 | pixtoval()                             /* convert picture to values */
200                                  else
201                                          copycolor(lastc, scanln[x]);
202                          if (original)
203 <                                scalecolor(scanln[x], 1.0/exposure);
203 >                                multcolor(scanln[x], exposure);
204                          if (!dataonly)
205                                  printf("%7d %7d ", x, y);
206                          if ((*putval)(scanln[x], stdout) < 0) {
# Line 259 | Line 269 | FILE  *fp;
269   {
270          double  vd[3];
271  
272 <        if (fread(vd, sizeof(double), 3, fp) != 3)
272 >        if (fread((char *)vd, sizeof(double), 3, fp) != 3)
273                  return(-1);
274          setcolor(col, vd[0], vd[1], vd[2]);
275          return(0);
# Line 272 | Line 282 | FILE  *fp;
282   {
283          float  vf[3];
284  
285 <        if (fread(vf, sizeof(float), 3, fp) != 3)
285 >        if (fread((char *)vf, sizeof(float), 3, fp) != 3)
286                  return(-1);
287          setcolor(col, vf[0], vf[1], vf[2]);
288          return(0);
# Line 298 | Line 308 | FILE  *fp;
308   {
309          BYTE  vb[3];
310  
311 <        if (fread(vb, sizeof(BYTE), 3, fp) != 3)
311 >        if (fread((char *)vb, sizeof(BYTE), 3, fp) != 3)
312                  return(-1);
313          setcolor(col,(vb[0]+.5)/256.,(vb[1]+.5)/256.,(vb[2]+.5)/256.);
314          return(0);
# Line 324 | Line 334 | FILE  *fp;
334   {
335          double  vd;
336  
337 <        if (fread(&vd, sizeof(double), 1, fp) != 1)
337 >        if (fread((char *)&vd, sizeof(double), 1, fp) != 1)
338                  return(-1);
339          setcolor(col, vd, vd, vd);
340          return(0);
# Line 337 | Line 347 | FILE  *fp;
347   {
348          float  vf;
349  
350 <        if (fread(&vf, sizeof(float), 1, fp) != 1)
350 >        if (fread((char *)&vf, sizeof(float), 1, fp) != 1)
351                  return(-1);
352          setcolor(col, vf, vf, vf);
353          return(0);
# Line 366 | Line 376 | FILE  *fp;
376          BYTE  vb;
377          double  d;
378  
379 <        if (fread(&vb, sizeof(BYTE), 1, fp) != 1)
379 >        if (fread((char *)&vb, sizeof(BYTE), 1, fp) != 1)
380                  return(-1);
381          d = (vb+.5)/256.;
382          setcolor(col, d, d, d);
# Line 396 | Line 406 | FILE  *fp;
406          vf[0] = colval(col,RED);
407          vf[1] = colval(col,GRN);
408          vf[2] = colval(col,BLU);
409 <        fwrite(vf, sizeof(float), 3, fp);
409 >        fwrite((char *)vf, sizeof(float), 3, fp);
410  
411          return(ferror(fp) ? -1 : 0);
412   }
# Line 411 | Line 421 | FILE  *fp;
421          vd[0] = colval(col,RED);
422          vd[1] = colval(col,GRN);
423          vd[2] = colval(col,BLU);
424 <        fwrite(vd, sizeof(double), 3, fp);
424 >        fwrite((char *)vd, sizeof(double), 3, fp);
425  
426          return(ferror(fp) ? -1 : 0);
427   }
# Line 443 | Line 453 | FILE  *fp;
453          vb[1] = min(i,255);
454          i = colval(col,BLU)*256.;
455          vb[2] = min(i,255);
456 <        fwrite(vb, sizeof(BYTE), 3, fp);
456 >        fwrite((char *)vb, sizeof(BYTE), 3, fp);
457  
458          return(ferror(fp) ? -1 : 0);
459   }
# Line 466 | Line 476 | FILE  *fp;
476          float  vf;
477  
478          vf = bright(col);
479 <        fwrite(&vf, sizeof(float), 1, fp);
479 >        fwrite((char *)&vf, sizeof(float), 1, fp);
480  
481          return(ferror(fp) ? -1 : 0);
482   }
# Line 479 | Line 489 | FILE  *fp;
489          double  vd;
490  
491          vd = bright(col);
492 <        fwrite(&vd, sizeof(double), 1, fp);
492 >        fwrite((char *)&vd, sizeof(double), 1, fp);
493  
494          return(ferror(fp) ? -1 : 0);
495   }
# Line 504 | Line 514 | FILE  *fp;
514  
515          i = bright(col)*256.;
516          vb = min(i,255);
517 <        fwrite(&vb, sizeof(BYTE), 1, fp);
517 >        fwrite((char *)&vb, sizeof(BYTE), 1, fp);
518  
519          return(ferror(fp) ? -1 : 0);
520   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines