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

Comparing ray/src/px/xshowtrace.c (file contents):
Revision 2.5 by greg, Fri Dec 11 18:28:43 1992 UTC vs.
Revision 2.11 by greg, Tue Apr 19 18:44:22 2005 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1991 Regents of the University of California */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ LBL";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*
5   *  Display an image and watch the rays get traced.
6   *
7   *      9/21/90 Greg Ward
8   */
9  
10 + #include <X11/Xlib.h>
11 +
12   #include "standard.h"
13 + #include "paths.h"
14   #include "view.h"
15 #include "resolu.h"
16 #include <X11/Xlib.h>
15  
16   #define MAXDEPTH        32              /* ridiculous ray tree depth */
17  
# Line 23 | Line 21 | static char SCCSid[] = "$SunId$ LBL";
21   #define  sscanvec(s,v)  (sscanf(s,"%lf %lf %lf",v,v+1,v+2)==3)
22   #endif
23  
24 < char    rtcom[] = "rtrace -h- -otp -fa -x 1";
24 > char    rtcom[64] = "rtrace -h- -otp -fa -x 1";
25   char    xicom[] = "ximage -c 256";
26  
27   VIEW    ourview = STDVIEW;              /* view for picture */
# Line 47 | Line 45 | struct node {                          /* ray tree node */
45  
46   int     slow = 0;               /* slow trace? */
47  
48 + void mainloop(void);
49 + static void freetree(struct node        *tp);
50 + static void tracerays(struct node       *tp);
51 + static int strtoipt(int ipt[2], char    *str);
52 + static void setvec(int  ipt[2]);
53 + static void vector(int  ip1[2], int     ip2[2]);
54  
55 < main(argc, argv)                /* takes both the octree and the image */
56 < int     argc;
57 < char    *argv[];
55 >
56 > int
57 > main(           /* takes both the octree and the image */
58 >        int     argc,
59 >        char    *argv[]
60 > )
61   {
62          int     i;
63 <        char    combuf[256];
63 >        char    combuf[PATH_MAX];
64  
65          progname = argv[0];
66          for (i = 1; i < argc-2; i++)
67                  if (!strcmp(argv[i], "-s"))
68                          slow++;
69 +                else if (!strcmp(argv[i], "-T"))
70 +                        strcat(rtcom, " -oTp");
71                  else
72                          break;
73          if (i > argc-2) {
# Line 82 | Line 91 | char   *argv[];
91                  exit(1);
92          }
93                                          /* build input command */
94 <        sprintf(combuf, "%s %s | %s", xicom, picture, rtcom);
94 >        sprintf(combuf, "%s \"%s\" | %s", xicom, picture, rtcom);
95          for ( ; i < argc-1; i++) {
96                  strcat(combuf, " ");
97                  strcat(combuf, argv[i]);
# Line 98 | Line 107 | char   *argv[];
107   }
108  
109  
110 < mainloop()                              /* get and process input */
110 > void
111 > mainloop(void)                          /* get and process input */
112   {
113          static struct node      *sis[MAXDEPTH];
114          register struct node    *newp;
# Line 137 | Line 147 | mainloop()                             /* get and process input */
147   }
148  
149  
150 < freetree(tp)                            /* free a trace tree */
151 < struct node     *tp;
150 > static void
151 > freetree(                               /* free a trace tree */
152 >        struct node     *tp
153 > )
154   {
155 <        register struct node    *kid;
155 >        register struct node    *kid, *k2;
156  
157 <        for (kid = tp->daughter; kid != NULL; kid = kid->sister)
157 >        for (kid = tp->daughter; kid != NULL; kid = k2) {
158 >                k2 = kid->sister;
159                  freetree(kid);
160 <        free((char *)tp);
160 >        }
161 >        free((void *)tp);
162   }
163  
164  
165 < tracerays(tp)                           /* trace a ray tree */
166 < struct node     *tp;
165 > static void
166 > tracerays(                              /* trace a ray tree */
167 >        struct node     *tp
168 > )
169   {
170          register struct node    *kid;
171  
# Line 160 | Line 176 | struct node    *tp;
176   }
177  
178  
179 < strtoipt(ipt, str)              /* convert string x y z to image point */
180 < int     ipt[2];
181 < char    *str;
179 > static int
180 > strtoipt(               /* convert string x y z to image point */
181 >        int     ipt[2],
182 >        char    *str
183 > )
184   {
185          FVECT   im_pt, pt;
186  
# Line 186 | Line 204 | Window gwind = 0;
204   int     xoff, yoff;
205  
206  
207 < setvec(ipt)                     /* set up vector drawing for pick */
208 < int     ipt[2];
207 > static void
208 > setvec(                 /* set up vector drawing for pick */
209 >        int     ipt[2]
210 > )
211   {
212          extern Window   xfindwind();
213          XWindowAttributes       wa;
# Line 197 | Line 217 | int    ipt[2];
217          Window  rw, cw;
218          unsigned int    pm;
219                                          /* compute pointer location */
220 <        if (gwind == 0 &&
221 <                (gwind = xfindwind(theDisplay, rwind, picture, 4)) == 0) {
222 <                fprintf(stderr, "%s: cannot find display window!\n", progname);
223 <                exit(1);
220 >        if (gwind == 0) {
221 >                register char   *wn;
222 >                for (wn = picture; *wn; wn++);
223 >                while (wn > picture && wn[-1] != '/') wn--;
224 >                if ((gwind = xfindwind(theDisplay, rwind, wn, 4)) == 0) {
225 >                        fprintf(stderr, "%s: cannot find display window!\n",
226 >                                        progname);
227 >                        exit(1);
228 >                }
229          }
230          XQueryPointer(theDisplay, gwind, &rw, &cw, &rx, &ry, &wx, &wy, &pm);
231          xoff = wx - ipt[0];
# Line 221 | Line 246 | int    ipt[2];
246   }
247  
248  
249 < vector(ip1, ip2)                /* draw a vector */
250 < int     ip1[2], ip2[2];
249 > static void
250 > vector(         /* draw a vector */
251 >        int     ip1[2],
252 >        int     ip2[2]
253 > )
254   {
255          if (ip2[0] == -1 && ip2[1] == -1)
256                  return;                 /* null vector */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines