--- ray/src/common/rglfile.c 1999/01/29 15:27:22 3.3 +++ ray/src/common/rglfile.c 2003/10/27 10:19:31 3.9 @@ -1,31 +1,25 @@ -/* Copyright (c) 1998 Silicon Graphics, Inc. */ - #ifndef lint -static char SCCSid[] = "$SunId$ SGI"; +static const char RCSid[] = "$Id: rglfile.c,v 3.9 2003/10/27 10:19:31 schorsch Exp $"; #endif - /* * Load Radiance object(s) and create OpenGL display lists */ +#include "copyright.h" + +#include "rtprocess.h" #include "radogl.h" #ifndef NLIST2ALLOC #define NLIST2ALLOC 16 /* batch of display lists to get */ #endif -extern int o_sphere(), o_face(), o_cone(), o_ring(), - o_source(), o_instance(); - -extern int m_normal(), m_glass(), m_aniso(), m_brdf(), m_brdf2(), - m_light(), m_prism(), m_mirror(); - FUN ofun[NUMOTYPE] = INIT_OTYPE; static int nextlist, nlistleft = 0; -static +static void initotypes() /* initialize ofun array */ { if (ofun[OBJ_SPHERE].funp == o_sphere) @@ -41,6 +35,7 @@ initotypes() /* initialize ofun array */ ofun[OBJ_RING].funp = o_ring; ofun[OBJ_SOURCE].funp = o_source; ofun[OBJ_INSTANCE].funp = o_instance; + ofun[OBJ_MESH].funp = o_unsupported; /* assign material types */ ofun[MAT_TRANS].funp = ofun[MAT_PLASTIC].funp = @@ -81,6 +76,7 @@ newglist() /* allocate an OGL list id */ } +void rgl_checkerr(where) /* check for GL or GLU error */ char *where; { @@ -123,7 +119,7 @@ int rgl_octlist(fname, cent, radp, nl) /* load scen into display list */ char *fname; FVECT cent; /* returned octree center (optional) */ -FLOAT *radp; /* returned octree size (optional) */ +RREAL *radp; /* returned octree size (optional) */ int *nl; /* returned number of lists (optional) */ { double r; @@ -149,10 +145,10 @@ int *nl; /* returned number of lists (optional) */ } +void rgl_load(inpspec) /* convert scene description into OGL calls */ char *inpspec; { - FILE *popen(); char *fgetline(); FILE *infp; char buf[1024]; @@ -191,6 +187,7 @@ char *inpspec; } +void rgl_object(name, fp) /* read the next object */ char *name; FILE *fp; @@ -202,16 +199,14 @@ FILE *fp; strcpy(sbuf, "EOF"); fgetword(sbuf, MAXSTR, fp); ob.omod = 0; /* use ob.os for pointer to material */ - if (!strcmp(sbuf, VOIDID)) + if (!strcmp(sbuf, VOIDID) || !strcmp(sbuf, ALIASMOD)) ob.os = NULL; else ob.os = (char *)getmatp(sbuf); /* get type */ strcpy(sbuf, "EOF"); fgetword(sbuf, MAXSTR, fp); - if (!strcmp(sbuf, ALIASID)) - ob.otype = -1; - else if ((ob.otype = otype(sbuf)) < 0) { + if ((ob.otype = otype(sbuf)) < 0) { sprintf(errmsg, "(%s): unknown type \"%s\"", name, sbuf); error(USER, errmsg); } @@ -220,7 +215,7 @@ FILE *fp; fgetword(sbuf, MAXSTR, fp); ob.oname = sbuf; /* get arguments */ - if (ob.otype == -1) { + if (ob.otype == MOD_ALIAS) { char sbuf2[MAXSTR]; /* get alias */ strcpy(sbuf2, "EOF"); fgetword(sbuf2, MAXSTR, fp);