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) |
212 |
|
dev_input() /* get X11 input */ |
213 |
|
{ |
214 |
|
inpresflags = 0; |
215 |
+ |
|
216 |
|
do |
217 |
|
getevent(); |
218 |
|
|
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) |
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))); |
474 |
|
case 'H': /* turn off height motion lock */ |
475 |
|
headlocked = 0; |
476 |
|
return; |
477 |
< |
case CTRL('Z'): |
477 |
> |
case CTRL('S'): |
478 |
|
case 'p': /* pause computation */ |
479 |
|
inpresflags |= DEV_WAIT; |
480 |
|
return; |
481 |
+ |
case 'v': /* spit out view */ |
482 |
+ |
fputs(VIEWSTR, stderr); |
483 |
+ |
fprintview(&odev.v, stderr); |
484 |
+ |
fputc('\n', stderr); |
485 |
+ |
return; |
486 |
+ |
case CTRL('Q'): |
487 |
|
case '\n': |
488 |
< |
case '\r': /* release */ |
488 |
> |
case '\r': /* resume computation */ |
489 |
> |
inpresflags |= DEV_RESUME; |
490 |
> |
return; |
491 |
> |
case CTRL('R'): /* redraw screen */ |
492 |
> |
if (ncolors > 0) |
493 |
> |
new_ctab(ncolors); |
494 |
> |
qtRedraw(0, 0, odev.hres, odev.vres); |
495 |
> |
return; |
496 |
> |
case CTRL('L'): /* refresh from server */ |
497 |
> |
XClearWindow(ourdisplay, gwind); |
498 |
> |
qtCompost(100); /* unload the old tree */ |
499 |
> |
if (ncolors > 0) |
500 |
> |
new_ctab(ncolors); |
501 |
> |
inpresflags |= DEV_REDRAW; /* resend values from server */ |
502 |
|
return; |
503 |
|
case CTRL('D'): |
504 |
|
case 'Q': |