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

Comparing ray/src/hd/rhd_ogl.c (file contents):
Revision 3.26 by greg, Fri Jan 7 20:33:02 2005 UTC vs.
Revision 3.31 by greg, Thu Sep 6 00:07:43 2012 UTC

# Line 235 | Line 235 | char  *id;
235                                          /* set window manager hints */
236          ourxwmhints.flags = InputHint|IconPixmapHint;
237          ourxwmhints.input = True;
238 <        ourxwmhints.icon_pixmap = XCreateBitmapFromData(ourdisplay,
239 <                        gwind, x11icon_bits, x11icon_width, x11icon_height);
238 >        ourxwmhints.icon_pixmap = XCreateBitmapFromData(ourdisplay, gwind,
239 >                        (char *)x11icon_bits, x11icon_width, x11icon_height);
240          XSetWMHints(ourdisplay, gwind, &ourxwmhints);
241          oursizhints.min_width = MINWIDTH;
242   #ifdef STEREO
# Line 324 | Line 324 | dev_view(                      /* assign new driver view */
324          register VIEW   *nv
325   )
326   {
327 + #ifdef STEREO
328 +        double  d;
329 + #endif
330          if (nv->type != VT_PER ||               /* check view legality */
331                          nv->horiz > 160. || nv->vert > 160.) {
332                  error(COMMAND, "illegal view type/angle");
# Line 765 | Line 768 | moveview(      /* move our view */
768   {
769          VIEW    nv;
770          FVECT   odir, v1, wip;
771 <        double  d, d1;
771 >        double  d;
772 > #ifdef DOBJ
773 >        double d1;
774 > #endif
775                                  /* start with old view */
776          nv = odev.v;
777                                  /* orient our motion */
# Line 790 | Line 796 | moveview(      /* move our view */
796                  VSUM(nv.vp, wip, odir, -1.);
797                  spinvector(nv.vdir, nv.vdir, nv.vup, d);
798          } else if (orb) {               /* orbit up/down */
799 <                fcross(v1, odir, nv.vup);
800 <                if (normalize(v1) == 0.)
799 >                if (geodesic(odir, odir, nv.vup,
800 >                                d=MOVDEG*PI/180.*orb, GEOD_RAD) == 0.0)
801                          return(0);
796                spinvector(odir, odir, v1, d=MOVDEG*PI/180.*orb);
802                  VSUM(nv.vp, wip, odir, -1.);
803 <                spinvector(nv.vdir, nv.vdir, v1, d);
803 >                geodesic(nv.vdir, nv.vdir, nv.vup, d, GEOD_RAD);
804          } else if (mov) {               /* move forward/backward */
805                  d = MOVPCT/100. * mov;
806                  VSUM(nv.vp, nv.vp, odir, d);
# Line 819 | Line 824 | getframe(                              /* get focus frame */
824   )
825   {
826          int     startx = ebut->x, starty = ebut->y;
827 <        int     endx, endy;
828 <
827 >        int     endx, endy, midx, midy;
828 >        FVECT   odir, v1;
829 >        double  d;
830 > #ifdef DOBJ
831 >        double d1;
832 > #endif
833 >                                                /* get mouse drag */
834          XMaskEvent(ourdisplay, ButtonReleaseMask, levptr(XEvent));
835          endx = levptr(XButtonReleasedEvent)->x;
836          endy = levptr(XButtonReleasedEvent)->y;
837 <        if ((endx == startx) | (endy == starty)) {
838 <                XBell(ourdisplay, 0);
837 >        midx = (startx + endx) >> 1;
838 >        midy = (starty + endy) >> 1;
839 >                                                /* set focus distance */
840 >        if (viewray(v1, odir, &odev.v,
841 >                        (midx+.5)/odev.hres, (midy+.5)/odev.vres) < -FTINY)
842                  return;
843 <        }
843 >        d = getdistance(midx, midy, odir);      /* distance from front plane */
844 > #ifdef DOBJ
845 >        d1 = dobj_trace(NULL, v1, odir);
846 >        if (d1 < d)
847 >                d = d1;
848 > #endif
849 >        if (d < .99*FHUGE)
850 >                odev.v.vdist = d + sqrt(dist2(v1, odev.v.vp));
851 >                                                /* set frame for rendering */
852 >        if ((endx == startx) | (endy == starty))
853 >                return;
854          if (endx < startx) {register int c = endx; endx = startx; startx = c;}
855          if (endy < starty) {register int c = endy; endy = starty; starty = c;}
856          sprintf(odev_args, "%.3f %.3f %.3f %.3f",

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines