--- ray/src/cv/arch2rad.c 1990/12/11 08:45:46 1.1 +++ ray/src/cv/arch2rad.c 2003/02/22 02:07:23 2.2 @@ -1,9 +1,6 @@ -/* Copyright (c) 1990 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: arch2rad.c,v 2.2 2003/02/22 02:07:23 greg Exp $"; #endif - /* * Convert Architrion file to Radiance * @@ -12,6 +9,8 @@ static char SCCSid[] = "$SunId$ LBL"; #include +#include + #include "trans.h" #define DEFMAPFILE "/usr/local/lib/ray/lib/arch.map" @@ -194,23 +193,22 @@ FILE *fp; { char buf[MAXSTR]; int i, n; + register int c; /* get file name */ if (fgets(buf, MAXSTR, fp) == NULL) goto readerr; - if ((n = strlen(buf)) < 1) - goto readerr; - buf[n-1] = '\0'; + buf[strlen(buf)-1] = '\0'; fhead.filename = savestr(buf); /* get layers */ fhead.layer[0] = "Worksheet"; for (i = 1; i <= 8; i++) { - if (fscanf(fp, "Layer No.%d", &n) != 1 || n != i) + if (fscanf(fp, "L%*[^0-8]%d", &n) != 1 || n != i) goto readerr; - while ((n = getc(fp)) != EOF && (n == ' ' || n == '\t')) + while ((c = getc(fp)) != EOF && (c == ' ' || c == '\t')) ; - if (n == EOF) + if (c == EOF) goto readerr; - ungetc(n, fp); + ungetc(c, fp); if (fgets(buf, MAXSTR, fp) == NULL) goto readerr; buf[strlen(buf)-1] = '\0'; @@ -349,7 +347,7 @@ register BLOCK *bp; if (bp->nopenings > 0) { for (i = 0; i < bp->nopenings; i++) doneid(&bp->opening[i].frame); - free((char *)bp->opening); + free((void *)bp->opening); } doneid(&bp->refid); } @@ -427,18 +425,19 @@ FILE *fp; /* check for repeats */ rept = 0; nrepts = 0; for (i = 0; i < nm; i++) { - if (ml[i] == sm) { + if (ml[i] == sm || !strcmp(ml[i], VOIDID)) { rept |= 1<h[i]; } /* spread reference and opposite */ - if (p->x[1] > p->x[0]) { + if (p->x[2] > p->x[0]) { newp.x[0] -= 2; - newp.x[1] += 2; + newp.x[1] -= 2; newp.x[2] += 2; - newp.x[3] -= 2; - } else if (p->x[0] > p->x[1]) { + newp.x[3] += 2; + } else if (p->x[0] > p->x[2]) { newp.x[0] += 2; - newp.x[1] -= 2; + newp.x[1] += 2; newp.x[2] -= 2; - newp.x[3] += 2; + newp.x[3] -= 2; } - if (p->y[1] > p->y[0]) { + if (p->y[2] > p->y[0]) { newp.y[0] -= 2; - newp.y[1] += 2; + newp.y[1] -= 2; newp.y[2] += 2; - newp.y[3] -= 2; - } else if (p->y[0] > p->y[1]) { + newp.y[3] += 2; + } else if (p->y[0] > p->y[2]) { newp.y[0] += 2; - newp.y[1] -= 2; + newp.y[1] += 2; newp.y[2] -= 2; - newp.y[3] += 2; + newp.y[3] -= 2; } /* put out faces */ sprintf(buf, "op%d", ++nopens); - putface(openmod, buf, "ref", &newp, 0, 4, 7, 3, fp); - putface(openmod, buf, "opp", &newp, 1, 2, 6, 5, fp); - putface(openmod, buf, "end1", &newp, 3, 7, 6, 2, fp); - putface(openmod, buf, "end2", &newp, 0, 1, 5, 4, fp); - putface(openmod, buf, "bot", &newp, 0, 3, 2, 1, fp); - putface(openmod, buf, "top", &newp, 4, 5, 6, 7, fp); + putface(openmod, buf, "ref", &newp, 4, 5, 1, 0, fp); + putface(openmod, buf, "opp", &newp, 2, 6, 7, 3, fp); + putface(openmod, buf, "end1", &newp, 5, 6, 2, 1, fp); + putface(openmod, buf, "end2", &newp, 3, 7, 4, 0, fp); + putface(openmod, buf, "bot", &newp, 1, 2, 3, 0, fp); + putface(openmod, buf, "top", &newp, 7, 6, 5, 4, fp); } @@ -506,7 +505,7 @@ register RULEHD *rp; ID tmpid; if (rp->qflg & FL(Q_LAY)) { /* check layer */ - tmpid.name = NULL; + tmpid.name = fhead.layer[bp->layer]; tmpid.number = bp->layer; if (!matchid(&tmpid, &idm(rp)[Q_LAY])) return(0); @@ -543,12 +542,12 @@ FILE *fp; return; bn = blkname(bp); if (ff & 1<p, 3, 7, 4, 0, fp); + putface(m, bn, "ref", &bp->p, 4, 5, 1, 0, fp); if (ff & 1<p, 5, 6, 2, 1, fp); + putface(m, bn, "opp", &bp->p, 2, 6, 7, 3, fp); if (ff & 1<p, 2, 6, 7, 3, fp); - putface(m, bn, "end2", &bp->p, 4, 5, 1, 0, fp); + putface(m, bn, "end1", &bp->p, 5, 6, 2, 1, fp); + putface(m, bn, "end2", &bp->p, 3, 7, 4, 0, fp); } if (ff & 1<p, 1, 2, 3, 0, fp); @@ -564,20 +563,22 @@ register BLOCK *bp; static char nambuf[32]; static int blkcnt = 0; register char *nam; - register int i; + register int i, j; + sprintf(nambuf, "l%d.", bp->layer); + i = strlen(nambuf); nam = bp->refid.name; - if (nam == NULL) - nam = fhead.layer[bp->layer]; if (nam == NULL) { - sprintf(nambuf, "l%d.", bp->layer); - i = strlen(nambuf); - } else { - for (i = 0; i < 12 && nam[i]; i++) { - if (nam[i] == ' ' || nam[i] == '\t') - nambuf[i] = '_'; + nam = fhead.layer[bp->layer]; + if (nam != NULL) + i = 0; + } + if (nam != NULL) { + for (j = 0; j < 12 && nam[j]; j++) { + if (nam[j] == ' ' || nam[j] == '\t') + nambuf[i++] = '_'; else - nambuf[i] = nam[i]; + nambuf[i++] = nam[j]; } nambuf[i++] = '.'; } @@ -704,6 +705,7 @@ FILE *fp; } +void eputs(s) char *s; { @@ -711,6 +713,7 @@ char *s; } +void quit(code) int code; {