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

Comparing ray/src/util/vwright.c (file contents):
Revision 2.7 by greg, Tue Mar 11 02:21:47 2008 UTC vs.
Revision 2.12 by greg, Sat Jun 7 05:09:46 2025 UTC

# Line 7 | Line 7 | static const char      RCSid[] = "$Id$";
7  
8  
9   #include "standard.h"
10 <
10 > #include "paths.h"
11   #include "view.h"
12  
13   #include <ctype.h>
14  
15   VIEW    vw = STDVIEW;
16  
17 char    *progname;
17  
19
18   int
19   main(
20          int     argc,
21          char    *argv[]
22   )
23   {
26        char    linebuf[256];
24          char    *err;
25          int     gotview = 0;
26          FVECT   hvn, vvn;
27          double  dist;
28 <        register int    i;
28 >        int     i;
29  
30 <        progname = argv[0];
31 <        if (argc != 2)
32 <                goto userr;
33 <        while (fgets(linebuf, sizeof(linebuf), stdin) != NULL) {
34 <                if (linebuf[0] == '\n')
35 <                        break;
36 <                if (isview(linebuf) && sscanview(&vw, linebuf) > 0)
37 <                        gotview++;
30 >        fixargv0(argv[0]);              /* sets global progname */
31 >        ++argv; --argc;
32 >        while (argc && argv[0][0] == '-' && argv[0][1] == 'v') {
33 >                int     rv;
34 >                if (argc > 2 && argv[0][2] == 'f') {
35 >                        rv = viewfile(argv[1], &vw, NULL);
36 >                        if (rv <= 0) {
37 >                                fprintf(stderr, "%s: %s file '%s'\n",
38 >                                                progname,
39 >                                                rv < 0 ? "cannot open view" :
40 >                                                "no view in", argv[1]);
41 >                                exit(1);
42 >                        }
43 >                        ++gotview;
44 >                        ++argv; --argc;
45 >                } else {
46 >                        rv = getviewopt(&vw, argc, argv);
47 >                        if (rv < 0) {
48 >                                fprintf(stderr, "%s: bad view option at '%s'\n",
49 >                                                progname, argv[0]);
50 >                                exit(1);
51 >                        }
52 >                        ++gotview;
53 >                        argv += rv; argc -= rv;
54 >                }
55 >                ++argv; --argc;
56          }
57 +        if (argc != 1)
58 +                goto userr;
59          if (!gotview) {
60 <                fprintf(stderr, "%s: no view on standard input\n", progname);
61 <                exit(1);
60 >                gotview = viewfile(NULL, &vw, NULL);
61 >                if (gotview <= 0) {
62 >                        fprintf(stderr, "%s: no view on standard input\n",
63 >                                                progname);
64 >                        exit(1);
65 >                }
66          }
67          if ((err= setview(&vw)) != NULL) {
68                  fprintf(stderr, "%s: %s\n", progname, err);
# Line 51 | Line 72 | main(
72          normalize(hvn);
73          VCOPY(vvn, vw.vvec);
74          normalize(vvn);
75 <        if (isalpha(argv[1][0])) {      /* print out variables */
75 >        if (isalpha(argv[0][0])) {      /* print out variables */
76                  switch (vw.type) {
77                          case VT_PER: i=1; break;
78                          case VT_PAR: i=2; break;
# Line 61 | Line 82 | main(
82                          case VT_PLS: i=6; break;
83                          default: i=0; break;
84                  }
85 <                printf("%st:%d;", argv[1], i);
86 <                printf("%spx:%g;%spy:%g;%spz:%g;", argv[1], vw.vp[0],
87 <                                argv[1], vw.vp[1], argv[1], vw.vp[2]);
88 <                printf("%sdx:%g;%sdy:%g;%sdz:%g;", argv[1], vw.vdir[0],
89 <                                argv[1], vw.vdir[1], argv[1], vw.vdir[2]);
90 <                printf("%sd:%g;", argv[1], vw.vdist);
91 <                printf("%sux:%g;%suy:%g;%suz:%g;", argv[1], vw.vup[0],
92 <                                argv[1], vw.vup[1], argv[1], vw.vup[2]);
93 <                printf("%sh:%g;%sv:%g;", argv[1], vw.horiz,
94 <                                argv[1], vw.vert);
85 >                printf("%st:%d;", argv[0], i);
86 >                printf("%spx:%g;%spy:%g;%spz:%g;", argv[0], vw.vp[0],
87 >                                argv[0], vw.vp[1], argv[0], vw.vp[2]);
88 >                printf("%sdx:%g;%sdy:%g;%sdz:%g;", argv[0], vw.vdir[0],
89 >                                argv[0], vw.vdir[1], argv[0], vw.vdir[2]);
90 >                printf("%sd:%g;", argv[0], vw.vdist);
91 >                printf("%sux:%g;%suy:%g;%suz:%g;", argv[0], vw.vup[0],
92 >                                argv[0], vw.vup[1], argv[0], vw.vup[2]);
93 >                printf("%sh:%g;%sv:%g;", argv[0], vw.horiz,
94 >                                argv[0], vw.vert);
95                  printf("%ss:%g;%sl:%g;%so:%g;%sa:%g;",
96 <                                argv[1], vw.hoff, argv[1], vw.voff,
97 <                                argv[1], vw.vfore, argv[1], vw.vaft);
96 >                                argv[0], vw.hoff, argv[0], vw.voff,
97 >                                argv[0], vw.vfore, argv[0], vw.vaft);
98                  printf("%shx:%g;%shy:%g;%shz:%g;%shn:%g;",
99 <                                argv[1], hvn[0], argv[1], hvn[1],
100 <                                argv[1], hvn[2], argv[1], sqrt(vw.hn2));
99 >                                argv[0], hvn[0], argv[0], hvn[1],
100 >                                argv[0], hvn[2], argv[0], sqrt(vw.hn2));
101                  printf("%svx:%g;%svy:%g;%svz:%g;%svn:%g;\n",
102 <                                argv[1], vvn[0], argv[1], vvn[1],
103 <                                argv[1], vvn[2], argv[1], sqrt(vw.vn2));
102 >                                argv[0], vvn[0], argv[0], vvn[1],
103 >                                argv[0], vvn[2], argv[0], sqrt(vw.vn2));
104                  exit(0);
105          }
106 <        if (!isflt(argv[1]))
106 >        if (!isflt(argv[0]))
107                  goto userr;
108 <        dist = atof(argv[1]);
109 <        for (i = 0; i < 3; i++)
89 <                vw.vp[i] += dist*hvn[i];
108 >        dist = atof(argv[0]);
109 >        VSUM(vw.vp, vw.vp, hvn, dist);
110          fprintview(&vw, stdout);
111 <        putchar('\n');
111 >        fputc('\n', stdout);
112          exit(0);
113   userr:
114 <        fprintf(stderr, "Usage: %s {offset|name}\n", progname);
114 >        fprintf(stderr, "Usage: %s [view options] {offset|name}\n", progname);
115          exit(1);
116   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines