| 54 |
|
switch (argv[0][1]) { |
| 55 |
|
case '\0': /* point */ |
| 56 |
|
if (badarg(argc-1,argv+1,"fff")) |
| 57 |
< |
syntax("Bad vertex"); |
| 57 |
> |
syntax("bad vertex"); |
| 58 |
|
newv(atof(argv[1]), atof(argv[2]), |
| 59 |
|
atof(argv[3])); |
| 60 |
|
break; |
| 62 |
|
if (argv[0][2]) |
| 63 |
|
goto unknown; |
| 64 |
|
if (badarg(argc-1,argv+1,"fff")) |
| 65 |
< |
syntax("Bad normal"); |
| 65 |
> |
syntax("bad normal"); |
| 66 |
|
if (!newvn(atof(argv[1]), atof(argv[2]), |
| 67 |
|
atof(argv[3]))) |
| 68 |
< |
syntax("Zero normal"); |
| 68 |
> |
syntax("zero normal"); |
| 69 |
|
break; |
| 70 |
< |
case 't': /* texture map */ |
| 70 |
> |
case 't': /* coordinate */ |
| 71 |
|
if (argv[0][2]) |
| 72 |
|
goto unknown; |
| 73 |
|
if (badarg(argc-1,argv+1,"ff")) |
| 84 |
|
faceno++; |
| 85 |
|
switch (argc-1) { |
| 86 |
|
case 0: case 1: case 2: |
| 87 |
< |
syntax("Too few vertices"); |
| 87 |
> |
syntax("too few vertices"); |
| 88 |
|
break; |
| 89 |
|
case 3: |
| 90 |
|
if (!puttri(argv[1], argv[2], argv[3])) |
| 91 |
< |
syntax("Bad triangle"); |
| 91 |
> |
syntax("bad triangle"); |
| 92 |
|
break; |
| 93 |
|
default: |
| 94 |
|
if (!putface(argc-1, argv+1)) |
| 95 |
< |
syntax("Bad face"); |
| 95 |
> |
syntax("bad face"); |
| 96 |
|
break; |
| 97 |
|
} |
| 98 |
|
break; |
| 213 |
|
int ac; |
| 214 |
|
register char **av; |
| 215 |
|
{ |
| 216 |
– |
VNDX vi; |
| 216 |
|
char *cp; |
| 217 |
|
register int i; |
| 218 |
|
|
| 219 |
|
while (ac > 3) { /* break into triangles */ |
| 220 |
|
if (!puttri(av[0], av[1], av[2])) |
| 222 |
– |
{ |
| 223 |
– |
fprintf(stderr, "f %s %s %s\n", av[0], av[1], av[2]); |
| 221 |
|
return(0); |
| 225 |
– |
} |
| 222 |
|
ac--; /* remove vertex & rotate */ |
| 223 |
|
cp = av[0]; |
| 224 |
|
for (i = 0; i < ac-1; i++) |
| 235 |
|
VNDX v1i, v2i, v3i; |
| 236 |
|
FLOAT *v1c, *v2c, *v3c; |
| 237 |
|
FLOAT *v1n, *v2n, *v3n; |
| 238 |
< |
|
| 238 |
> |
|
| 239 |
|
if (!cvtndx(v1i, v1) || !cvtndx(v2i, v2) || !cvtndx(v3i, v3)) |
| 240 |
|
return(0); |
| 241 |
|
|
| 285 |
|
else |
| 286 |
|
vlist = (FVECT *)realloc((char *)vlist, |
| 287 |
|
(nvs+CHUNKSIZ)*sizeof(FVECT)); |
| 288 |
< |
if (vlist == NULL) { |
| 289 |
< |
fprintf(stderr, |
| 294 |
< |
"Out of memory while allocating vertex %d\n", nvs); |
| 295 |
< |
exit(1); |
| 296 |
< |
} |
| 288 |
> |
if (vlist == NULL) |
| 289 |
> |
error(SYSTEM, "out of memory in newv"); |
| 290 |
|
} |
| 291 |
|
/* assign new vertex */ |
| 292 |
|
vlist[nvs][0] = x; |
| 306 |
|
else |
| 307 |
|
vnlist = (FVECT *)realloc((char *)vnlist, |
| 308 |
|
(nvns+CHUNKSIZ)*sizeof(FVECT)); |
| 309 |
< |
if (vnlist == NULL) { |
| 310 |
< |
fprintf(stderr, |
| 318 |
< |
"Out of memory while allocating normal %d\n", nvns); |
| 319 |
< |
exit(1); |
| 320 |
< |
} |
| 309 |
> |
if (vnlist == NULL) |
| 310 |
> |
error(SYSTEM, "out of memory in newvn"); |
| 311 |
|
} |
| 312 |
|
/* assign new normal */ |
| 313 |
|
vnlist[nvns][0] = x; |
| 329 |
|
else |
| 330 |
|
vtlist = (FLOAT (*)[2])realloc((char *)vtlist, |
| 331 |
|
(nvts+CHUNKSIZ)*2*sizeof(FLOAT)); |
| 332 |
< |
if (vtlist == NULL) { |
| 333 |
< |
fprintf(stderr, |
| 344 |
< |
"Out of memory while allocating texture vertex %d\n", |
| 345 |
< |
nvts); |
| 346 |
< |
exit(1); |
| 347 |
< |
} |
| 332 |
> |
if (vtlist == NULL) |
| 333 |
> |
error(SYSTEM, "out of memory in newvt"); |
| 334 |
|
} |
| 335 |
|
/* assign new vertex */ |
| 336 |
|
vtlist[nvts][0] = x; |
| 342 |
|
syntax(er) /* report syntax error and exit */ |
| 343 |
|
char *er; |
| 344 |
|
{ |
| 345 |
< |
fprintf(stderr, "%s: Wavefront syntax error near line %d: %s\n", |
| 345 |
> |
sprintf(errmsg, "%s: Wavefront syntax error near line %d: %s\n", |
| 346 |
|
inpfile, lineno, er); |
| 347 |
< |
exit(1); |
| 347 |
> |
error(USER, errmsg); |
| 348 |
|
} |