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

Comparing ray/src/common/rglinst.c (file contents):
Revision 3.4 by gwlarson, Wed Sep 2 18:42:11 1998 UTC vs.
Revision 3.11 by schorsch, Sat Jul 12 09:55:13 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   * Routines for reading instances and converting to OpenGL.
6   */
7  
8 + #include "copyright.h"
9 +
10 + #include <stdio.h>
11 + #include <string.h>
12 + #include <time.h>
13 +
14 + #include "platform.h"
15 + #include "resolu.h"
16   #include "radogl.h"
17   #include "octree.h"
18  
# Line 20 | Line 25 | typedef struct {
25          char    octfile[256];                   /* octree file path */
26   } OCTINST;                              /* octree to instantiate */
27  
28 < OBJECT  nobjects;                       /* number of objects loaded so far */
28 > static double  ogetflt(void);
29 > static long  ogetint(int);
30 > static char  *ogetstr(char *);
31 > static int  loadobj(void);
32 > static void  skiptree(void);
33 > static void  octerror(int etyp, char *msg);
34 > static OCTINST  *getoct(char *);
35  
25 extern int      free();
26
27 static double  ogetflt();
28 static long  ogetint();
29 static char  *ogetstr();
30 static int  loadobj(), octerror(), skiptree();
31 static OCTINST  *getoct();
32
36   static char  *infn;                     /* input file name */
37   static FILE  *infp;                     /* input file stream */
38   static int  objsize;                    /* size of stored OBJECT's */
# Line 41 | Line 44 | static LUTAB   imtab = {imhash,NULL,NULL,NULL,0,NULL,0};
44   static LUTAB    ottab = LU_SINIT(free,free);
45  
46  
47 + int
48   o_instance(o)                           /* convert instance to list call */
49   register OBJREC *o;
50   {
# Line 69 | Line 73 | register OBJREC        *o;
73          }
74          ot = getoct(o->oargs.sarg[0]);  /* get octree reference */
75          if (ot->localmatl &= o->os != NULL)     /* set material */
76 <                setmaterial(o->os, ot->cent, 0);
76 >                setmaterial((MATREC *)o->os, ot->cent, 0);
77                                          /* call the assigned list */
78          glCallList(ot->listid);
79  
# Line 79 | Line 83 | register OBJREC        *o;
83                  glPopAttrib();
84          }
85          rgl_checkerr("creating instance");
86 +        return(0);
87   }
88  
89  
# Line 124 | Line 129 | static OCTINST *
129   getoct(name)                            /* get/assign octree list id */
130   char    *name;
131   {
127        extern char     *getpath(), *getlibpath();
132          char    *path;
133          register LUENT  *lp;
134          register OCTINST        *op;
# Line 138 | Line 142 | char   *name;
142                  strcpy(lp->key, name);
143          }
144          if ((op = (OCTINST *)lp->data) == NULL) {
145 <                path = getpath(name, getlibpath(), R_OK);
145 >                path = getpath(name, getrlibpath(), R_OK);
146                  if (path == NULL) {
147                          sprintf(errmsg, "cannot find octree \"%s\"", name);
148                          error(USER, errmsg);
# Line 170 | Line 174 | FVECT  cent;
174                  sprintf(errmsg, "cannot open octree file \"%s\"", fname);
175                  error(SYSTEM, errmsg);
176          }
177 < #ifdef MSDOS
174 <        setmode(fileno(infp), O_BINARY);
175 < #endif
177 >        SET_FILE_BINARY(infp);
178                                          /* get header */
179          if (checkheader(infp, OCTFMT, NULL) < 0)
180                  octerror(USER, "not an octree");
181                                          /* check format */
182          if ((objsize = ogetint(2)-OCTMAGIC) <= 0 ||
183                          objsize > MAXOBJSIZ || objsize > sizeof(long))
184 <                octerror("incompatible octree format");
184 >                octerror(USER, "incompatible octree format");
185          if (cent != NULL) {             /* get boundaries (compute center) */
186                  for (i = 0; i < 3; i++)
187                          cent[i] = atof(ogetstr(sbuf));
# Line 197 | Line 199 | FVECT  cent;
199   }
200  
201  
202 + int
203   loadoct(fname)                          /* read in objects from octree */
204   char  *fname;
205   {
# Line 208 | Line 211 | char  *fname;
211          
212          infn = fname;
213          infp = fopen(fname, "r");       /* assume already checked */
214 < #ifdef MSDOS
212 <        setmode(fileno(infp), O_BINARY);
213 < #endif
214 >        SET_FILE_BINARY(infp);
215                                          /* skip header */
216          getheader(infp, NULL, NULL);
217                                          /* get format */
# Line 286 | Line 287 | ogetflt()                      /* get a floating point number */
287   }
288          
289  
290 < static
290 > static void
291   skiptree()                              /* skip octree on input */
292   {
293          register int  i;
# Line 311 | Line 312 | skiptree()                             /* skip octree on input */
312   }
313  
314  
315 < static
315 > static int
316   loadobj()                               /* get next object */
317   {
318          static OBJREC    ob;
# Line 360 | Line 361 | loadobj()                              /* get next object */
361   #endif
362                                          /* get real arguments */
363          if (ob.oargs.nfargs = ogetint(2)) {
364 <                ob.oargs.farg = (FLOAT *)malloc
365 <                                (ob.oargs.nfargs*sizeof(FLOAT));
364 >                ob.oargs.farg = (RREAL *)malloc
365 >                                (ob.oargs.nfargs*sizeof(RREAL));
366                  if (ob.oargs.farg == NULL)
367                          goto memerr;
368                  for (i = 0; i < ob.oargs.nfargs; i++)
# Line 384 | Line 385 | memerr:
385   }
386  
387  
388 < static
388 > static void
389   octerror(etyp, msg)                     /* octree error */
390   int  etyp;
391   char  *msg;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines