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 2.3 by greg, Fri May 8 10:58:52 1992 UTC vs.
Revision 2.5 by greg, Mon Sep 21 12:14:37 1992 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1991 Regents of the University of California */
1 > /* Copyright (c) 1992 Regents of the University of California */
2  
3   #ifndef lint
4   static char SCCSid[] = "$SunId$ LBL";
# Line 16 | Line 16 | static char SCCSid[] = "$SunId$ LBL";
16  
17   #include  "resolu.h"
18  
19 < #define  min(a,b)               ((a)<(b)?(a):(b))
19 > #define  min(a,b)               ((a)<(b)?(a):(b))
20  
21 < RESOLU  picres;                 /* resolution of picture */
21 > RESOLU  picres;                 /* resolution of picture */
22  
23   int  uniq = 0;                  /* print only unique values? */
24  
# Line 39 | Line 39 | int  resolution = 1;           /* put/get resolution string? */
39  
40   int  wrongformat = 0;           /* wrong input format? */
41  
42 < double  gamcor = 1.0;           /* gamma correction */
42 > double  gamcor = 1.0;           /* gamma correction */
43  
44 + int  ord[3] = {RED, GRN, BLU};  /* RGB ordering */
45 + int  rord[4];                   /* reverse ordering */
46 +
47   COLOR  exposure = WHTCOLOR;
48  
49   char  *progname;
# Line 79 | Line 82 | char  **argv;
82                                  if (argv[i][0] == '+')
83                                          gamcor = 1.0/gamcor;
84                                  break;
85 +                        case 'R':               /* reverse byte sequence */
86 +                                if (argv[i][0] == '-') {
87 +                                        ord[0]=BLU; ord[1]=GRN; ord[2]=RED;
88 +                                } else {
89 +                                        ord[0]=RED; ord[1]=GRN; ord[2]=BLU;
90 +                                }
91 +                                break;
92                          case 'r':               /* reverse conversion */
93                                  reverse = argv[i][0] == '-';
94                                  break;
# Line 145 | Line 155 | unkopt:
155                          fmtid = "8-bit_grey";
156                  else
157                          fmtid = "24-bit_rgb";
158 <
158 >                                        /* assign reverse ordering */
159 >        rord[ord[0]] = 0;
160 >        rord[ord[1]] = 1;
161 >        rord[ord[2]] = 2;
162 >                                        /* get input */
163          if (i == argc) {
164                  fin = stdin;
165          } else if (i == argc-1) {
# Line 162 | Line 176 | unkopt:
176          set_io();
177  
178          if (reverse) {
179 + #ifdef MSDOS
180 +                setmode(fileno(stdout), O_BINARY);
181 +                if (format != 'a' && format != 'i')
182 +                        setmode(fileno(fin), O_BINARY);
183 + #endif
184                                          /* get header */
185                  if (header && checkheader(fin, fmtid, stdout) < 0) {
186                          fprintf(stderr, "%s: wrong input format\n", progname);
# Line 180 | Line 199 | unkopt:
199                  fputsresolu(&picres, stdout);   /* always put resolution */
200                  valtopix();
201          } else {
202 + #ifdef MSDOS
203 +                setmode(fileno(fin), O_BINARY);
204 +                if (format != 'a' && format != 'i')
205 +                        setmode(fileno(stdout), O_BINARY);
206 + #endif
207                                                  /* get header */
208                  getheader(fin, checkhead, NULL);
209                  if (wrongformat) {
# Line 230 | Line 254 | char  *line;
254  
255   pixtoval()                              /* convert picture to values */
256   {
257 <        register COLOR  *scanln;
257 >        register COLOR  *scanln;
258          int  dogamma;
259          COLOR  lastc;
260          FLOAT  hv[2];
# Line 285 | Line 309 | pixtoval()                             /* convert picture to values */
309   valtopix()                      /* convert values to a pixel file */
310   {
311          int  dogamma;
312 <        register COLOR  *scanln;
312 >        register COLOR  *scanln;
313          int  y;
314          register int  x;
315  
# Line 329 | Line 353 | getcascii(col, fp)             /* get an ascii color value from f
353   COLOR  col;
354   FILE  *fp;
355   {
356 <        double  vd[3];
356 >        double  vd[3];
357  
358          if (fscanf(fp, "%lf %lf %lf", &vd[0], &vd[1], &vd[2]) != 3)
359                  return(-1);
360 <        setcolor(col, vd[0], vd[1], vd[2]);
360 >        setcolor(col, vd[rord[RED]], vd[rord[GRN]], vd[rord[BLU]]);
361          return(0);
362   }
363  
# Line 342 | Line 366 | getcdouble(col, fp)            /* get a double color value from
366   COLOR  col;
367   FILE  *fp;
368   {
369 <        double  vd[3];
369 >        double  vd[3];
370  
371          if (fread((char *)vd, sizeof(double), 3, fp) != 3)
372                  return(-1);
373 <        setcolor(col, vd[0], vd[1], vd[2]);
373 >        setcolor(col, vd[rord[RED]], vd[rord[GRN]], vd[rord[BLU]]);
374          return(0);
375   }
376  
# Line 359 | Line 383 | FILE  *fp;
383  
384          if (fread((char *)vf, sizeof(float), 3, fp) != 3)
385                  return(-1);
386 <        setcolor(col, vf[0], vf[1], vf[2]);
386 >        setcolor(col, vf[rord[RED]], vf[rord[GRN]], vf[rord[BLU]]);
387          return(0);
388   }
389  
# Line 372 | Line 396 | FILE  *fp;
396  
397          if (fscanf(fp, "%d %d %d", &vi[0], &vi[1], &vi[2]) != 3)
398                  return(-1);
399 <        setcolor(col,(vi[0]+.5)/256.,(vi[1]+.5)/256.,(vi[2]+.5)/256.);
399 >        setcolor(col, (vi[rord[RED]]+.5)/256.,
400 >                        (vi[rord[GRN]]+.5)/256., (vi[rord[BLU]]+.5)/256.);
401          return(0);
402   }
403  
# Line 385 | Line 410 | FILE  *fp;
410  
411          if (fread((char *)vb, sizeof(BYTE), 3, fp) != 3)
412                  return(-1);
413 <        setcolor(col,(vb[0]+.5)/256.,(vb[1]+.5)/256.,(vb[2]+.5)/256.);
413 >        setcolor(col, (vb[rord[RED]]+.5)/256.,
414 >                        (vb[rord[GRN]]+.5)/256., (vb[rord[BLU]]+.5)/256.);
415          return(0);
416   }
417  
# Line 394 | Line 420 | getbascii(col, fp)             /* get an ascii brightness value f
420   COLOR  col;
421   FILE  *fp;
422   {
423 <        double  vd;
423 >        double  vd;
424  
425          if (fscanf(fp, "%lf", &vd) != 1)
426                  return(-1);
# Line 407 | Line 433 | getbdouble(col, fp)            /* get a double brightness value
433   COLOR  col;
434   FILE  *fp;
435   {
436 <        double  vd;
436 >        double  vd;
437  
438          if (fread((char *)&vd, sizeof(double), 1, fp) != 1)
439                  return(-1);
# Line 434 | Line 460 | COLOR  col;
460   FILE  *fp;
461   {
462          int  vi;
463 <        double  d;
463 >        double  d;
464  
465          if (fscanf(fp, "%d", &vi) != 1)
466                  return(-1);
# Line 449 | Line 475 | COLOR  col;
475   FILE  *fp;
476   {
477          BYTE  vb;
478 <        double  d;
478 >        double  d;
479  
480          if (fread((char *)&vb, sizeof(BYTE), 1, fp) != 1)
481                  return(-1);
# Line 464 | Line 490 | COLOR  col;
490   FILE  *fp;
491   {
492          fprintf(fp, "%15.3e %15.3e %15.3e\n",
493 <                        colval(col,RED),
494 <                        colval(col,GRN),
495 <                        colval(col,BLU));
493 >                        colval(col,ord[0]),
494 >                        colval(col,ord[1]),
495 >                        colval(col,ord[2]));
496  
497          return(ferror(fp) ? -1 : 0);
498   }
# Line 478 | Line 504 | FILE  *fp;
504   {
505          float  vf[3];
506  
507 <        vf[0] = colval(col,RED);
508 <        vf[1] = colval(col,GRN);
509 <        vf[2] = colval(col,BLU);
507 >        vf[0] = colval(col,ord[0]);
508 >        vf[1] = colval(col,ord[1]);
509 >        vf[2] = colval(col,ord[2]);
510          fwrite((char *)vf, sizeof(float), 3, fp);
511  
512          return(ferror(fp) ? -1 : 0);
# Line 491 | Line 517 | putcdouble(col, fp)                    /* put a double color to fp */
517   COLOR  col;
518   FILE  *fp;
519   {
520 <        double  vd[3];
520 >        double  vd[3];
521  
522 <        vd[0] = colval(col,RED);
523 <        vd[1] = colval(col,GRN);
524 <        vd[2] = colval(col,BLU);
522 >        vd[0] = colval(col,ord[0]);
523 >        vd[1] = colval(col,ord[1]);
524 >        vd[2] = colval(col,ord[2]);
525          fwrite((char *)vd, sizeof(double), 3, fp);
526  
527          return(ferror(fp) ? -1 : 0);
# Line 507 | Line 533 | COLOR  col;
533   FILE  *fp;
534   {
535          fprintf(fp, "%d %d %d\n",
536 <                        (int)(colval(col,RED)*256.),
537 <                        (int)(colval(col,GRN)*256.),
538 <                        (int)(colval(col,BLU)*256.));
536 >                        (int)(colval(col,ord[0])*256.),
537 >                        (int)(colval(col,ord[1])*256.),
538 >                        (int)(colval(col,ord[2])*256.));
539  
540          return(ferror(fp) ? -1 : 0);
541   }
# Line 522 | Line 548 | FILE  *fp;
548          register int  i;
549          BYTE  vb[3];
550  
551 <        i = colval(col,RED)*256.;
551 >        i = colval(col,ord[0])*256.;
552          vb[0] = min(i,255);
553 <        i = colval(col,GRN)*256.;
553 >        i = colval(col,ord[1])*256.;
554          vb[1] = min(i,255);
555 <        i = colval(col,BLU)*256.;
555 >        i = colval(col,ord[2])*256.;
556          vb[2] = min(i,255);
557          fwrite((char *)vb, sizeof(BYTE), 3, fp);
558  
# Line 561 | Line 587 | putbdouble(col, fp)                    /* put a double brightness to fp
587   COLOR  col;
588   FILE  *fp;
589   {
590 <        double  vd;
590 >        double  vd;
591  
592          vd = bright(col);
593          fwrite((char *)&vd, sizeof(double), 1, fp);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines