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

Comparing ray/src/util/glrad.c (file contents):
Revision 3.13 by greg, Sat Feb 22 02:07:30 2003 UTC vs.
Revision 3.17 by schorsch, Mon Jul 21 22:30:19 2003 UTC

# Line 11 | Line 11 | static const char      RCSid[] = "$Id$";
11   #include <X11/extensions/SGIStereo.h>
12   #endif
13   #include <ctype.h>
14 + #include <string.h>
15   #include <time.h>
16 +
17   #include "radogl.h"
18   #include "view.h"
19   #include "paths.h"
20   #include "glradicon.h"
21 + #include "rtprocess.h"
22  
23   #ifndef MAXVIEW
24   #define MAXVIEW         63              /* maximum number of standard views */
# Line 72 | Line 75 | char   *scene[MAXSCENE+1];             /* material and scene file l
75   int     nscenef = 0;                    /* number of scene files */
76   char    *octree;                        /* octree name (NULL if unnec.) */
77  
78 < int     rtpd[3];                        /* rtrace process descriptors */
78 > SUBPROC rtpd;                   /* rtrace process descriptors */
79  
80   int     silent = 0;                     /* run rad silently? */
81   int     backvis = 1;                    /* back faces visible? */
# Line 90 | Line 93 | int    displist;                       /* our scene display list */
93  
94   int     no_render = 0;                  /* don't rerender */
95  
96 < #ifdef BSD
94 < #define strchr          index
95 < #endif
96 <
97 < extern char     *strchr(), *fgets(), *fgetline(), *atos(), *scan4var();
96 > extern char     *fgetline(), *atos(), *scan4var();
97   extern int      nowarn;                 /* turn warnings off? */
99 extern time_t   time();
98  
99  
100   main(argc, argv)
# Line 140 | Line 138 | char   *argv[];
138                                          /* run rad and get views */
139          runrad(argc-i, argv+i);
140                                          /* check view */
141 <        if (viewsel != NULL)
141 >        if (viewsel != NULL) {
142                  if (viewsel[0] == '-') {
143                          char    *ve = viewsel;
144                          if (!sscanview(&thisview, viewsel) ||
# Line 155 | Line 153 | char   *argv[];
153                                                  progname, viewsel);
154                          quit(1);
155                  }
156 +        }
157                                          /* open GL */
158          dev_open(radfile = argv[i]);
159                                          /* load octree or scene files */
# Line 184 | Line 183 | int    code;
183   {
184          if (ourdisplay != NULL)
185                  dev_close();
186 <        if (rtpd[2] > 0) {
187 <                if (close_process(rtpd) > 0)
186 >        /* if (rtpd.pid > 0) { */
187 >        if (rtpd.running) {
188 >                if (close_process(&rtpd) > 0)
189                          wputs("bad exit status from rtrace\n");
190 <                rtpd[2] = 0;
190 >                /* rtpd.pid = 0; */
191          }
192          exit(code);
193   }
# Line 203 | Line 203 | char   *octname;
203          if (nowarn) av[ac++] = "-w-";
204          av[ac++] = octname;
205          av[ac] = NULL;
206 <        if (open_process(rtpd, av) <= 0)
206 >        if (open_process(&rtpd, av) <= 0)
207                  error(SYSTEM, "cannot start rtrace process");
208   }
209  
# Line 275 | Line 275 | char   **av;
275          do
276                  if (isview(buf)) {
277                          vwl[nvv].v = (VIEW *)bmalloc(sizeof(VIEW));
278 <                        copystruct(vwl[nvv].v, &stdview);
278 >                        *(vwl[nvv].v) = stdview;
279                          sscanview(vwl[nvv].v, buf);
280                          if ((cp = setview(vwl[nvv++].v)) != NULL) {
281                                  fprintf(stderr, "%s: bad view %d - %s\n",
# Line 506 | Line 506 | register VIEW  *nv;
506                          no_render--;
507                  }
508          }
509 <        copystruct(&thisview, nv);
509 >        thisview = *nv;
510          setglpersp(&thisview);
511          render();
512          return(1);
# Line 585 | Line 585 | int    dx, dy, mov, orb;
585          VIEW    nv;
586          FVECT   odir, v1, wp;
587          double  d;
588        register int    li;
588                                  /* start with old view */
589 <        copystruct(&nv, &thisview);
589 >        nv = thisview;
590                                  /* change view direction */
591          if ((d = viewray(v1, odir, &thisview,
592                          (dx+.5)/hres, (dy+.5)/vres)) < -FTINY)
# Line 680 | Line 679 | double md;
679   {
680          float   fbuf[6];
681                                  /* check to see if rtrace is running */
682 <        if (rtpd[2] <= 0)
682 >        /* if (rtpd.pid <= 0) */
683 >        if (!rtpd.running)
684                  return(0);
685                                  /* assign origin */
686          fbuf[0] = org[0]; fbuf[1] = org[1]; fbuf[2] = org[2];
# Line 688 | Line 688 | double md;
688          if (md <= FTINY) md = FHUGE;
689          fbuf[3] = dir[0]*md; fbuf[4] = dir[1]*md; fbuf[5] = dir[2]*md;
690                                  /* trace that ray */
691 <        if (process(rtpd, (char *)fbuf, (char *)fbuf,
691 >        if (process(&rtpd, (char *)fbuf, (char *)fbuf,
692                          4*sizeof(float), 6*sizeof(float)) != 4*sizeof(float))
693                  error(INTERNAL, "error getting data back from rtrace process");
694          if (fbuf[3] >= .99*FHUGE)
# Line 750 | Line 750 | register XKeyPressedEvent  *ekey;
750          case 'l':                       /* retrieve last (premouse) view */
751                  if (lastview.type) {
752                          VIEW    vtmp;
753 <                        copystruct(&vtmp, &thisview);
753 >                        vtmp = thisview;
754                          dev_view(&lastview);
755 <                        copystruct(&lastview, &vtmp);
755 >                        lastview = vtmp;
756                  } else
757                          XBell(ourdisplay, 0);
758                  break;
# Line 831 | Line 831 | VIEW   *vp;
831   {
832          FILE    *fp;
833                                          /* check if already in there */
834 <        if (!bcmp(&thisview, vwl[currentview].v, sizeof(VIEW))) {
834 >        if (!memcmp(&thisview, vwl[currentview].v, sizeof(VIEW))) {
835                  error(COMMAND, "view already in standard list");
836                  return;
837          }
# Line 852 | Line 852 | VIEW   *vp;
852          if (currentview >= MAXVIEW)
853                  error(INTERNAL, "too many views in appendview");
854          vwl[currentview].v = (VIEW *)bmalloc(sizeof(VIEW));
855 <        copystruct(vwl[currentview].v, &thisview);
855 >        *(vwl[currentview].v) = thisview;
856          if (nm != NULL)
857                  vwl[currentview].nam = savqstr(nm);
858   }
# Line 866 | Line 866 | char   *cause;
866          if (cause == lastvc)
867                  return;                 /* only record one view per cause */
868          lastvc = cause;
869 <        copystruct(&lastview, &thisview);
869 >        lastview = thisview;
870   }
871  
872  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines