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

Comparing ray/src/util/rpiece.c (file contents):
Revision 2.22 by greg, Wed Aug 4 10:08:47 1993 UTC vs.
Revision 2.23 by greg, Wed Aug 4 13:20:45 1993 UTC

# Line 49 | Line 49 | char *argv[];
49   #define unguard()       0
50   #endif
51                                  /* rpict command */
52 < char  *rpargv[128] = {"rpict", "-S", "1", "-x", "512", "-y", "512", "-pa", "1"};
53 < int  rpargc = 9;
52 > char  *rpargv[128] = {"rpict", "-S", "1"};
53 > int  rpargc = 3;
54   int  rpd[3];
55   FILE  *torp, *fromrp;
56   COLR  *pbuf;
57                                  /* our view parameters */
58   VIEW  ourview = STDVIEW;
59   double  pixaspect = 1.0;
60 < int  hres = 512, vres = 512, hmult = 2, vmult = 2;
60 > int  hres = 1024, vres = 1024, hmult = 4, vmult = 4;
61                                  /* output file */
62   char  *outfile = NULL;
63   int  outfd;
# Line 113 | Line 113 | char  *argv[];
113                                  }
114                                  break;
115                          case 'p':               /* pixel aspect ratio? */
116 <                                if (argv[i][2] == 'a' && !argv[i][3])
117 <                                        pixaspect = atof(argv[i+1]);
118 <                                break;
119 <                        case 'x':               /* piece x resolution */
120 <                                if (!argv[i][2])
121 <                                        hres = atoi(argv[i+1]);
122 <                                break;
123 <                        case 'y':               /* piece y resolution */
124 <                                if (!argv[i][2])
125 <                                        vres = atoi(argv[i+1]);
126 <                                break;
116 >                                if (argv[i][2] != 'a' || argv[i][3])
117 >                                        break;
118 >                                pixaspect = atof(argv[i+1]);
119 >                                continue;
120 >                        case 'x':               /* overall x resolution */
121 >                                if (argv[i][2])
122 >                                        break;
123 >                                hres = atoi(argv[++i]);
124 >                                continue;
125 >                        case 'y':               /* overall y resolution */
126 >                                if (argv[i][2])
127 >                                        break;
128 >                                vres = atoi(argv[++i]);
129 >                                continue;
130                          case 'X':               /* horizontal multiplier */
131                                  if (argv[i][2])
132                                          break;
# Line 153 | Line 156 | char  *argv[];
156                                          break;
157                                  outfile = argv[++i];
158                                  continue;
159 <                        }
159 >                        } else if (i >= argc-1)
160 >                                break;
161                  rpargv[rpargc++] = argv[i];
162          }
163 <        rpargv[rpargc] = NULL;
163 >        if (i >= argc) {
164 >                fprintf(stderr, "%s: missing octree argument\n", argv[0]);
165 >                exit(1);
166 >        }
167          if (outfile == NULL) {
168                  fprintf(stderr, "%s: missing output file\n", argv[0]);
169                  exit(1);
# Line 171 | Line 178 | init(ac, av)                   /* set up output file and start rpict *
178   int  ac;
179   char  **av;
180   {
181 +        static char  hrbuf[16], vrbuf[16];
182          extern char  VersionID[];
183          char  *err;
184          FILE  *fp;
# Line 185 | Line 193 | char  **av;
193                  buf[read(syncfd, buf, sizeof(buf)-1)] = '\0';
194                  sscanf(buf, "%d %d", &hmult, &vmult);
195          }
196 +                                        /* compute piece size */
197 +        hres /= hmult;
198 +        vres /= vmult;
199          normaspect(viewaspect(&ourview)*hmult/vmult, &pixaspect, &hres, &vres);
200 +        sprintf(hrbuf, "%d", hres);
201 +        rpargv[rpargc++] = "-x"; rpargv[rpargc++] = hrbuf;
202 +        sprintf(vrbuf, "%d", vres);
203 +        rpargv[rpargc++] = "-y"; rpargv[rpargc++] = vrbuf;
204 +        rpargv[rpargc++] = "-pa"; rpargv[rpargc++] = "0";
205 +        rpargv[rpargc++] = av[ac-1];
206 +        rpargv[rpargc] = NULL;
207                                          /* open output file */
208          if ((outfd = open(outfile, O_WRONLY|O_CREAT|O_EXCL, 0666)) >= 0) {
209                  if ((fp = fdopen(dup(outfd), "w")) == NULL)
# Line 232 | Line 250 | char  **av;
250                                  progname, rpargv[0]);
251                  exit(1);
252          }
253 <        if ((pbuf = (COLR *)malloc(hres*vres*sizeof(COLR))) == NULL) {
253 >        if ((pbuf = (COLR *)bmalloc(hres*vres*sizeof(COLR))) == NULL) {
254                  fprintf(stderr, "%s: out of memory\n", progname);
255                  exit(1);
256          }
# Line 294 | Line 312 | int  rstat;
312   {
313          int  status;
314  
315 <        free((char *)pbuf);
315 >        bfree((char *)pbuf, hres*vres*sizeof(COLR));
316          fclose(torp);
317          fclose(fromrp);
318          while (wait(&status) != -1)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines