97 |
|
|
98 |
|
static void startrtrace(char *octname); |
99 |
|
static void runrad(int ac, char **av); |
100 |
< |
static int findvw(register char *nm); |
101 |
< |
static int varmatch(register char *s, register char *vn); |
100 |
> |
static int findvw(char *nm); |
101 |
> |
static int varmatch(char *s, char *vn); |
102 |
|
static char * scan4var(char *buf, int buflen, char *vname, FILE *fp); |
103 |
|
static void dev_open(char *id); |
104 |
|
static void dev_close(void); |
105 |
< |
static int dev_view(register VIEW *nv); |
105 |
> |
static int dev_view(VIEW *nv); |
106 |
|
static int dev_input(int nsecs); |
107 |
|
static void render(void); |
108 |
|
static int moveview(int dx, int dy, int mov, int orb); |
109 |
|
static void waitabit(void); |
110 |
|
static void getmove(XButtonPressedEvent *ebut); |
111 |
|
static int getintersect(FVECT wp, FVECT org, FVECT dir, double md); |
112 |
< |
static void setglpersp(register VIEW *vp); |
113 |
< |
static int getkey(register XKeyPressedEvent *ekey); |
112 |
> |
static void setglpersp(VIEW *vp); |
113 |
> |
static int getkey(XKeyPressedEvent *ekey); |
114 |
|
static void zoomview(int pct, int dx, int dy); |
115 |
|
static void gotoview(int vwnum); |
116 |
|
static void appendview(char *nm, VIEW *vp); |
117 |
|
static void copylastv(char *cause); |
118 |
< |
static void fixwindow(register XExposeEvent *eexp); |
119 |
< |
static void resizewindow(register XConfigureEvent *ersz); |
118 |
> |
static void fixwindow(XExposeEvent *eexp); |
119 |
> |
static void resizewindow(XConfigureEvent *ersz); |
120 |
|
|
121 |
|
|
122 |
|
int |
245 |
|
static char optfile[] = TEMPLATE; |
246 |
|
int nvn = 0, nvv = 0; |
247 |
|
FILE *fp; |
248 |
< |
register char *cp; |
248 |
> |
char *cp; |
249 |
|
char radcomm[256], buf[128], nam[32]; |
250 |
|
/* set rad commmand */ |
251 |
|
strcpy(radcomm, "rad -w -v 0 "); /* look out below! */ |
281 |
|
eyedist = atof(cp); |
282 |
|
/* look for materials */ |
283 |
|
while ((cp = scan4var(buf, sizeof(buf), "materials", fp)) != NULL) { |
284 |
< |
nscenef += wordstring(scene+nscenef, cp); |
284 |
> |
nscenef += wordstring(scene+nscenef, MAXSCENE-nscenef, cp); |
285 |
|
buf[0] = '\0'; |
286 |
|
} |
287 |
|
/* look for octree */ |
289 |
|
octree = savqstr(cp); |
290 |
|
/* look for scene files */ |
291 |
|
while ((cp = scan4var(buf, sizeof(buf), "scene", fp)) != NULL) { |
292 |
< |
nscenef += wordstring(scene+nscenef, cp); |
292 |
> |
nscenef += wordstring(scene+nscenef, MAXSCENE-nscenef, cp); |
293 |
|
buf[0] = '\0'; |
294 |
|
} |
295 |
|
/* load view names */ |
335 |
|
|
336 |
|
static int |
337 |
|
findvw( /* find named view */ |
338 |
< |
register char *nm |
338 |
> |
char *nm |
339 |
|
) |
340 |
|
{ |
341 |
< |
register int n; |
341 |
> |
int n; |
342 |
|
|
343 |
|
if ((*nm >= '1') & (*nm <= '9') && |
344 |
|
(n = atoi(nm)-1) <= MAXVIEW && vwl[n].v != NULL) |
352 |
|
|
353 |
|
static int |
354 |
|
varmatch( /* match line to variable */ |
355 |
< |
register char *s, |
356 |
< |
register char *vn |
355 |
> |
char *s, |
356 |
> |
char *vn |
357 |
|
) |
358 |
|
{ |
359 |
< |
register int c; |
359 |
> |
int c; |
360 |
|
|
361 |
|
for ( ; *vn && *s == *vn; s++, vn++) |
362 |
|
; |
379 |
|
) |
380 |
|
{ |
381 |
|
int cval; |
382 |
< |
register char *cp; |
382 |
> |
char *cp; |
383 |
|
/* search out matching line */ |
384 |
|
while ((cval = varmatch(buf, vname))) { |
385 |
|
if (cval > 0) /* gone too far? */ |
449 |
|
/* set window manager hints */ |
450 |
|
ourxwmhints.flags = InputHint|IconPixmapHint; |
451 |
|
ourxwmhints.input = True; |
452 |
< |
ourxwmhints.icon_pixmap = XCreateBitmapFromData(ourdisplay, |
453 |
< |
gwind, glradicon_bits, glradicon_width, glradicon_height); |
452 |
> |
ourxwmhints.icon_pixmap = XCreateBitmapFromData(ourdisplay, gwind, |
453 |
> |
(char *)glradicon_bits, glradicon_width, glradicon_height); |
454 |
|
XSetWMHints(ourdisplay, gwind, &ourxwmhints); |
455 |
|
/* set GLX context */ |
456 |
|
glXMakeCurrent(ourdisplay, gwind, gctx); |
501 |
|
|
502 |
|
static int |
503 |
|
dev_view( /* assign new driver view */ |
504 |
< |
register VIEW *nv |
504 |
> |
VIEW *nv |
505 |
|
) |
506 |
|
{ |
507 |
|
int newhres = hres, newvres = vres; |
539 |
|
XResizeWindow(ourdisplay, gwind, newhres, newvres); |
540 |
|
do |
541 |
|
dev_input(0); /* get resize event */ |
542 |
< |
while ((newhres != hres) | (newvres != vres)); |
542 |
> |
while ((newhres != hres) & (newvres != vres)); |
543 |
|
no_render--; |
544 |
|
} |
545 |
|
} |
646 |
|
VSUM(nv.vp, wp, odir, -1.); |
647 |
|
spinvector(nv.vdir, nv.vdir, nv.vup, d); |
648 |
|
} else if (orb) { /* orbit up/down */ |
649 |
< |
fcross(v1, odir, nv.vup); |
650 |
< |
if (normalize(v1) == 0.) |
649 |
> |
if (geodesic(odir, odir, nv.vup, |
650 |
> |
d=MOVDEG*PI/180.*orb, GEOD_RAD) == 0.0) |
651 |
|
return(0); |
652 |
– |
spinvector(odir, odir, v1, d=MOVDEG*PI/180.*orb); |
652 |
|
VSUM(nv.vp, wp, odir, -1.); |
653 |
< |
spinvector(nv.vdir, nv.vdir, v1, d); |
653 |
> |
geodesic(nv.vdir, nv.vdir, nv.vup, d, GEOD_RAD); |
654 |
|
} else if (mov) { /* move forward/backward */ |
655 |
|
d = MOVPCT/100. * mov; |
656 |
|
VSUM(nv.vp, nv.vp, odir, d); |
672 |
|
{ |
673 |
|
struct timespec ts; |
674 |
|
ts.tv_sec = 0; |
675 |
< |
ts.tv_nsec = 5000000; |
675 |
> |
ts.tv_nsec = 50000000; |
676 |
|
nanosleep(&ts, NULL); |
677 |
|
} |
678 |
|
|
748 |
|
|
749 |
|
static void |
750 |
|
setglpersp( /* set perspective view in GL */ |
751 |
< |
register VIEW *vp |
751 |
> |
VIEW *vp |
752 |
|
) |
753 |
|
{ |
754 |
|
double d, xmin, xmax, ymin, ymax, zmin, zmax; |
782 |
|
|
783 |
|
static int |
784 |
|
getkey( /* get input key */ |
785 |
< |
register XKeyPressedEvent *ekey |
785 |
> |
XKeyPressedEvent *ekey |
786 |
|
) |
787 |
|
{ |
788 |
|
int n; |
931 |
|
|
932 |
|
static void |
933 |
|
fixwindow( /* repair damage to window */ |
934 |
< |
register XExposeEvent *eexp |
934 |
> |
XExposeEvent *eexp |
935 |
|
) |
936 |
|
{ |
937 |
|
if ((hres == 0) | (vres == 0)) { /* first exposure */ |
947 |
|
|
948 |
|
static void |
949 |
|
resizewindow( /* resize window */ |
950 |
< |
register XConfigureEvent *ersz |
950 |
> |
XConfigureEvent *ersz |
951 |
|
) |
952 |
|
{ |
953 |
|
static char resizing[] = "resizing window"; |