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

Comparing ray/src/hd/rhcopy.c (file contents):
Revision 3.13 by gwlarson, Mon Feb 1 10:22:46 1999 UTC vs.
Revision 3.21 by greg, Wed Oct 22 02:06:34 2003 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   * Copy data into a holodeck file
6   */
7  
8 + #include "platform.h"
9   #include "holo.h"
10   #include "view.h"
13 #include "resolu.h"
11  
12   #ifndef BKBSIZE
13   #define BKBSIZE         256             /* beam clump size (kilobytes) */
14   #endif
15  
16 < int     checkdepth = 1;         /* check depth (!-f option)? */
17 < int     checkrepeats = 0;       /* check for repeats (-c option)? */
16 > int     checkdepth = 1;         /* check depth (!-d option)? */
17 > int     checkrepeats = 0;       /* check for repeats (-u option)? */
18   int     frompicz;               /* input from pictures & depth-buffers? */
19   int     noutsects;              /* number of output sections */
20   char    obstr, unobstr;         /* flag pointer values */
# Line 95 | Line 92 | int    *hf;
92          if (!strncmp(s, "OBSTRUCTIONS=", 13)) {
93                  s += 13;
94                  while (*s == ' ') s++;
95 <                if (*s == 't' | *s == 'T')
95 >                if ((*s == 't') | (*s == 'T'))
96                          *hf |= H_OBST;
97 <                else if (*s == 'f' | *s == 'F')
97 >                else if ((*s == 'f') | (*s == 'F'))
98                          *hf |= H_OBSF;
99                  else
100                          error(WARNING, "bad OBSTRUCTIONS value in holodeck");
# Line 111 | Line 108 | openholo(fname, append)                /* open existing holodeck fil
108   char    *fname;
109   int     append;
110   {
114        extern long     ftell();
111          FILE    *fp;
112          int     fd;
113          int     hflags = 0;
# Line 124 | Line 120 | int    append;
120                  error(SYSTEM, errmsg);
121          }
122                                          /* check header and magic number */
123 <        if (getheader(fp, holheadline, &hflags) < 0 ||
123 >        if (getheader(fp, holheadline, (char *)&hflags) < 0 ||
124                          hflags&H_BADF || getw(fp) != HOLOMAGIC) {
125                  sprintf(errmsg, "file \"%s\" not in holodeck format", fname);
126                  error(USER, errmsg);
# Line 133 | Line 129 | int    append;
129          nextloc = ftell(fp);                    /* get stdio position */
130          fclose(fp);                             /* done with stdio */
131          for (n = 0; nextloc > 0L; n++) {        /* initialize each section */
132 <                lseek(fd, nextloc, 0);
132 >                lseek(fd, (off_t)nextloc, SEEK_SET);
133                  read(fd, (char *)&nextloc, sizeof(nextloc));
134                  hdinit(fd, NULL)->priv = hflags&H_OBST ? &obstr :
135                                  hflags&H_OBSF ? &unobstr : (char *)NULL;
# Line 199 | Line 195 | static int
195   bpcmp(b1p, b2p)                 /* compare beam positions on disk */
196   int     *b1p, *b2p;
197   {
198 <        register long   pdif = beamdir[*b1p].fo - beamdir[*b2p].fo;
198 >        register off_t  pdif = beamdir[*b1p].fo - beamdir[*b2p].fo;
199  
200          if (pdif > 0L) return(1);
201          if (pdif < 0L) return(-1);
# Line 236 | Line 232 | int    *bq, nb;
232                  }
233                  hdfreebeam(hp, bq[i]);          /* free the beam */
234          }
239        hdfreebeam(NULL, 0);                    /* write & free clump */
235          return(0);
236   }
237  
# Line 304 | Line 299 | char   *pcf, *zbf;
299          int     eshft;
300          double  emult;
301          RESOLU  prs;
302 <        FLOAT   vl[2];
302 >        RREAL   vl[2];
303          FVECT   ro, rd;
304          double  aftd;
305          COLOR   ctmp;
# Line 320 | Line 315 | char   *pcf, *zbf;
315                  error(SYSTEM, pcf);
316          }
317                                  /* load picture header */
318 <        copystruct(&phd.vw, &stdview);
318 >        phd.vw = stdview;
319          phd.expos = 1.0;
320          phd.badfmt = phd.gotview = phd.altprims = 0;
321 <        if (getheader(pfp, picheadline, &phd) < 0 ||
321 >        if (getheader(pfp, picheadline, (char *)&phd) < 0 ||
322                          phd.badfmt || !fgetsresolu(&prs, pfp)) {
323                  sprintf(errmsg, "bad format for picture file \"%s\"", pcf);
324                  error(USER, errmsg);
# Line 339 | Line 334 | char   *pcf, *zbf;
334                  error(WARNING, errmsg);
335          }
336                                  /* figure out what to do about exposure */
337 <        if (phd.expos < 0.99 | phd.expos > 1.01) {
337 >        if ((phd.expos < 0.99) | (phd.expos > 1.01)) {
338                  emult = -log(phd.expos)/log(2.);
339                  eshft = emult >= 0. ? emult+.5 : emult-.5;
340                  emult -= (double)eshft;
341 <                if (emult <= 0.01 & emult >= -0.01)
341 >                if ((emult <= 0.01) & (emult >= -0.01))
342                          emult = -1.;
343                  else {
344                          emult = 1./phd.expos;
# Line 356 | Line 351 | char   *pcf, *zbf;
351                                  /* allocate buffers */
352          cscn = (COLR *)malloc(scanlen(&prs)*sizeof(COLR));
353          zscn = (float *)malloc(scanlen(&prs)*sizeof(float));
354 <        if (cscn == NULL | zscn == NULL)
354 >        if ((cscn == NULL) | (zscn == NULL))
355                  error(SYSTEM, "out of memory in addpicz");
356                                  /* read and process each scanline */
357          for (j = 0; j < numscans(&prs); j++) {
# Line 391 | Line 386 | char   *pcf, *zbf;
386                                  /* write output and free beams */
387          hdflush(NULL);
388                                  /* clean up */
389 <        free((char *)cscn);
390 <        free((char *)zscn);
389 >        free((void *)cscn);
390 >        free((void *)zscn);
391          fclose(pfp);
392          close(zfd);
393   }
394  
395  
396 + void
397   eputs(s)                        /* put error message to stderr */
398   register char  *s;
399   {
# Line 417 | Line 413 | register char  *s;
413   }
414  
415  
416 + void
417   quit(code)                      /* exit the program gracefully */
418   int     code;
419   {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines