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

Comparing ray/src/hd/rhd_x11.c (file contents):
Revision 3.3 by gregl, Fri Nov 21 10:17:14 1997 UTC vs.
Revision 3.8 by gregl, Tue Nov 25 11:21:50 1997 UTC

# Line 100 | Line 100 | char  *id;
100          XSizeHints      oursizhints;
101                                          /* set quadtree globals */
102          qtDepthEps = 0.02;
103 <        qtMinNodesiz = 1;
103 >        qtMinNodesiz = 2;
104                                          /* open display server */
105          ourdisplay = XOpenDisplay(NULL);
106          if (ourdisplay == NULL)
# Line 212 | Line 212 | int
212   dev_input()                     /* get X11 input */
213   {
214          inpresflags = 0;
215 +
216          do
217                  getevent();
218  
# Line 384 | Line 385 | int    dx, dy, move;
385   {
386          VIEW    nv;
387          double  d;
388 <        register int    i;
388 >        register int    i, li;
389                                  /* start with old view */
390          copystruct(&nv, &odev.v);
391                                  /* change view direction */
392          if (move) {
393 <                register RLEAF  *lp;
393 <                if ((lp = qtFindLeaf(dx, dy)) == NULL)
393 >                if ((li = qtFindLeaf(dx, dy)) < 0)
394                          return(0);      /* not on window */
395                  for (i = 0; i < 3; i++)
396 <                        nv.vdir[i] = lp->wp[i] - nv.vp[i];
396 >                        nv.vdir[i] = qtL.wp[li][i] - nv.vp[i];
397          } else {
398                  if (viewray(nv.vp, nv.vdir, &odev.v,
399                                  (dx+.5)/odev.hres, (dy+.5)/odev.vres) < -FTINY)
# Line 440 | Line 440 | XButtonPressedEvent    *ebut;
440  
441                  if (!moveview(wx, odev.vres-1-wy, MOVDIR(whichbutton)))
442                          sleep(1);
443 +                else
444 +                        qtUpdate();
445  
446          } while (!XCheckMaskEvent(ourdisplay,
447                          ButtonReleaseMask, levptr(XEvent)));
# Line 449 | Line 451 | XButtonPressedEvent    *ebut;
451                  wx = levptr(XButtonReleasedEvent)->x;
452                  wy = levptr(XButtonReleasedEvent)->y;
453                  moveview(wx, odev.vres-1-wy, MOVDIR(whichbutton));
454 +                dev_flush();
455          }
456  
457          qtMinNodesiz = oldnodesiz;      /* restore quadtree resolution */
# Line 472 | Line 475 | register XKeyPressedEvent  *ekey;
475          case 'H':                       /* turn off height motion lock */
476                  headlocked = 0;
477                  return;
478 <        case CTRL('Z'):
478 >        case CTRL('S'):
479          case 'p':                       /* pause computation */
480                  inpresflags |= DEV_WAIT;
481                  return;
482 +        case 'v':                       /* spit out view */
483 +                fputs(VIEWSTR, stderr);
484 +                fprintview(&odev.v, stderr);
485 +                fputc('\n', stderr);
486 +                return;
487 +        case CTRL('Q'):
488          case '\n':
489 <        case '\r':                      /* release */
489 >        case '\r':                      /* resume computation */
490 >                inpresflags |= DEV_RESUME;
491                  return;
492 <        case CTRL('R'):                 /* redraw */
492 >        case CTRL('R'):                 /* redraw screen */
493                  if (ncolors > 0)
494                          new_ctab(ncolors);
495                  qtRedraw(0, 0, odev.hres, odev.vres);
496 +                return;
497 +        case CTRL('L'):                 /* refresh from server */
498 +                if (inpresflags & DEV_REDRAW)
499 +                        return;
500 +                XClearWindow(ourdisplay, gwind);
501 +                XFlush(ourdisplay);
502 +                qtCompost(100);                 /* unload the old tree */
503 +                if (ncolors > 0)
504 +                        new_ctab(ncolors);
505 +                inpresflags |= DEV_REDRAW;      /* resend values from server */
506                  return;
507          case CTRL('D'):
508          case 'Q':

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines