| 11 |
|
|
| 12 |
|
int domats = 1; /* are we doing materials? */ |
| 13 |
|
|
| 14 |
+ |
extern lut_free_t freemtl; |
| 15 |
+ |
|
| 16 |
|
LUTAB mtab = LU_SINIT(free,freemtl); |
| 17 |
|
|
| 18 |
|
|
| 19 |
|
void |
| 20 |
< |
rgl_matclear() /* clean up materials */ |
| 20 |
> |
rgl_matclear(void) /* clean up materials */ |
| 21 |
|
{ |
| 22 |
|
lu_done(&mtab); |
| 23 |
|
domats = 1; |
| 25 |
|
|
| 26 |
|
|
| 27 |
|
MATREC * |
| 28 |
< |
getmatp(nam) /* find material record for modifier name */ |
| 29 |
< |
char *nam; |
| 28 |
> |
getmatp( /* find material record for modifier name */ |
| 29 |
> |
char *nam |
| 30 |
> |
) |
| 31 |
|
{ |
| 32 |
|
register LUENT *lup; |
| 33 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
int |
| 43 |
< |
o_default(o) /* default object is non-material modifier */ |
| 44 |
< |
register OBJREC *o; |
| 43 |
> |
o_default( /* default object is non-material modifier */ |
| 44 |
> |
register OBJREC *o |
| 45 |
> |
) |
| 46 |
|
{ |
| 47 |
|
register LUENT *lup; |
| 48 |
|
#ifdef DEBUG |
| 58 |
|
goto memerr; |
| 59 |
|
strcpy(lup->key, o->oname); |
| 60 |
|
} else if (lup->data != NULL) |
| 61 |
< |
freemtl((MATREC *)lup->data); |
| 61 |
> |
freemtl(lup->data); |
| 62 |
|
if ((lup->data = o->os) != NULL) /* make material reference */ |
| 63 |
|
((MATREC *)lup->data)->nlinks++; |
| 64 |
|
return(0); |
| 69 |
|
|
| 70 |
|
|
| 71 |
|
int |
| 72 |
< |
o_unsupported(o) /* unsupported object primitive */ |
| 73 |
< |
OBJREC *o; |
| 72 |
> |
o_unsupported( /* unsupported object primitive */ |
| 73 |
> |
OBJREC *o |
| 74 |
> |
) |
| 75 |
|
{ |
| 76 |
|
objerror(o, WARNING, "unsupported type"); |
| 77 |
|
return(0); |
| 79 |
|
|
| 80 |
|
|
| 81 |
|
MATREC * |
| 82 |
< |
newmaterial(nam) /* get an entry for a new material */ |
| 83 |
< |
char *nam; |
| 82 |
> |
newmaterial( /* get an entry for a new material */ |
| 83 |
> |
char *nam |
| 84 |
> |
) |
| 85 |
|
{ |
| 86 |
|
register LUENT *lup; |
| 87 |
|
/* look it up (assign entry) */ |
| 93 |
|
goto memerr; |
| 94 |
|
strcpy(lup->key, nam); |
| 95 |
|
} else if (lup->data != NULL) |
| 96 |
< |
freemtl((MATREC *)lup->data); |
| 96 |
> |
freemtl(lup->data); |
| 97 |
|
lup->data = (char *)malloc(sizeof(MATREC)); |
| 98 |
|
if (lup->data == NULL) |
| 99 |
|
goto memerr; |
| 101 |
|
return((MATREC *)lup->data); |
| 102 |
|
memerr: |
| 103 |
|
error(SYSTEM, "out of memory in newmaterial"); |
| 104 |
+ |
return NULL; /* pro forma return */ |
| 105 |
|
} |
| 106 |
|
|
| 107 |
|
|
| 108 |
|
void |
| 109 |
< |
freemtl(mp) /* free a material */ |
| 103 |
< |
register MATREC *mp; |
| 109 |
> |
freemtl(void *p) /* free a material */ |
| 110 |
|
{ |
| 111 |
+ |
register MATREC *mp = (MATREC *)p; |
| 112 |
+ |
|
| 113 |
|
if (!--mp->nlinks) |
| 114 |
|
free((void *)mp); |
| 115 |
|
} |
| 116 |
|
|
| 117 |
|
|
| 118 |
|
int |
| 119 |
< |
m_normal(o) /* compute normal material parameters */ |
| 120 |
< |
register OBJREC *o; |
| 119 |
> |
m_normal( /* compute normal material parameters */ |
| 120 |
> |
register OBJREC *o |
| 121 |
> |
) |
| 122 |
|
{ |
| 123 |
|
register MATREC *m; |
| 124 |
|
/* check arguments */ |
| 150 |
|
|
| 151 |
|
|
| 152 |
|
int |
| 153 |
< |
m_aniso(o) /* anisotropic material */ |
| 154 |
< |
register OBJREC *o; |
| 153 |
> |
m_aniso( /* anisotropic material */ |
| 154 |
> |
register OBJREC *o |
| 155 |
> |
) |
| 156 |
|
{ |
| 157 |
|
register MATREC *m; |
| 158 |
|
/* check arguments */ |
| 184 |
|
|
| 185 |
|
|
| 186 |
|
int |
| 187 |
< |
m_glass(o) /* glass material (hopeless) */ |
| 188 |
< |
OBJREC *o; |
| 187 |
> |
m_glass( /* glass material (hopeless) */ |
| 188 |
> |
OBJREC *o |
| 189 |
> |
) |
| 190 |
|
{ |
| 191 |
|
register MATREC *m; |
| 192 |
|
|