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

Comparing ray/src/px/pfilt.c (file contents):
Revision 1.2 by greg, Tue Apr 11 17:22:05 1989 UTC vs.
Revision 1.8 by greg, Fri Jan 5 17:52:52 1990 UTC

# Line 28 | Line 28 | double  rad = 0.0;             /* output pixel radius for filteri
28   int  nrows = 0;                 /* number of rows for output */
29   int  ncols = 0;                 /* number of columns for output */
30  
31 < double  xrat = 1.0;             /* ratio of input x size to output */
32 < double  yrat = 1.0;             /* ratio of input y size to output */
31 > double  x_c = 1.0;              /* ratio of output x size to input */
32 > double  y_r = 1.0;              /* ratio of output y size to input */
33  
34   int  singlepass = 0;            /* true means skip first pass */
35  
# Line 47 | Line 47 | char  *tfname = NULL;
47  
48   int  xres, yres;                /* resolution of input */
49  
50 double  x_c, y_r;               /* conversion factors */
51
50   int  xrad;                      /* x window size */
51   int  yrad;                      /* y window size */
52  
# Line 89 | Line 87 | char  **argv;
87                  if (argv[i][0] == '-')
88                          switch (argv[i][1]) {
89                          case 'x':
90 <                                if (argv[i][2] == '/')
91 <                                        xrat = atof(argv[++i]);
92 <                                else
93 <                                        ncols = atoi(argv[++i]);
90 >                                i++;
91 >                                if (argv[i][0] == '/') {
92 >                                        x_c = 1.0/atof(argv[i]+1);
93 >                                        ncols = 0;
94 >                                } else
95 >                                        ncols = atoi(argv[i]);
96                                  break;
97                          case 'y':
98 <                                if (argv[i][2] == '/')
99 <                                        yrat = atof(argv[++i]);
100 <                                else
101 <                                        nrows = atoi(argv[++i]);
98 >                                i++;
99 >                                if (argv[i][0] == '/') {
100 >                                        y_r = 1.0/atof(argv[i]+1);
101 >                                        nrows = 0;
102 >                                } else
103 >                                        nrows = atoi(argv[i]);
104                                  break;
105                          case 'e':
106                                  if (argv[i+1][0] == '+' || argv[i+1][0] == '-')
# Line 126 | Line 128 | char  **argv;
128                          case '1':
129                                  singlepass = 1;
130                                  break;
131 +                        case '2':
132 +                                singlepass = 0;
133 +                                break;
134                          case 'p':
135                                  npts = atoi(argv[++i]) / 2;
136                                  break;
# Line 185 | Line 190 | char  **argv;
190                                          /* add new header info. */
191          printargs(i, argv, stdout);
192                                          /* get picture size */
193 <        if (fscanf(fin, "-Y %d +X %d\n", &yres, &xres) != 2) {
193 >        if (fgetresolu(&xres, &yres, fin) != (YMAJOR|YDECR)) {
194                  fprintf(stderr, "%s: bad picture size\n", progname);
195                  quit(1);
196          }
197          if (ncols > 0)
198 <                xrat = (double)xres/ncols;
198 >                x_c = (double)ncols/xres;
199          else
200 <                ncols = xres/xrat + .5;
200 >                ncols = x_c*xres + .5;
201          if (nrows > 0)
202 <                yrat = (double)yres/nrows;
202 >                y_r = (double)nrows/yres;
203          else
204 <                nrows = yres/yrat + .5;
204 >                nrows = y_r*yres + .5;
205  
206          if (singlepass) {
207                                          /* skip exposure, etc. */
# Line 310 | Line 315 | scan2init()                    /* prepare scanline arrays */
315          double  e;
316          register int  i;
317  
313        x_c = (double)ncols/xres;
314        y_r = (double)nrows/yres;
315
318          if (rad <= 0.0) {
319                  xrad = xres/ncols/2 + 1;
320                  yrad = yres/nrows/2 + 1;
# Line 341 | Line 343 | scan2init()                    /* prepare scanline arrays */
343          }
344          e = bright(exposure);
345          if (e < 1-1e-7 || e > 1+1e-7)           /* record exposure */
346 <                printf("EXPOSURE=%e\n", e);
346 >                fputexpos(e, stdout);
347          printf("\n");
348 <        printf("-Y %d +X %d\n", nrows, ncols);  /* write picture size */
348 >        fputresolu(YMAJOR|YDECR, ncols, nrows, stdout); /* resolution */
349   }
350  
351  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines