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

Comparing ray/src/px/ra_pr.c (file contents):
Revision 1.8 by greg, Mon Mar 12 15:14:40 1990 UTC vs.
Revision 1.12 by greg, Mon Oct 14 17:09:36 1991 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1986 Regents of the University of California */
1 > /* Copyright (c) 1991 Regents of the University of California */
2  
3   #ifndef lint
4   static char SCCSid[] = "$SunId$ LBL";
# Line 39 | Line 39 | extern long  ftell();
39  
40   extern double  atof(), pow();
41  
42 < double  gamma = 2.0;                    /* gamma correction */
42 > double  gamma = 2.2;                    /* gamma correction */
43  
44 + int  bradj = 0;                         /* brightness adjustment */
45 +
46   pic     *inpic, *outpic;
47  
48   char  *progname;
# Line 78 | Line 80 | char  *argv[];
80                          case 'b':
81                                  greyscale = !greyscale;
82                                  break;
83 +                        case 'e':
84 +                                if (argv[i+1][0] != '+' && argv[i+1][0] != '-')
85 +                                        goto userr;
86 +                                bradj = atoi(argv[++i]);
87 +                                break;
88                          case 'r':
89                                  reverse = !reverse;
90                                  break;
# Line 114 | Line 121 | char  *argv[];
121                          quiterr("incompatible format");
122                                          /* put header */
123                  printargs(i, argv, stdout);
124 +                fputformat(COLRFMT, stdout);
125                  putchar('\n');
126                  fputresolu(YMAJOR|YDECR, xmax, ymax, stdout);
127                                          /* convert file */
128                  pr2ra(&head);
129          } else {
130 <                if (i > argc-1 || i < argc-2)
130 >                if (i < argc-2 || (!greyscale && i > argc-1))
131                          goto userr;
132                  if ((inpic = openinput(argv[i], &head)) == NULL) {
133                          sprintf(errmsg, "can't open input \"%s\"", argv[i]);
# Line 139 | Line 147 | char  *argv[];
147          quiterr(NULL);
148   userr:
149          fprintf(stderr,
150 <        "Usage: %s [-d][-c ncolors][-b][-g gamma] input [output]\n",
150 >        "Usage: %s [-d][-c ncolors][-b][-g gamma][-e +/-stops] input [output]\n",
151                          progname);
152 <        fprintf(stderr, "   Or: %s -r [-g gamma] [input [output]]\n",
152 >        fprintf(stderr, "   Or: %s -r [-g gamma][-e +/-stops] [input [output]]\n",
153                          progname);
154          exit(1);
155   }
# Line 185 | Line 193 | register struct rasterfile  *h;
193                  p->fp = stdin;
194          else if ((p->fp = fopen(fname, "r")) == NULL)
195                  return(NULL);
196 <                                        /* discard header */
197 <        getheader(p->fp, NULL);
198 <        if (fgetresolu(&xmax, &ymax, p->fp) != (YMAJOR|YDECR))
199 <                quiterr("bad picture size");
196 >                                        /* check header */
197 >        if (checkheader(p->fp, COLRFMT, NULL) < 0 ||
198 >                        fgetresolu(&xmax, &ymax, p->fp) != (YMAJOR|YDECR))
199 >                quiterr("bad picture format");
200          p->nexty = 0;
201          p->bytes_line = 0;              /* variable length lines */
202          p->pos.y = (long *)ecalloc(ymax, sizeof(long));
# Line 251 | Line 259 | struct rasterfile  *h;
259                                  pow((cmap[0][i]+.5)/256.,gamma),
260                                  pow((cmap[1][i]+.5)/256.,gamma),
261                                  pow((cmap[2][i]+.5)/256.,gamma));
262 +        if (bradj)
263 +                shiftcolrs(ctab, 256, bradj);
264                                          /* convert file */
265          for (i = 0; i < ymax; i++) {
266                  for (j = 0; j < xmax; j++) {
# Line 291 | Line 301 | register rgbpixel  *l3;
301                  quiterr("read error in picreadline3");
302          inpic->nexty = y+1;
303                                                          /* convert scanline */
304 <        normcolrs(inl, xmax, 0);
304 >        normcolrs(inl, xmax, bradj);
305          for (i = 0; i < xmax; i++) {
306                  l3[i].r = inl[i][RED];
307                  l3[i].g = inl[i][GRN];
# Line 349 | Line 359 | colormap  map;
359          register int  i, val;
360  
361          for (i = 0; i < 256; i++) {
362 <                val = pow(i/256.0, 1.0/gamma) * 256.0;
362 >                val = pow((i+0.5)/256.0, 1.0/gamma) * 256.0;
363                  map[0][i] = map[1][i] = map[2][i] = val;
364          }
365   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines