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

Comparing ray/src/rt/lookamb.c (file contents):
Revision 2.5 by greg, Thu Nov 18 09:43:02 1993 UTC vs.
Revision 2.17 by greg, Tue May 14 17:39:10 2019 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   *  lookamb.c - program to examine ambient components.
9 *
10 *     10/8/86
6   */
7  
8 < #include  <stdio.h>
8 > #include "copyright.h"
9  
10 < #ifdef MSDOS
11 < #include  <fcntl.h>
17 < #endif
18 <
19 < #include  "color.h"
20 <
10 > #include  "platform.h"
11 > #include  "ray.h"
12   #include  "ambient.h"
13 + #include  "resolu.h"
14  
15  
16   int  dataonly = 0;
# Line 28 | Line 20 | int  reverse = 0;
20   AMBVAL  av;
21  
22  
23 < main(argc, argv)                /* load ambient values from a file */
24 < int  argc;
25 < char  *argv[];
23 > static void
24 > lookamb(                        /* load & convert ambient values from a file */
25 >        FILE  *fp
26 > )
27   {
28 +        FVECT   norm, uvec;
29 +
30 +        while (readambval(&av, fp)) {
31 +                decodedir(norm, av.ndir);
32 +                decodedir(uvec, av.udir);
33 +                if (dataonly) {
34 +                        printf("%f\t%f\t%f\t", av.pos[0], av.pos[1], av.pos[2]);
35 +                        printf("%f\t%f\t%f\t", norm[0], norm[1], norm[2]);
36 +                        printf("%f\t%f\t%f\t", uvec[0], uvec[1], uvec[2]);
37 +                        printf("%d\t%f\t%f\t%f\t", av.lvl, av.weight,
38 +                                        av.rad[0], av.rad[1]);
39 +                        printf("%e\t%e\t%e\t", colval(av.val,RED),
40 +                                                colval(av.val,GRN),
41 +                                                colval(av.val,BLU));
42 +                        printf("%f\t%f\t", av.gpos[0], av.gpos[1]);
43 +                        printf("%f\t%f\t", av.gdir[0], av.gdir[1]);
44 +                        printf("%u\n", av.corral);
45 +                } else {
46 +                        printf("Position:\t%f\t%f\t%f\n", av.pos[0],
47 +                                        av.pos[1], av.pos[2]);
48 +                        printf("Normal:\t\t%f\t%f\t%f\n",
49 +                                        norm[0], norm[1], norm[2]);
50 +                        printf("Uvector:\t%f\t%f\t%f\n",
51 +                                        uvec[0], uvec[1], uvec[2]);
52 +                        printf("Lvl,Wt,UVrad:\t%d\t\t%f\t%f\t%f\n", av.lvl,
53 +                                        av.weight, av.rad[0], av.rad[1]);
54 +                        printf("Value:\t\t%e\t%e\t%e\n", colval(av.val,RED),
55 +                                        colval(av.val,GRN), colval(av.val,BLU));
56 +                        printf("Pos.Grad:\t%f\t%f\n", av.gpos[0], av.gpos[1]);
57 +                        printf("Dir.Grad:\t%f\t%f\n", av.gdir[0], av.gdir[1]);
58 +                        printf("Corral:\t\t%8X\n\n", av.corral);
59 +                }
60 +                if (ferror(stdout))
61 +                        exit(1);
62 +        }
63 + }
64 +
65 +
66 + static void
67 + writamb(                        /* write binary ambient values to stdout */
68 +        FILE  *fp
69 + )
70 + {
71 +        FVECT   norm;
72 +
73 +        for ( ; ; ) {
74 +                if (!dataonly)
75 +                        fscanf(fp, "%*s");
76 +                if (fscanf(fp, "%f %f %f",
77 +                                &av.pos[0], &av.pos[1], &av.pos[2]) != 3)
78 +                        return;
79 +                if (!dataonly)
80 +                        fscanf(fp, "%*s");
81 +                if (fscanf(fp, FVFORMAT, &norm[0], &norm[1], &norm[2]) != 3)
82 +                        return;
83 +                av.ndir = encodedir(norm);
84 +                if (!dataonly)
85 +                        fscanf(fp, "%*s");
86 +                if (fscanf(fp, FVFORMAT, &norm[0], &norm[1], &norm[2]) != 3)
87 +                        return;
88 +                av.udir = encodedir(norm);
89 +                if (!dataonly)
90 +                        fscanf(fp, "%*s");
91 +                if (fscanf(fp, "%hd %f %f %f", &av.lvl, &av.weight,
92 +                                &av.rad[0], &av.rad[1]) != 4)
93 +                        return;
94 +                if (!dataonly)
95 +                        fscanf(fp, "%*s");
96 +                if (fscanf(fp, "%f %f %f",
97 +                                &av.val[RED], &av.val[GRN], &av.val[BLU]) != 3)
98 +                        return;
99 +                if (!dataonly)
100 +                        fscanf(fp, "%*s");
101 +                if (fscanf(fp, "%f %f", &av.gpos[0], &av.gpos[1]) != 2)
102 +                        return;
103 +                if (!dataonly)
104 +                        fscanf(fp, "%*s");
105 +                if (fscanf(fp, "%f %f", &av.gdir[0], &av.gdir[1]) != 2)
106 +                        return;
107 +                if (dataonly) {
108 +                        if (fscanf(fp, "%u", &av.corral) != 1)
109 +                                return;
110 +                } else if (fscanf(fp, "%*s %X", &av.corral) != 1)
111 +                        return;
112 +                av.next = NULL;
113 +                writambval(&av, stdout);
114 +                if (ferror(stdout))
115 +                        exit(1);
116 +        }
117 + }
118 +
119 +
120 + int
121 + main(           /* load ambient values from a file */
122 +        int  argc,
123 +        char  *argv[]
124 + )
125 + {
126          FILE  *fp;
127          int  i;
128  
# Line 65 | Line 156 | char  *argv[];
156                  if (header) {
157                          if (checkheader(fp, "ascii", stdout) < 0)
158                                  goto formaterr;
159 <                } else
159 >                } else {
160 >                        newheader("RADIANCE", stdout);
161                          printargs(argc, argv, stdout);
162 +                }
163                  fputformat(AMBFMT, stdout);
164                  putchar('\n');
165 < #ifdef MSDOS
73 <                setmode(fileno(stdout), O_BINARY);
74 < #endif
165 >                SET_FILE_BINARY(stdout);
166                  putambmagic(stdout);
167                  writamb(fp);
168          } else {
169 < #ifdef MSDOS
79 <                setmode(fileno(fp), O_BINARY);
80 < #endif
169 >                SET_FILE_BINARY(fp);
170                  if (checkheader(fp, AMBFMT, header ? stdout : (FILE *)NULL) < 0)
171                          goto formaterr;
172                  if (!hasambmagic(fp))
# Line 93 | Line 182 | char  *argv[];
182   formaterr:
183          fprintf(stderr, "%s: format error on input\n", argv[0]);
184          exit(1);
96 }
97
98
99 lookamb(fp)                     /* get ambient values from a file */
100 FILE  *fp;
101 {
102        while (readambval(&av, fp)) {
103                if (dataonly) {
104                        printf("%f\t%f\t%f\t", av.pos[0], av.pos[1], av.pos[2]);
105                        printf("%f\t%f\t%f\t", av.dir[0], av.dir[1], av.dir[2]);
106                        printf("%d\t%f\t%f\t", av.lvl, av.weight, av.rad);
107                        printf("%e\t%e\t%e\t", colval(av.val,RED),
108                                                colval(av.val,GRN),
109                                                colval(av.val,BLU));
110                        printf("%f\t%f\t%f\t", av.gpos[0],
111                                        av.gpos[1], av.gpos[2]);
112                        printf("%f\t%f\t%f\n", av.gdir[0],
113                                        av.gdir[1], av.gdir[2]);
114                } else {
115                        printf("\nPosition:\t%f\t%f\t%f\n", av.pos[0],
116                                        av.pos[1], av.pos[2]);
117                        printf("Direction:\t%f\t%f\t%f\n", av.dir[0],
118                                        av.dir[1], av.dir[2]);
119                        printf("Lvl,Wt,Rad:\t%d\t\t%f\t%f\n", av.lvl,
120                                        av.weight, av.rad);
121                        printf("Value:\t\t%e\t%e\t%e\n", colval(av.val,RED),
122                                        colval(av.val,GRN), colval(av.val,BLU));
123                        printf("Pos.Grad:\t%f\t%f\t%f\n", av.gpos[0],
124                                        av.gpos[1], av.gpos[2]);
125                        printf("Dir.Grad:\t%f\t%f\t%f\n", av.gdir[0],
126                                        av.gdir[1], av.gdir[2]);
127                }
128                if (ferror(stdout))
129                        exit(1);
130        }
131 }
132
133
134 writamb(fp)                     /* write binary ambient values */
135 FILE  *fp;
136 {
137        for ( ; ; ) {
138                if (!dataonly)
139                        fscanf(fp, "%*s");
140                if (fscanf(fp, "%f %f %f",
141                                &av.pos[0], &av.pos[1], &av.pos[2]) != 3)
142                        return;
143                if (!dataonly)
144                        fscanf(fp, "%*s");
145                if (fscanf(fp, "%f %f %f",
146                                &av.dir[0], &av.dir[1], &av.dir[2]) != 3)
147                        return;
148                if (!dataonly)
149                        fscanf(fp, "%*s");
150                if (fscanf(fp, "%d %f %f",
151                                &av.lvl, &av.weight, &av.rad) != 3)
152                        return;
153                if (!dataonly)
154                        fscanf(fp, "%*s");
155                if (fscanf(fp, "%f %f %f",
156                                &av.val[RED], &av.val[GRN], &av.val[BLU]) != 3)
157                        return;
158                if (!dataonly)
159                        fscanf(fp, "%*s");
160                if (fscanf(fp, "%f %f %f",
161                                &av.gpos[0], &av.gpos[1], &av.gpos[2]) != 3)
162                        return;
163                if (!dataonly)
164                        fscanf(fp, "%*s");
165                if (fscanf(fp, "%f %f %f",
166                                &av.gdir[0], &av.gdir[1], &av.gdir[2]) != 3)
167                        return;
168                av.next = NULL;
169                writambval(&av, stdout);
170                if (ferror(stdout))
171                        exit(1);
172        }
185   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines