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

Comparing ray/src/hd/sm_samp.c (file contents):
Revision 3.6 by gwlarson, Thu Jun 10 15:22:24 1999 UTC vs.
Revision 3.9 by schorsch, Mon Jun 30 14:59:12 2003 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1998 Silicon Graphics, Inc. */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ SGI";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*
5   * sm_samp.c
6   */
7 +
8 + #include <string.h>
9 +
10   #include "standard.h"
11   #include "sm_flag.h"
12   #include "rhd_sample.h"
13  
14   SAMP rsL;
15 < int4 *samp_flag=NULL;
15 > int32 *samp_flag=NULL;
16  
17   /* Each sample has a world coord point, and direction, brightness,chrominance,
18     and RGB triples
19   */
20  
21   #define TMSIZE sizeof(TMbright)
22 < #define SAMPSIZ (3*sizeof(SFLOAT)+sizeof(int4)+ 6*sizeof(BYTE) + TMSIZE + 2*sizeof(int))
22 > #define SAMPSIZ (3*sizeof(SFLOAT)+sizeof(int32)+ 6*sizeof(BYTE) + TMSIZE + 2*sizeof(int))
23  
24   /* Extra points world space point, vert flag and qt flag */
25   #define POINTSIZ (3*sizeof(SFLOAT) + 2*sizeof(int))
# Line 29 | Line 29 | sClear_all_flags(s)
29   SAMP *s;
30   {
31    if(samp_flag)
32 <    bzero((char *)samp_flag,FLAG_BYTES(S_MAX_BASE_PT(s)));
32 >    memset((char *)samp_flag, '\0', FLAG_BYTES(S_MAX_BASE_PT(s)));
33   }
34  
35   sInit(s)
# Line 75 | Line 75 | int *nptr,extra_points;
75    /* get number of samples that fit in block */
76    n = (i - 8 - extra_points*POINTSIZ) / SAMPSIZ;        
77  
78 +  /* Must make sure n + extra_points can fit in a S_ID identifier */
79 +  if ( n > (S_ID_MAX - extra_points))
80 +    n = (S_ID_MAX - extra_points);
81 +
82    S_BASE(s) = (char *)malloc(n*SAMPSIZ + extra_points*POINTSIZ);
83    if (!S_BASE(s))
84      error(SYSTEM,"sAlloc(): Unable to allocate memory");
85  
86    /* assign larger alignment types earlier */
87    S_W_PT(s) = (SFLOAT(*)[3])S_BASE(s);
88 <  S_W_DIR(s) = (int4 *)(S_W_PT(s) + n + extra_points);
88 >  S_W_DIR(s) = (int32 *)(S_W_PT(s) + n + extra_points);
89    S_BRT(s) = (TMbright *)(S_W_DIR(s) + n);
90    S_CHR(s) = (BYTE (*)[3])(S_BRT(s) + n);
91    S_RGB(s) = (BYTE (*)[3])(S_CHR(s) + n);
# Line 91 | Line 95 | int *nptr,extra_points;
95    S_MAX_BASE_PT(s) = n + extra_points;
96  
97    /* Allocate memory for a per/sample bit flag */
98 <  if(!(samp_flag = (int4 *)malloc(FLAG_BYTES(n+extra_points))))
98 >  if(!(samp_flag = (int32 *)malloc(FLAG_BYTES(n+extra_points))))
99      error(SYSTEM,"sAlloc(): Unable to allocate flag memory");
100    sInit(s);
101    sClear_all_flags(s);
# Line 106 | Line 110 | int *nptr,extra_points;
110     is added: These points are not displayed-they are used to form the
111     initial mesh
112   */
113 < int
113 > S_ID
114   sAdd_base_point(s,v)
115       SAMP *s;
116       FVECT v;
117   {
118 <    int id;
118 >    S_ID id;
119  
120      /* Get pointer to next available point */
121      id = S_NEXT_BASE_PT(s);
# Line 132 | Line 136 | sAdd_base_point(s,v)
136   int
137   sCopy_samp(s,n_id,id)
138     SAMP *s;
139 <   int n_id,id;
139 >   S_ID n_id,id;
140   {
141  
142   #ifdef DEBUG
# Line 165 | Line 169 | sCopy_samp(s,n_id,id)
169   void
170   sInit_samp(s,id,c,d,p,o_id)
171     SAMP *s;
172 <   int id;
172 >   S_ID id;
173     COLR c;
174     FVECT d,p;
175 <   int o_id;
175 >   S_ID o_id;
176   {
177  
178    if(o_id != INVALID)
# Line 185 | Line 189 | sInit_samp(s,id,c,d,p,o_id)
189      /* calculate the brightness and chrominance,RGB will be set by
190         tonemapping
191         */
188 #ifndef TEST_DRIVER
192      tmCvColrs(&S_NTH_BRT(s,id),S_NTH_CHR(s,id),c,1);
190 #endif
193    }
194      /* Set ACTIVE bit upon creation */
195    S_SET_FLAG(id);
# Line 197 | Line 199 | sInit_samp(s,id,c,d,p,o_id)
199  
200  
201   /* Allocate a new sample. If an existing sample was replaced: set flag */
202 < int
202 > S_ID
203   sAlloc_samp(s,replaced)
204     SAMP *s;
205     int *replaced;
206    
207   {
208 <    int id;
208 >    S_ID id;
209  
210      /* First check if there are any freed sample available */
211      if((id = S_FREE_SAMP(s)) != INVALID)
# Line 251 | Line 253 | sAlloc_samp(s,replaced)
253      *replaced = 1;
254      return(id);
255   }
256 +
257 +
258 +
259 +
260 +
261 +
262  
263  
264  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines