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

Comparing ray/src/hd/rhpict.c (file contents):
Revision 3.7 by gwlarson, Tue Mar 9 15:10:26 1999 UTC vs.
Revision 3.17 by schorsch, Thu Jan 1 11:21:55 2004 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1999 Silicon Graphics, Inc. */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ SGI";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*
5   * Radiance holodeck picture generator
6   */
7  
8 + #include <string.h>
9 +
10 + #include "platform.h"
11 + #include "rterror.h"
12   #include "rholo.h"
13   #include "view.h"
13 #include "resolu.h"
14  
15   char    *progname;              /* our program name */
16   char    *hdkfile;               /* holodeck file name */
# Line 32 | Line 32 | int    hres, vres;             /* current horizontal and vertical re
32  
33   extern int      nowarn;         /* turn warnings off? */
34  
35 + static void dopicture(int fn);
36 + static void render_frame(PACKHEAD *bl, int nb);
37 + static void startpicture(int fn);
38 + static int endpicture(void);
39 + static void initialize(void);
40 + /* from rhpict2.c */
41 + extern void pixFinish(double ransamp);
42 + extern void pixBeam(BEAM *bp, HDBEAMI *hb);
43  
44 < main(argc, argv)
45 < int     argc;
46 < char    *argv[];
44 >
45 > int
46 > main(
47 > int     argc,
48 > char    *argv[]
49 > )
50   {
51          int     i, rval;
52  
# Line 58 | Line 69 | char   *argv[];
69                                  pixaspect = atof(argv[++i]);
70                          else if (argv[i][2] == 'e') {
71                                  expval = atof(argv[++i]);
72 <                                if (argv[i][0] == '-' | argv[i][0] == '+')
72 >                                if ((argv[i][0] == '-') | (argv[i][0] == '+'))
73                                          expval = pow(2., expval);
74                          } else
75                                  goto userr;
# Line 126 | Line 137 | userr:
137   "Usage: %s [-w][-r rf][-pa pa][-pe ex][-x hr][-y vr][-S stfn][-o outp][view] input.hdk\n",
138                          progname);
139          quit(1);
140 +        return 1;  /* pro forma return */
141   }
142  
143  
144 < dopicture(fn)                   /* render view from holodeck */
145 < int     fn;
144 > static void
145 > dopicture(                      /* render view from holodeck */
146 >        int     fn
147 > )
148   {
149          char    *err;
150          int     rval;
# Line 147 | Line 161 | int    fn;
161                                          /* render image */
162          if (blist.nb > 0) {
163                  render_frame(blist.bl, blist.nb);
164 <                free((char *)blist.bl);
164 >                free((void *)blist.bl);
165          } else {
166                  sprintf(errmsg, "no section visible in frame %d", fn);
167                  error(WARNING, errmsg);
# Line 167 | Line 181 | int    fn;
181   }
182  
183  
184 < render_frame(bl, nb)            /* render frame from beam values */
185 < register PACKHEAD       *bl;
186 < int     nb;
184 > static void
185 > render_frame(           /* render frame from beam values */
186 >        register PACKHEAD       *bl,
187 >        int     nb
188 > )
189   {
174        extern int      pixBeam();
190          register HDBEAMI        *bil;
191          register int    i;
192  
# Line 184 | Line 199 | int    nb;
199          }
200          hdloadbeams(bil, nb, pixBeam);
201          pixFinish(randfrac);
202 <        free((char *)bil);
202 >        free((void *)bil);
203   }
204  
205  
206 < startpicture(fn)                /* initialize picture for rendering & output */
207 < int     fn;
206 > static void
207 > startpicture(           /* initialize picture for rendering & output */
208 >        int     fn
209 > )
210   {
211          extern char     VersionID[];
212          double  pa = pixaspect;
# Line 214 | Line 231 | int    fn;
231          fputs(VIEWSTR, stdout);
232          fprintview(&myview, stdout);
233          fputc('\n', stdout);
234 <        if (pa < 0.99 | pa > 1.01)
234 >        if ((pa < 0.99) | (pa > 1.01))
235                  fputaspect(pa, stdout);
236 <        if (expval < 0.99 | expval > 1.01)
236 >        if ((expval < 0.99) | (expval > 1.01))
237                  fputexpos(expval, stdout);
238          fputformat(COLRFMT, stdout);
239          fputc('\n', stdout);
240                                  /* write resolution (standard order) */
241          fprtresolu(hres, vres, stdout);
242                                  /* prepare image buffers */
243 <        bzero((char *)mypixel, hres*vres*sizeof(COLOR));
244 <        bzero((char *)myweight, hres*vres*sizeof(float));
245 <        bzero((char *)mydepth, hres*vres*sizeof(float));
243 >        memset((char *)mypixel, '\0', hres*vres*sizeof(COLOR));
244 >        memset((char *)myweight, '\0', hres*vres*sizeof(float));
245 >        memset((char *)mydepth, '\0', hres*vres*sizeof(float));
246   }
247  
248  
249 < int
250 < endpicture()                    /* finish and write out pixels */
249 > static int
250 > endpicture(void)                        /* finish and write out pixels */
251   {
252          int     lastr = -1, nunrend = 0;
253 <        int4    lastp, lastrp;
254 <        register int4   p;
253 >        int32   lastp, lastrp;
254 >        register int32  p;
255          register double d;
256                                  /* compute final pixel values */
257          for (p = hres*vres; p--; ) {
258                  if (myweight[p] <= FTINY) {
259 <                        if (lastr >= 0)
259 >                        if (lastr >= 0) {
260                                  if (p/hres == lastp/hres)
261                                          copycolor(mypixel[p], mypixel[lastp]);
262                                  else
263                                          copycolor(mypixel[p], mypixel[lastrp]);
264 +                        }
265                          nunrend++;
266                          continue;
267                  }
# Line 262 | Line 280 | endpicture()                   /* finish and write out pixels */
280   }
281  
282  
283 < initialize()                    /* initialize holodeck and buffers */
283 > static void
284 > initialize(void)                        /* initialize holodeck and buffers */
285   {
267        extern long     ftell();
286          int     fd;
287          FILE    *fp;
288          int     n;
289 <        int4    nextloc;
289 >        int32   nextloc;
290                                          /* open holodeck file */
291          if ((fp = fopen(hdkfile, "r")) == NULL) {
292                  sprintf(errmsg, "cannot open \"%s\" for reading", hdkfile);
# Line 286 | Line 304 | initialize()                   /* initialize holodeck and buffers */
304          fd = dup(fileno(fp));                   /* dup file descriptor */
305          fclose(fp);                             /* done with stdio */
306          for (n = 0; nextloc > 0L; n++) {        /* initialize each section */
307 <                lseek(fd, (long)nextloc, 0);
307 >                lseek(fd, (off_t)nextloc, SEEK_SET);
308                  read(fd, (char *)&nextloc, sizeof(nextloc));
309                  hdinit(fd, NULL);
310          }
# Line 294 | Line 312 | initialize()                   /* initialize holodeck and buffers */
312          mypixel = (COLOR *)bmalloc(xres*yres*sizeof(COLOR));
313          myweight = (float *)bmalloc(xres*yres*sizeof(float));
314          mydepth = (float *)bmalloc(xres*yres*sizeof(float));
315 <        if (mypixel == NULL | myweight == NULL | mydepth == NULL)
315 >        if ((mypixel == NULL) | (myweight == NULL) | (mydepth == NULL))
316                  error(SYSTEM, "out of memory in initialize");
317   }
318  
319  
320 + void
321   eputs(s)                        /* put error message to stderr */
322   register char  *s;
323   {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines