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

Comparing ray/src/hd/rhd_glx1.c (file contents):
Revision 3.2 by schorsch, Mon Jul 21 22:30:18 2003 UTC vs.
Revision 3.6 by schorsch, Wed Jun 7 17:52:04 2006 UTC

# Line 9 | Line 9 | static const char      RCSid[] = "$Id$";
9   #include "standard.h"
10  
11   #include  <GL/glx.h>
12 + #include  <GL/glu.h>
13  
14 + #include "platform.h"
15   #include "rhd_qtree.h"
16 <
16 > #include "rhdriver.h"
17 > #include "rhdisp.h"
18   #include  "x11icon.h"
19  
20   #ifndef RAYQLEN
# Line 58 | Line 61 | static const char      RCSid[] = "$Id$";
61  
62   struct driver   odev;                   /* global device driver structure */
63  
64 + TMstruct        *tmGlobal;              /* global tone-mapping structure */
65 +
66   char odev_args[64];                     /* command arguments */
67  
68   static XEvent  currentevent;            /* current event */
# Line 85 | Line 90 | static int     inpresflags;            /* input result flags */
90  
91   static int      headlocked = 0;         /* lock vertical motion */
92  
88 static int  resizewindow(), getevent(), getkey(), moveview(),
89                initcones(), freecones(),
90                getmove(), fixwindow(), mytmflags();
93  
94 + static int mytmflags(void);
95 + static void initcones(void);
96 + static void freecones(void);
97 + static void getevent(void);
98 + static void draw3dline(FVECT    wp[2]);
99 + static void draw_grids(void);
100 + static int moveview(int dx, int dy, int mov, int        orb);
101 + static void getmove(XButtonPressedEvent *ebut);
102 + static void getkey(XKeyPressedEvent  *ekey);
103 + static void fixwindow(XExposeEvent  *eexp);
104 + static void resizewindow(XConfigureEvent  *ersz);
105  
106 < dev_open(id)                    /* initialize X11 driver */
107 < char  *id;
106 >
107 > extern void
108 > dev_open(
109 >        char  *id
110 > )
111   {
112          extern char     *getenv();
113          static RGBPRIMS myprims = STDPRIMS;
# Line 128 | Line 144 | char  *id;
144                                  &myprims[BLU][CIEX],&myprims[BLU][CIEY],
145                                  &myprims[WHT][CIEX],&myprims[WHT][CIEY]) >= 6)
146                  dpri = myprims;
147 <        if (tmInit(mytmflags(), dpri, gamval) == NULL)
147 >        tmGlobal = tmInit(mytmflags(), dpri, gamval);
148 >        if (tmGlobal == NULL)
149                  error(SYSTEM, "not enough memory in dev_open");
150                                          /* open window */
151          ourwinattr.background_pixel = ourblack;
# Line 187 | Line 204 | char  *id;
204   }
205  
206  
207 < dev_close()                     /* close our display and free resources */
207 > extern void
208 > dev_close(void)                 /* close our display and free resources */
209   {
210          glXMakeCurrent(ourdisplay, None, NULL);
211          glXDestroyContext(ourdisplay, gctx);
# Line 196 | Line 214 | dev_close()                    /* close our display and free resources
214          XCloseDisplay(ourdisplay);
215          ourdisplay = NULL;
216          qtFreeLeaves();
217 <        tmDone(NULL);
217 >        tmDone(tmGlobal);
218          freecones();
219          odev.v.type = 0;
220          odev.hres = odev.vres = 0;
# Line 204 | Line 222 | dev_close()                    /* close our display and free resources
222   }
223  
224  
225 < dev_clear()                     /* clear our quadtree */
225 > extern void
226 > dev_clear(void)                 /* clear our quadtree */
227   {
228          qtCompost(100);
229          glClear(GL_DEPTH_BUFFER_BIT);
# Line 212 | Line 231 | dev_clear()                    /* clear our quadtree */
231   }
232  
233  
234 < int
235 < dev_view(nv)                    /* assign new driver view */
236 < register VIEW   *nv;
234 > extern int
235 > dev_view(                       /* assign new driver view */
236 >        register VIEW   *nv
237 > )
238   {
239          if (nv->type == VT_PAR ||               /* check view legality */
240                          nv->horiz > 160. || nv->vert > 160.) {
# Line 264 | Line 284 | register VIEW  *nv;
284   }
285  
286  
287 < dev_section(ofn)                /* add octree for geometry rendering */
288 < char    *ofn;
287 > extern void
288 > dev_section(            /* add octree for geometry rendering */
289 >        char    *gfn,
290 >        char    *pfn
291 > )
292   {
293          /* unimplemented */
294   }
295  
296  
297 < dev_auxcom(cmd, args)           /* process an auxiliary command */
298 < char    *cmd, *args;
297 > extern void
298 > dev_auxcom(             /* process an auxiliary command */
299 >        char    *cmd,
300 >        char    *args
301 > )
302   {
303          sprintf(errmsg, "%s: unknown command", cmd);
304          error(COMMAND, errmsg);
305   }
306  
307  
308 < VIEW *
309 < dev_auxview(n, hvres)           /* return nth auxiliary view */
310 < int     n;
311 < int     hvres[2];
308 > extern VIEW *
309 > dev_auxview(            /* return nth auxiliary view */
310 >        int     n,
311 >        int     hvres[2]
312 > )
313   {
314          if (n)
315                  return(NULL);
# Line 291 | Line 318 | int    hvres[2];
318   }
319  
320  
321 < int
322 < dev_input()                     /* get X11 input */
321 > extern int
322 > dev_input(void)                 /* get X11 input */
323   {
324          inpresflags = 0;
325  
# Line 305 | Line 332 | dev_input()                    /* get X11 input */
332   }
333  
334  
335 < int
336 < dev_flush()                     /* flush output */
335 > extern int
336 > dev_flush(void)                 /* flush output */
337   {
338          qtUpdate();
339          glFlush();
# Line 315 | Line 342 | dev_flush()                    /* flush output */
342   }
343  
344  
345 < dev_cone(rgb, ip, rad)          /* render a cone in view coordinates */
346 < BYTE    rgb[3];
347 < FVECT   ip;
348 < double  rad;
345 > extern void
346 > dev_cone(               /* render a cone in view coordinates */
347 >        BYTE    rgb[3],
348 >        FVECT   ip,
349 >        double  rad
350 > )
351   {
352          register int    ci, j;
353          double  apexh, basez;
# Line 355 | Line 384 | double rad;
384  
385  
386   static int
387 < mytmflags()                     /* figure out tone mapping flags */
387 > mytmflags(void)                 /* figure out tone mapping flags */
388   {
389          extern char     *progname;
390          register char   *cp, *tail;
# Line 370 | Line 399 | mytmflags()                    /* figure out tone mapping flags */
399          if (cp-tail == 5 && !strncmp(tail, "glx1h", 5))
400                  return(TM_F_HUMAN|TM_F_NOSTDERR);
401          error(USER, "illegal driver name");
402 +        return -1; /* pro forma return */
403   }
404  
405  
406 < static
407 < initcones()                     /* initialize cone vertices */
406 > static void
407 > initcones(void)                 /* initialize cone vertices */
408   {
409          register int    i, j;
410          double  minrad, d;
# Line 400 | Line 430 | initcones()                    /* initialize cone vertices */
430   }
431  
432  
433 < static
434 < freecones()                     /* free cone vertices */
433 > static void
434 > freecones(void)                 /* free cone vertices */
435   {
436          register int    i;
437  
# Line 414 | Line 444 | freecones()                    /* free cone vertices */
444   }
445  
446  
447 < static
448 < getevent()                      /* get next event */
447 > static void
448 > getevent(void)                  /* get next event */
449   {
450          XNextEvent(ourdisplay, levptr(XEvent));
451          switch (levptr(XEvent)->type) {
# Line 441 | Line 471 | getevent()                     /* get next event */
471   }
472  
473  
474 < static
475 < draw3dline(wp)                  /* draw 3d line in world coordinates */
476 < register FVECT  wp[2];
474 > static void
475 > draw3dline(                     /* draw 3d line in world coordinates */
476 >        register FVECT  wp[2]
477 > )
478   {
479          glVertex3d(wp[0][0], wp[0][1], wp[0][2]);
480          glVertex3d(wp[1][0], wp[1][1], wp[1][2]);
481   }
482  
483  
484 < static
485 < draw_grids()                    /* draw holodeck section grids */
484 > static void
485 > draw_grids(void)                        /* draw holodeck section grids */
486   {
487          static BYTE     gridrgba[4] = {0x0, 0xff, 0xff, 0x00};
488          double  xmin, xmax, ymin, ymax, zmin, zmax;
489 <        double  d, cx, sx, crad;
459 <        FVECT   vx, vy;
460 <        register int    i, j;
489 >        double  d;
490                                          /* can we even do it? */
491          if (!mapped || odev.v.type != VT_PER)
492                  return;
# Line 498 | Line 527 | draw_grids()                   /* draw holodeck section grids */
527   }
528  
529  
530 < static
531 < moveview(dx, dy, mov, orb)      /* move our view */
532 < int     dx, dy, mov, orb;
530 > static int
531 > moveview(       /* move our view */
532 >        int     dx,
533 >        int     dy,
534 >        int     mov,
535 >        int     orb
536 > )
537   {
538          VIEW    nv;
539          FVECT   odir, v1;
# Line 546 | Line 579 | int    dx, dy, mov, orb;
579   }
580  
581  
582 < static
583 < getmove(ebut)                           /* get view change */
584 < XButtonPressedEvent     *ebut;
582 > static void
583 > getmove(                                /* get view change */
584 >        XButtonPressedEvent     *ebut
585 > )
586   {
587          int     movdir = MOVDIR(ebut->button);
588          int     movorb = MOVORB(ebut->state);
# Line 588 | Line 622 | XButtonPressedEvent    *ebut;
622   }
623  
624  
625 < static
626 < getkey(ekey)                            /* get input key */
627 < register XKeyPressedEvent  *ekey;
625 > static void
626 > getkey(                         /* get input key */
627 >        register XKeyPressedEvent  *ekey
628 > )
629   {
630          int  n;
631          char    buf[8];
# Line 659 | Line 694 | register XKeyPressedEvent  *ekey;
694   }
695  
696  
697 < static
698 < fixwindow(eexp)                         /* repair damage to window */
699 < register XExposeEvent  *eexp;
697 > static void
698 > fixwindow(                              /* repair damage to window */
699 >        register XExposeEvent  *eexp
700 > )
701   {
702          int     xmin, xmax, ymin, ymax;
703  
# Line 684 | Line 720 | register XExposeEvent  *eexp;
720   }
721  
722  
723 < static
724 < resizewindow(ersz)                      /* resize window */
725 < register XConfigureEvent  *ersz;
723 > static void
724 > resizewindow(                   /* resize window */
725 >        register XConfigureEvent  *ersz
726 > )
727   {
728          glViewport(0, 0, ersz->width, ersz->height);
729  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines