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

Comparing ray/src/cv/rad2mgf.c (file contents):
Revision 2.23 by schorsch, Sat Nov 15 17:54:06 2003 UTC vs.
Revision 2.24 by greg, Wed Dec 28 18:35:42 2005 UTC

# Line 51 | Line 51 | struct vert {
51  
52   LUTAB   vertab = LU_SINIT(free,NULL);   /* our vertex lookup table */
53  
54 < static void rad2mgf(char *inp);
55 < static void cvtprim(char *inp, char *mod, char *typ, char *id, FUNARGS *fa);
56 < static void newmat(char *id, char *alias);
57 < static void setmat(char *id);
58 < static void setobj(char *id);
59 < static void init(void);
60 < static void uninit(void);
61 < static void clrverts(void);
62 < static void add2dispatch(char *name, int (*func)());
63 < static char *getvertid(char *vname, FVECT vp);
64 < static int o_unsupported(char *mod, char *typ, char *id, FUNARGS *fa);
65 < static int o_face(char *mod, char *typ, char *id, FUNARGS *fa);
66 < static int o_cone(char *mod, char *typ, char *id, FUNARGS *fa);
67 < static int o_sphere(char *mod, char *typ, char *id, FUNARGS *fa);
68 < static int o_cylinder(char *mod, char *typ, char *id, FUNARGS *fa);
69 < static int o_ring(char *mod, char *typ, char *id, FUNARGS *fa);
70 < static int o_instance(char *mod, char *typ, char *id, FUNARGS *fa);
71 < static int o_illum(char *mod, char *typ, char *id, FUNARGS *fa);
72 < static int o_plastic(char *mod, char *typ, char *id, FUNARGS *fa);
73 < static int o_metal(char *mod, char *typ, char *id, FUNARGS *fa);
74 < static int o_glass(char *mod, char *typ, char *id, FUNARGS *fa);
75 < static int o_dielectric(char *mod, char *typ, char *id, FUNARGS *fa);
76 < static int o_mirror(char *mod, char *typ, char *id, FUNARGS *fa);
77 < static int o_trans(char *mod, char *typ, char *id, FUNARGS *fa);
78 < static int o_light(char *mod, char *typ, char *id, FUNARGS *fa);
54 > void rad2mgf(char *inp);
55 > void cvtprim(char *inp, char *mod, char *typ, char *id, FUNARGS *fa);
56 > void newmat(char *id, char *alias);
57 > void setmat(char *id);
58 > void setobj(char *id);
59 > void init(void);
60 > void uninit(void);
61 > void clrverts(void);
62 > void unspace(char *s);
63 > void add2dispatch(char *name, int (*func)());
64 > char *getvertid(char *vname, FVECT vp);
65 > int o_unsupported(char *mod, char *typ, char *id, FUNARGS *fa);
66 > int o_face(char *mod, char *typ, char *id, FUNARGS *fa);
67 > int o_cone(char *mod, char *typ, char *id, FUNARGS *fa);
68 > int o_sphere(char *mod, char *typ, char *id, FUNARGS *fa);
69 > int o_cylinder(char *mod, char *typ, char *id, FUNARGS *fa);
70 > int o_ring(char *mod, char *typ, char *id, FUNARGS *fa);
71 > int o_instance(char *mod, char *typ, char *id, FUNARGS *fa);
72 > int o_illum(char *mod, char *typ, char *id, FUNARGS *fa);
73 > int o_plastic(char *mod, char *typ, char *id, FUNARGS *fa);
74 > int o_metal(char *mod, char *typ, char *id, FUNARGS *fa);
75 > int o_glass(char *mod, char *typ, char *id, FUNARGS *fa);
76 > int o_dielectric(char *mod, char *typ, char *id, FUNARGS *fa);
77 > int o_mirror(char *mod, char *typ, char *id, FUNARGS *fa);
78 > int o_trans(char *mod, char *typ, char *id, FUNARGS *fa);
79 > int o_light(char *mod, char *typ, char *id, FUNARGS *fa);
80  
81  
82   int
# Line 128 | Line 129 | rad2mgf(               /* convert a Radiance file to MGF */
129          char    *inp
130   )
131   {
132 < #define mod     buf
132 < #define typ     (buf+128)
133 < #define id      (buf+256)
134 < #define alias   (buf+384)
135 <        char    buf[512];
132 >        char  mod[128], typ[32], id[128], alias[128];
133          FUNARGS fa;
134          register FILE   *fp;
135          register int    c;
# Line 171 | Line 168 | rad2mgf(               /* convert a Radiance file to MGF */
168                          break;
169                  default:                /* Radiance primitive */
170                          ungetc(c, fp);
171 <                        if (fscanf(fp, "%s %s %s", mod, typ, id) != 3) {
171 >                        if (fgetword(mod, sizeof(mod), fp) == NULL ||
172 >                                        fgetword(typ, sizeof(typ), fp) == NULL ||
173 >                                        fgetword(id, sizeof(id), fp) == NULL) {
174                                  fputs(inp, stderr);
175                                  fputs(": unexpected EOF\n", stderr);
176                                  exit(1);
177                          }
178 +                        unspace(mod);
179 +                        unspace(id);
180                          if (!strcmp(typ, "alias")) {
181                                  strcpy(alias, "EOF");
182 <                                fscanf(fp, "%s", alias);
182 >                                fgetword(alias, sizeof(alias), fp);
183 >                                unspace(alias);
184                                  newmat(id, alias);
185                          } else {
186                                  if (!readfargs(&fa, fp)) {
# Line 197 | Line 199 | rad2mgf(               /* convert a Radiance file to MGF */
199                  pclose(fp);
200          else
201                  fclose(fp);
200 #undef mod
201 #undef typ
202 #undef id
203 #undef alias
202   }
203  
204  
205   void
206 + unspace(        /* replace spaces with underscores in s */
207 +        char *s
208 + )
209 + {
210 +        while (*s) {
211 +                if (isspace(*s))
212 +                        *s = '_';
213 +                ++s;
214 +        }
215 + }
216 +
217 +
218 + void
219   cvtprim(        /* process Radiance primitive */
220          char    *inp,
221          char    *mod,
# Line 218 | Line 229 | cvtprim(       /* process Radiance primitive */
229          df = (int (*)())lu_find(&rdispatch, typ)->data;
230          if (df != NULL) {                               /* convert */
231                  if ((*df)(mod, typ, id, fa) < 0) {
232 <                        fprintf(stderr, "%s: bad %s \"%s\"\n", "rat2mgf", typ, id);
232 >                        fprintf(stderr, "%s: bad %s \"%s\"\n", "rad2mgf", typ, id);
233                          exit(1);
234                  }
235          } else {                                        /* unsupported */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines