| 7 |  |  | 
| 8 |  | #include <string.h> | 
| 9 |  |  | 
| 10 | + | #include "platform.h" | 
| 11 | + | #include "rterror.h" | 
| 12 |  | #include "rholo.h" | 
| 11 | – | #include "view.h" | 
| 13 |  |  | 
| 14 |  | char    *progname;              /* our program name */ | 
| 15 |  | char    *hdkfile;               /* holodeck file name */ | 
| 31 |  |  | 
| 32 |  | extern int      nowarn;         /* turn warnings off? */ | 
| 33 |  |  | 
| 34 | + | static void dopicture(int fn); | 
| 35 | + | static void render_frame(PACKHEAD *bl, int nb); | 
| 36 | + | static void startpicture(int fn); | 
| 37 | + | static int endpicture(void); | 
| 38 | + | static void initialize(void); | 
| 39 | + | /* from rhpict2.c */ | 
| 40 | + | extern void pixFinish(double ransamp); | 
| 41 | + | extern void pixBeam(BEAM *bp, HDBEAMI *hb); | 
| 42 |  |  | 
| 43 | < | main(argc, argv) | 
| 44 | < | int     argc; | 
| 45 | < | char    *argv[]; | 
| 43 | > |  | 
| 44 | > | int | 
| 45 | > | main( | 
| 46 | > | int     argc, | 
| 47 | > | char    *argv[] | 
| 48 | > | ) | 
| 49 |  | { | 
| 50 |  | int     i, rval; | 
| 51 |  |  | 
| 68 |  | pixaspect = atof(argv[++i]); | 
| 69 |  | else if (argv[i][2] == 'e') { | 
| 70 |  | expval = atof(argv[++i]); | 
| 71 | < | if (argv[i][0] == '-' | argv[i][0] == '+') | 
| 71 | > | if ((argv[i][0] == '-') | (argv[i][0] == '+')) | 
| 72 |  | expval = pow(2., expval); | 
| 73 |  | } else | 
| 74 |  | goto userr; | 
| 136 |  | "Usage: %s [-w][-r rf][-pa pa][-pe ex][-x hr][-y vr][-S stfn][-o outp][view] input.hdk\n", | 
| 137 |  | progname); | 
| 138 |  | quit(1); | 
| 139 | + | return 1;  /* pro forma return */ | 
| 140 |  | } | 
| 141 |  |  | 
| 142 |  |  | 
| 143 | < | dopicture(fn)                   /* render view from holodeck */ | 
| 144 | < | int     fn; | 
| 143 | > | static void | 
| 144 | > | dopicture(                      /* render view from holodeck */ | 
| 145 | > | int     fn | 
| 146 | > | ) | 
| 147 |  | { | 
| 148 |  | char    *err; | 
| 149 |  | int     rval; | 
| 180 |  | } | 
| 181 |  |  | 
| 182 |  |  | 
| 183 | < | render_frame(bl, nb)            /* render frame from beam values */ | 
| 184 | < | register PACKHEAD       *bl; | 
| 185 | < | int     nb; | 
| 183 | > | static void | 
| 184 | > | render_frame(           /* render frame from beam values */ | 
| 185 | > | PACKHEAD        *bl, | 
| 186 | > | int     nb | 
| 187 | > | ) | 
| 188 |  | { | 
| 189 | < | extern void     pixBeam(); | 
| 190 | < | register HDBEAMI        *bil; | 
| 174 | < | register int    i; | 
| 189 | > | HDBEAMI *bil; | 
| 190 | > | int     i; | 
| 191 |  |  | 
| 192 |  | if (nb <= 0) return; | 
| 193 |  | if ((bil = (HDBEAMI *)malloc(nb*sizeof(HDBEAMI))) == NULL) | 
| 202 |  | } | 
| 203 |  |  | 
| 204 |  |  | 
| 205 | < | startpicture(fn)                /* initialize picture for rendering & output */ | 
| 206 | < | int     fn; | 
| 205 | > | static void | 
| 206 | > | startpicture(           /* initialize picture for rendering & output */ | 
| 207 | > | int     fn | 
| 208 | > | ) | 
| 209 |  | { | 
| 210 |  | extern char     VersionID[]; | 
| 211 |  | double  pa = pixaspect; | 
| 230 |  | fputs(VIEWSTR, stdout); | 
| 231 |  | fprintview(&myview, stdout); | 
| 232 |  | fputc('\n', stdout); | 
| 233 | < | if (pa < 0.99 | pa > 1.01) | 
| 233 | > | if ((pa < 0.99) | (pa > 1.01)) | 
| 234 |  | fputaspect(pa, stdout); | 
| 235 | < | if (expval < 0.99 | expval > 1.01) | 
| 235 | > | if ((expval < 0.99) | (expval > 1.01)) | 
| 236 |  | fputexpos(expval, stdout); | 
| 237 |  | fputformat(COLRFMT, stdout); | 
| 238 |  | fputc('\n', stdout); | 
| 245 |  | } | 
| 246 |  |  | 
| 247 |  |  | 
| 248 | < | int | 
| 249 | < | endpicture()                    /* finish and write out pixels */ | 
| 248 | > | static int | 
| 249 | > | endpicture(void)                        /* finish and write out pixels */ | 
| 250 |  | { | 
| 251 |  | int     lastr = -1, nunrend = 0; | 
| 252 |  | int32   lastp, lastrp; | 
| 253 | < | register int32  p; | 
| 254 | < | register double d; | 
| 253 | > | int32   p; | 
| 254 | > | double  d; | 
| 255 |  | /* compute final pixel values */ | 
| 256 |  | for (p = hres*vres; p--; ) { | 
| 257 |  | if (myweight[p] <= FTINY) { | 
| 258 | < | if (lastr >= 0) | 
| 258 | > | if (lastr >= 0) { | 
| 259 |  | if (p/hres == lastp/hres) | 
| 260 |  | copycolor(mypixel[p], mypixel[lastp]); | 
| 261 |  | else | 
| 262 |  | copycolor(mypixel[p], mypixel[lastrp]); | 
| 263 | + | } | 
| 264 |  | nunrend++; | 
| 265 |  | continue; | 
| 266 |  | } | 
| 279 |  | } | 
| 280 |  |  | 
| 281 |  |  | 
| 282 | < | initialize()                    /* initialize holodeck and buffers */ | 
| 282 | > | static void | 
| 283 | > | initialize(void)                        /* initialize holodeck and buffers */ | 
| 284 |  | { | 
| 285 |  | int     fd; | 
| 286 |  | FILE    *fp; | 
| 287 |  | int     n; | 
| 288 | < | int32   nextloc; | 
| 288 | > | off_t   nextloc; | 
| 289 |  | /* open holodeck file */ | 
| 290 |  | if ((fp = fopen(hdkfile, "r")) == NULL) { | 
| 291 |  | sprintf(errmsg, "cannot open \"%s\" for reading", hdkfile); | 
| 303 |  | fd = dup(fileno(fp));                   /* dup file descriptor */ | 
| 304 |  | fclose(fp);                             /* done with stdio */ | 
| 305 |  | for (n = 0; nextloc > 0L; n++) {        /* initialize each section */ | 
| 306 | < | lseek(fd, (off_t)nextloc, 0); | 
| 306 | > | lseek(fd, nextloc, SEEK_SET); | 
| 307 |  | read(fd, (char *)&nextloc, sizeof(nextloc)); | 
| 308 |  | hdinit(fd, NULL); | 
| 309 |  | } | 
| 311 |  | mypixel = (COLOR *)bmalloc(xres*yres*sizeof(COLOR)); | 
| 312 |  | myweight = (float *)bmalloc(xres*yres*sizeof(float)); | 
| 313 |  | mydepth = (float *)bmalloc(xres*yres*sizeof(float)); | 
| 314 | < | if (mypixel == NULL | myweight == NULL | mydepth == NULL) | 
| 314 | > | if ((mypixel == NULL) | (myweight == NULL) | (mydepth == NULL)) | 
| 315 |  | error(SYSTEM, "out of memory in initialize"); | 
| 316 |  | } | 
| 317 |  |  | 
| 318 |  |  | 
| 319 |  | void | 
| 320 |  | eputs(s)                        /* put error message to stderr */ | 
| 321 | < | register char  *s; | 
| 321 | > | char  *s; | 
| 322 |  | { | 
| 323 |  | static int  midline = 0; | 
| 324 |  |  |