| 42 |
|
int outform = 'a'; /* output format */ |
| 43 |
|
char *outvals = "v"; /* output specification */ |
| 44 |
|
|
| 45 |
+ |
char *tralist[128]; /* list of modifers to trace (or no) */ |
| 46 |
+ |
int traincl = -1; /* include == 1, exclude == 0 */ |
| 47 |
+ |
#define MAXTSET 511 /* maximum number in trace set */ |
| 48 |
+ |
OBJECT traset[MAXTSET+1]={0}; /* trace include/exclude set */ |
| 49 |
+ |
|
| 50 |
|
int hresolu = 0; /* horizontal (scan) size */ |
| 51 |
|
int vresolu = 0; /* vertical resolution */ |
| 52 |
|
|
| 324 |
|
} |
| 325 |
|
|
| 326 |
|
|
| 327 |
+ |
tranotify(obj) /* record new modifier */ |
| 328 |
+ |
OBJECT obj; |
| 329 |
+ |
{ |
| 330 |
+ |
static int hitlimit = 0; |
| 331 |
+ |
register OBJREC *o = objptr(obj); |
| 332 |
+ |
register char **tralp; |
| 333 |
+ |
|
| 334 |
+ |
if (hitlimit || !ismodifier(o->otype)) |
| 335 |
+ |
return; |
| 336 |
+ |
for (tralp = tralist; *tralp != NULL; tralp++) |
| 337 |
+ |
if (!strcmp(o->oname, *tralp)) { |
| 338 |
+ |
if (traset[0] >= MAXTSET) { |
| 339 |
+ |
error(WARNING, "too many modifiers in trace list"); |
| 340 |
+ |
hitlimit++; |
| 341 |
+ |
return; /* should this be fatal? */ |
| 342 |
+ |
} |
| 343 |
+ |
insertelem(traset, obj); |
| 344 |
+ |
return; |
| 345 |
+ |
} |
| 346 |
+ |
} |
| 347 |
+ |
|
| 348 |
+ |
|
| 349 |
|
static |
| 350 |
|
ourtrace(r) /* print ray values */ |
| 351 |
|
RAY *r; |
| 353 |
|
register int (**tp)(); |
| 354 |
|
|
| 355 |
|
if (every_out[0] == NULL) |
| 356 |
+ |
return; |
| 357 |
+ |
if (traincl == 1 && r->ro == NULL) |
| 358 |
+ |
return; |
| 359 |
+ |
if (traincl != -1 && traincl != inset(traset, r->ro->omod)) |
| 360 |
|
return; |
| 361 |
|
tabin(r); |
| 362 |
|
for (tp = every_out; *tp != NULL; tp++) |