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

Comparing ray/src/hd/rhd_qtree.c (file contents):
Revision 3.17 by gregl, Thu Jan 1 13:00:15 1998 UTC vs.
Revision 3.23 by schorsch, Mon Jun 30 14:59:11 2003 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1997 Silicon Graphics, Inc. */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ SGI";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*
5   * Quadtree driver support routines.
6   */
7  
8 + #include <string.h>
9 +
10   #include "standard.h"
11   #include "rhd_qtree.h"
12                                  /* quantity of leaves to free at a time */
# Line 31 | Line 30 | struct rleaves qtL;            /* our pile of leaves */
30  
31   int     rayqleft = 0;           /* rays left to queue before flush */
32  
33 < static int4     falleaves;      /* our list of fallen leaves */
33 > static int32    falleaves;      /* our list of fallen leaves */
34  
35   #define composted(li)   (qtL.bl <= qtL.tl ? \
36                                          ((li) < qtL.bl || (li) >= qtL.tl) : \
# Line 56 | Line 55 | newtwig()                      /* allocate a twig */
55          }
56          bi = nexttwig / TBUNDLESIZ;
57          if (twigbundle[bi] == NULL) {   /* new block */
58 <                twigbundle = (RTREE **)realloc((char *)twigbundle,
58 >                twigbundle = (RTREE **)realloc((void *)twigbundle,
59                                          (bi+2)*sizeof(RTREE *));
60                  if (twigbundle == NULL)
61                          goto memerr;
# Line 84 | Line 83 | int    really;
83          nexttwig = 0;
84          if (!really) {          /* just clear allocated blocks */
85                  while (i--)
86 <                        bzero((char *)twigbundle[i], TBUNDLESIZ*sizeof(RTREE));
86 >                        memset((char *)twigbundle[i], '\0', TBUNDLESIZ*sizeof(RTREE));
87                  return;
88          }
89                                  /* else "really" means free up memory */
90          for (i = 0; twigbundle[i] != NULL; i++)
91 <                free((char *)twigbundle[i]);
92 <        free((char *)twigbundle);
91 >                free((void *)twigbundle[i]);
92 >        free((void *)twigbundle);
93          twigbundle = NULL;
94   }
95  
96  
97 < #define LEAFSIZ         (3*sizeof(float)+sizeof(int4)+\
97 > #define LEAFSIZ         (3*sizeof(float)+sizeof(int32)+\
98                          sizeof(TMbright)+6*sizeof(BYTE))
99  
100   int
# Line 122 | Line 121 | register int   n;
121                  return(0);
122                                  /* assign larger alignment types earlier */
123          qtL.wp = (float (*)[3])qtL.base;
124 <        qtL.wd = (int4 *)(qtL.wp + n);
124 >        qtL.wd = (int32 *)(qtL.wp + n);
125          qtL.brt = (TMbright *)(qtL.wd + n);
126          qtL.chr = (BYTE (*)[3])(qtL.brt + n);
127          qtL.rgb = (BYTE (*)[3])(qtL.chr + n);
# Line 169 | Line 168 | int
168   qtCompost(pct)                  /* free up some leaves */
169   int     pct;
170   {
171 <        register int4   *fl;
171 >        register int32  *fl;
172          int     nused, nclear, nmapped;
173                                  /* figure out how many leaves to clear */
174          nclear = qtL.nl * pct / 100;
# Line 332 | Line 331 | dropit:
331   }
332  
333  
334 < dev_value(c, p, v)              /* add a pixel value to our quadtree */
334 > dev_value(c, d, p)              /* add a pixel value to our quadtree */
335   COLR    c;
336 < FVECT   p, v;
336 > FVECT   d, p;
337   {
338          register int    li;
339          int     mapit;
# Line 353 | Line 352 | FVECT  p, v;
352                          qtCompost(LFREEPCT);
353                  mapit = 0;                      /* we'll map it later */
354          }
355 <        VCOPY(qtL.wp[li], p);
356 <        qtL.wd[li] = encodedir(v);
357 <        tmCvColrs(&qtL.brt[li], qtL.chr[li], c, 1);
355 >        if (p == NULL)
356 >                VSUM(qtL.wp[li], odev.v.vp, d, FHUGE);
357 >        else
358 >                VCOPY(qtL.wp[li], p);
359 >        qtL.wd[li] = encodedir(d);
360 >        tmCvColrs(&qtL.brt[li], qtL.chr[li], (COLR *)c, 1);
361          if (putleaf(li, 1)) {
362                  if (mapit)
363 <                        tmMapPixels(qtL.rgb+li, qtL.brt+li, qtL.chr+li, 1);
363 >                        tmMapPixels((BYTE *)(qtL.rgb+li), qtL.brt+li,
364 >                                        (BYTE *)(qtL.chr+li), 1);
365                  if (--rayqleft == 0)
366                          dev_flush();            /* flush output */
367          }
# Line 409 | Line 412 | int    redo;
412                  if (tmComputeMapping(0., 0., 0.) != TM_E_OK)
413                          return(0);
414          }
415 <        if (tmMapPixels(qtL.rgb+aorg, qtL.brt+aorg,
416 <                        qtL.chr+aorg, alen) != TM_E_OK)
415 >        if (tmMapPixels((BYTE *)(qtL.rgb+aorg), qtL.brt+aorg,
416 >                        (BYTE *)(qtL.chr+aorg), alen) != TM_E_OK)
417                  return(0);
418          if (blen > 0)
419 <                tmMapPixels(qtL.rgb+borg, qtL.brt+borg,
420 <                                qtL.chr+borg, blen);
419 >                tmMapPixels((BYTE *)(qtL.rgb+borg), qtL.brt+borg,
420 >                                (BYTE *)(qtL.chr+borg), blen);
421          qtL.tml = qtL.tl;
422          return(1);
423   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines