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.8 by greg, Sun Jun 14 00:33:16 2009 UTC

# Line 31 | Line 31 | main(
31          register int    i;
32  
33          progname = argv[0];
34 <        if (argc != 2)
35 <                goto userr;
36 <        while (fgets(linebuf, sizeof(linebuf), stdin) != NULL) {
37 <                if (linebuf[0] == '\n')
38 <                        break;
39 <                if (isview(linebuf) && sscanview(&vw, linebuf) > 0)
40 <                        gotview++;
34 >        ++argv; --argc;
35 >        while (argc && argv[0][0] == '-' && argv[0][1] == 'v') {
36 >                int     rv;
37 >                if (argc > 2 && argv[0][2] == 'f') {
38 >                        rv = viewfile(argv[1], &vw, NULL);
39 >                        if (rv <= 0) {
40 >                                fprintf(stderr, "%s: %s file '%s'\n",
41 >                                                progname,
42 >                                                rv < 0 ? "cannot open view" :
43 >                                                "no view in", argv[1]);
44 >                                exit(1);
45 >                        }
46 >                        ++gotview;
47 >                        ++argv; --argc;
48 >                } else {
49 >                        rv = getviewopt(&vw, argc, argv);
50 >                        if (rv < 0) {
51 >                                fprintf(stderr, "%s: bad view option at '%s'\n",
52 >                                                progname, argv[0]);
53 >                                exit(1);
54 >                        }
55 >                        ++gotview;
56 >                        argv += rv; argc -= rv;
57 >                }
58 >                ++argv; --argc;
59          }
60 +        if (argc != 1)
61 +                goto userr;
62 +        if (!gotview)
63 +                while (fgets(linebuf, sizeof(linebuf), stdin) != NULL) {
64 +                        if (linebuf[0] == '\n')
65 +                                break;
66 +                        if (isview(linebuf) && sscanview(&vw, linebuf) > 0)
67 +                                ++gotview;
68 +                }
69          if (!gotview) {
70                  fprintf(stderr, "%s: no view on standard input\n", progname);
71                  exit(1);
# Line 51 | Line 78 | main(
78          normalize(hvn);
79          VCOPY(vvn, vw.vvec);
80          normalize(vvn);
81 <        if (isalpha(argv[1][0])) {      /* print out variables */
81 >        if (isalpha(argv[0][0])) {      /* print out variables */
82                  switch (vw.type) {
83                          case VT_PER: i=1; break;
84                          case VT_PAR: i=2; break;
# Line 61 | Line 88 | main(
88                          case VT_PLS: i=6; break;
89                          default: i=0; break;
90                  }
91 <                printf("%st:%d;", argv[1], i);
92 <                printf("%spx:%g;%spy:%g;%spz:%g;", argv[1], vw.vp[0],
93 <                                argv[1], vw.vp[1], argv[1], vw.vp[2]);
94 <                printf("%sdx:%g;%sdy:%g;%sdz:%g;", argv[1], vw.vdir[0],
95 <                                argv[1], vw.vdir[1], argv[1], vw.vdir[2]);
96 <                printf("%sd:%g;", argv[1], vw.vdist);
97 <                printf("%sux:%g;%suy:%g;%suz:%g;", argv[1], vw.vup[0],
98 <                                argv[1], vw.vup[1], argv[1], vw.vup[2]);
99 <                printf("%sh:%g;%sv:%g;", argv[1], vw.horiz,
100 <                                argv[1], vw.vert);
91 >                printf("%st:%d;", argv[0], i);
92 >                printf("%spx:%g;%spy:%g;%spz:%g;", argv[0], vw.vp[0],
93 >                                argv[0], vw.vp[1], argv[0], vw.vp[2]);
94 >                printf("%sdx:%g;%sdy:%g;%sdz:%g;", argv[0], vw.vdir[0],
95 >                                argv[0], vw.vdir[1], argv[0], vw.vdir[2]);
96 >                printf("%sd:%g;", argv[0], vw.vdist);
97 >                printf("%sux:%g;%suy:%g;%suz:%g;", argv[0], vw.vup[0],
98 >                                argv[0], vw.vup[1], argv[0], vw.vup[2]);
99 >                printf("%sh:%g;%sv:%g;", argv[0], vw.horiz,
100 >                                argv[0], vw.vert);
101                  printf("%ss:%g;%sl:%g;%so:%g;%sa:%g;",
102 <                                argv[1], vw.hoff, argv[1], vw.voff,
103 <                                argv[1], vw.vfore, argv[1], vw.vaft);
102 >                                argv[0], vw.hoff, argv[0], vw.voff,
103 >                                argv[0], vw.vfore, argv[0], vw.vaft);
104                  printf("%shx:%g;%shy:%g;%shz:%g;%shn:%g;",
105 <                                argv[1], hvn[0], argv[1], hvn[1],
106 <                                argv[1], hvn[2], argv[1], sqrt(vw.hn2));
105 >                                argv[0], hvn[0], argv[0], hvn[1],
106 >                                argv[0], hvn[2], argv[0], sqrt(vw.hn2));
107                  printf("%svx:%g;%svy:%g;%svz:%g;%svn:%g;\n",
108 <                                argv[1], vvn[0], argv[1], vvn[1],
109 <                                argv[1], vvn[2], argv[1], sqrt(vw.vn2));
108 >                                argv[0], vvn[0], argv[0], vvn[1],
109 >                                argv[0], vvn[2], argv[0], sqrt(vw.vn2));
110                  exit(0);
111          }
112 <        if (!isflt(argv[1]))
112 >        if (!isflt(argv[0]))
113                  goto userr;
114 <        dist = atof(argv[1]);
114 >        dist = atof(argv[0]);
115          for (i = 0; i < 3; i++)
116                  vw.vp[i] += dist*hvn[i];
117          fprintview(&vw, stdout);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines