| 20 | 
  | 
#define INVALID  -1 | 
| 21 | 
  | 
#endif | 
| 22 | 
  | 
 | 
| 23 | 
+ | 
 | 
| 24 | 
  | 
typedef struct samp { | 
| 25 | 
  | 
        float           (*wp)[3];       /* world intersection point array */ | 
| 26 | 
  | 
        int4            *wd;            /* world direction array */ | 
| 29 | 
  | 
#endif | 
| 30 | 
  | 
        BYTE            (*chr)[3];      /* encoded chrominance array */ | 
| 31 | 
  | 
        BYTE            (*rgb)[3];      /* tone-mapped color array */ | 
| 32 | 
+ | 
        int             *info;          /* Extra sample info */ | 
| 33 | 
+ | 
        int             *info1;          /* Extra sample info */ | 
| 34 | 
  | 
        int             max_samp;       /* maximum number of samples */ | 
| 35 | 
  | 
        int             max_base_pt;     /* maximum number of aux points */ | 
| 36 | 
  | 
        int             next_base_pt;    /* next auxilliary point to add */ | 
| 37 | 
  | 
        int             replace_samp;   /* next sample to free  */ | 
| 38 | 
  | 
        int             num_samp;       /* current number of samples */ | 
| 39 | 
  | 
        int             tone_map;       /* pointer to next value(s)t tonemap*/ | 
| 40 | 
< | 
        int             free_samp;      /* Available sample */ | 
| 40 | 
> | 
        int             free_samp;      /* free sample-not available yet */ | 
| 41 | 
  | 
        char            *base;          /* base of allocated memory */ | 
| 42 | 
  | 
} SAMP; | 
| 43 | 
  | 
 | 
| 47 | 
  | 
#define S_BRT(s)                ((s)->brt) | 
| 48 | 
  | 
#define S_CHR(s)                ((s)->chr) | 
| 49 | 
  | 
#define S_RGB(s)                ((s)->rgb) | 
| 50 | 
+ | 
#define S_INFO(s)               ((s)->info) | 
| 51 | 
+ | 
#define S_INFO1(s)               ((s)->info1) | 
| 52 | 
  | 
#define S_MAX_SAMP(s)           ((s)->max_samp) | 
| 53 | 
  | 
#define S_MAX_BASE_PT(s)        ((s)->max_base_pt) | 
| 54 | 
  | 
#define S_NEXT_BASE_PT(s)       ((s)->next_base_pt) | 
| 55 | 
  | 
#define S_REPLACE_SAMP(s)       ((s)->replace_samp) | 
| 56 | 
  | 
#define S_NUM_SAMP(s)           ((s)->num_samp) | 
| 57 | 
  | 
#define S_TONE_MAP(s)           ((s)->tone_map) | 
| 58 | 
< | 
#define S_FREE_SAMP(s)           ((s)->free_samp) | 
| 58 | 
> | 
#define S_FREE_SAMP(s)          ((s)->free_samp) | 
| 59 | 
  | 
#define S_BASE(s)               ((s)->base) | 
| 60 | 
  | 
 | 
| 61 | 
  | 
#define S_MAX_POINTS(s)         ((s)->max_base_pt) | 
| 63 | 
  | 
#define S_NTH_W_DIR(s,n)        (S_W_DIR(s)[(n)]) | 
| 64 | 
  | 
#define S_NTH_RGB(s,n)          (S_RGB(s)[(n)]) | 
| 65 | 
  | 
#define S_NTH_CHR(s,n)          (S_CHR(s)[(n)]) | 
| 66 | 
< | 
#ifndef HP_VERSION | 
| 66 | 
> | 
#define S_NTH_INFO(s,n)         (S_INFO(s)[(n)]) | 
| 67 | 
> | 
#define S_NTH_INFO1(s,n)         (S_INFO1(s)[(n)]) | 
| 68 | 
  | 
#define S_NTH_BRT(s,n)          (S_BRT(s)[(n)]) | 
| 69 | 
< | 
#endif | 
| 69 | 
> | 
 | 
| 70 | 
  | 
/* Sample Flag macros */ | 
| 71 | 
  | 
#define S_IS_FLAG(s)            IS_FLAG(samp_flag,s) | 
| 72 | 
  | 
#define S_SET_FLAG(s)           SET_FLAG(samp_flag,s) | 
| 73 | 
  | 
#define S_CLR_FLAG(s)           CLR_FLAG(samp_flag,s) | 
| 74 | 
  | 
 | 
| 75 | 
< | 
#define sUnalloc_samp(s,sid)   (S_FREE_SAMP(s) = sid) | 
| 75 | 
> | 
#define S_NTH_NEXT(s,n)         S_NTH_W_DIR(s,n) | 
| 76 | 
> | 
#define sUnalloc_samp(s,n) (S_NTH_NEXT(s,n)=S_FREE_SAMP(s),S_FREE_SAMP(s)=n) | 
| 77 | 
  | 
#define sClear_base_points(s)  (S_NEXT_BASE_PT(s) = S_MAX_SAMP(s)) | 
| 78 | 
  | 
#define sClear(s)      sInit(s) | 
| 79 | 
< | 
/* Max allowed angle of sample dir from current view */ | 
| 80 | 
< | 
#define MAXANG          20 | 
| 81 | 
< | 
#define MAXDIFF2        ( MAXANG*MAXANG * (PI*PI/180./180.)) | 
| 79 | 
> | 
/* MAXDIFF2 Max allowed cos angle squared of sample dir from current view */ | 
| 80 | 
> | 
/* In terms of cos: if angle is 30: MAXDIFF2 = cos(30)^2, if difference | 
| 81 | 
> | 
  is greater than this point not accepted on rebuild | 
| 82 | 
> | 
  */ | 
| 83 | 
> | 
#define MAXDIFF2        0.75 | 
| 84 | 
> | 
/* Max difference in direction for points at infinity: if over 45degrees | 
| 85 | 
> | 
  not accepted on rebuild cos(45) | 
| 86 | 
> | 
  */ | 
| 87 | 
> | 
#define MAXDIR           0.70710678         | 
| 88 | 
> | 
#define MAXQUALITY      10000   /* Maximum quality for rendering rep */ | 
| 89 | 
  | 
 | 
| 90 | 
  | 
extern  SAMP rsL;                        | 
| 91 | 
  | 
extern double   sDepthEps;      /* epsilon to compare depths (z fraction) */ |