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

Comparing ray/src/px/pcomb.c (file contents):
Revision 1.18 by greg, Mon May 27 09:01:05 1991 UTC vs.
Revision 1.23 by greg, Mon Nov 11 14:01:24 1991 UTC

# Line 16 | Line 16 | static char SCCSid[] = "$SunId$ LBL";
16  
17   #include "color.h"
18  
19 + #include  "resolu.h"
20 +
21   #include "calcomp.h"
22  
23   #define MAXINP          32              /* maximum number of input files */
24   #define WINSIZ          9               /* scanline window size */
25   #define MIDSCN          4               /* current scan position */
26  
25 #define BRT             (-1)            /* special index for brightness */
26
27   struct {
28 <        char    *name;          /* file name */
28 >        char    *name;          /* file or command name */
29          FILE    *fp;            /* stream pointer */
30          COLOR   *scan[WINSIZ];  /* input scanline window */
31          COLOR   coef;           /* coefficient */
# Line 34 | Line 34 | struct {
34  
35   int     nfiles;                         /* number of input files */
36  
37 < char    *vcolin[3] = {"ri", "gi", "bi"};
38 < char    *vcolout[3] = {"ro", "go", "bo"};
37 > char    vcolin[3][4] = {"ri", "gi", "bi"};
38 > char    vcolout[3][4] = {"ro", "go", "bo"};
39   char    vbrtin[] = "li";
40   char    vbrtout[] = "lo";
41 < char    *vcolexp[3] = {"re", "ge", "be"};
41 > char    vcolexp[3][4] = {"re", "ge", "be"};
42   char    vbrtexp[] = "le";
43  
44   char    vnfiles[] = "nfiles";
# Line 61 | Line 61 | int    xpos, ypos;                     /* output position */
61  
62   int     wrongformat = 0;
63  
64 + FILE    *popen();
65  
66 +
67   main(argc, argv)
68   int     argc;
69   char    *argv[];
70   {
69        char    buf[128];
71          int     original;
72          double  f;
73          int     a, i;
# Line 109 | Line 110 | char   *argv[];
110                                  break;
111                          case 'o':
112                                  original++;
113 <                                break;
113 >                                continue;
114                          case 's':
115                                  f = atof(argv[++a]);
116                                  scalecolor(input[nfiles].coef, f);
# Line 124 | Line 125 | char   *argv[];
125                          }
126                  else {
127                          input[nfiles].name = argv[a];
128 <                        input[nfiles].fp = fopen(argv[a], "r");
128 >                        input[nfiles].fp = argv[a][0]=='!' ?
129 >                                        popen(argv[a]+1, "r") :
130 >                                        fopen(argv[a], "r");
131                          if (input[nfiles].fp == NULL) {
132                                  perror(argv[a]);
133                                  quit(1);
# Line 148 | Line 151 | char   *argv[];
151                  if (argv[a][0] == '-')
152                          switch (argv[a][1]) {
153                          case 'x':
154 <                                strcpy(buf, vxres);
152 <                                strcat(buf, ":");
153 <                                strcat(buf, argv[++a]);
154 <                                scompile(buf, NULL, 0);
154 >                                varset(vxres, ':', eval(argv[++a]));
155                                  continue;
156                          case 'y':
157 <                                strcpy(buf, vyres);
158 <                                strcat(buf, ":");
159 <                                strcat(buf, argv[++a]);
160 <                                scompile(buf, NULL, 0);
157 >                                varset(vyres, ':', eval(argv[++a]));
158                                  continue;
159                          case 'w':
160                                  continue;
# Line 186 | Line 183 | char   *argv[];
183          printargs(argc, argv, stdout);
184          fputformat(COLRFMT, stdout);
185          putchar('\n');
186 <        fputresolu(YMAJOR|YDECR, xres, yres, stdout);
186 >        fprtresolu(xres, yres, stdout);
187                                                  /* combine pictures */
188          combine();
189          quit(0);
# Line 194 | Line 191 | usage:
191          eputs("Usage: ");
192          eputs(argv[0]);
193          eputs(
194 < " [-w][-h][-x xr][-y yr][-e expr][-f file] [ [-s f][-c r g b] pic ..]\n");
194 > " [-w][-x xr][-y yr][-e expr][-f file] [ [-s f][-c r g b] pic ..]\n");
195          quit(1);
196   }
197  
# Line 237 | Line 234 | checkfile()                    /* ready a file */
234                  eputs(": not in Radiance picture format\n");
235                  quit(1);
236          }
237 <        if (fgetresolu(&xinp, &yinp, input[nfiles].fp) != (YMAJOR|YDECR)) {
237 >        if (fgetresolu(&xinp, &yinp, input[nfiles].fp) < 0) {
238                  eputs(input[nfiles].name);
239                  eputs(": bad picture size\n");
240                  quit(1);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines