--- ray/src/gen/xform.c 1992/09/21 12:15:44 2.6 +++ ray/src/gen/xform.c 1995/12/08 18:29:06 2.10 @@ -1,4 +1,4 @@ -/* Copyright (c) 1992 Regents of the University of California */ +/* Copyright (c) 1995 Regents of the University of California */ #ifndef lint static char SCCSid[] = "$SunId$ LBL"; @@ -173,6 +173,7 @@ xform(name, fin) /* transform stream by tot.xfm */ char *name; register FILE *fin; { + int nobjs = 0; register int c; while ((c = getc(fin)) != EOF) { @@ -188,11 +189,16 @@ register FILE *fin; } else if (c == '!') { /* command */ ungetc(c, fin); xfcomm(name, fin); + nobjs++; } else { /* object */ ungetc(c, fin); xfobject(name, fin); + nobjs++; } } + if (nobjs == 0) + fprintf(stderr, "%s: (%s): warning - empty file\n", + progname, name); } @@ -398,10 +404,27 @@ FILE *fin; } +m_mist(fin) /* transform arguments for mist */ +FILE *fin; +{ + FUNARGS fa; + + if (readfargs(&fa, fin) != 1) + return(-1); + if (fa.nsargs != 0 || fa.nfargs != 4) + return(-1); + printf("0\n0\n4"); + printf(" %18.12g %18.12g %18.12g", fa.farg[0]/tot.sca, + fa.farg[1]/tot.sca, fa.farg[2]/tot.sca); + printf(" %18.12g\n", fa.farg[3]); + freefargs(&fa); + return(0); +} + + m_dielectric(fin) /* transform arguments for dielectric */ FILE *fin; { - double pow(); FUNARGS fa; if (readfargs(&fa, fin) != 1) @@ -422,7 +445,6 @@ FILE *fin; m_interface(fin) /* transform arguments for interface */ FILE *fin; { - double pow(); FUNARGS fa; if (readfargs(&fa, fin) != 1) @@ -638,20 +660,6 @@ FILE *fin; initotypes() /* initialize ofun[] array */ { - extern int o_source(); - extern int o_sphere(); - extern int o_face(); - extern int o_cone(); - extern int o_cylinder(); - extern int o_ring(); - extern int m_glow(); - extern int m_spot(); - extern int m_dielectric(); - extern int m_interface(); - extern int text(); - extern int alias(); - extern int passargs(); - extern int addxform(); register int i; if (ofun[OBJ_SOURCE].funp == o_source) @@ -678,11 +686,13 @@ initotypes() /* initialize ofun[] array */ ofun[MAT_SPOT].funp = m_spot; ofun[MAT_DIELECTRIC].funp = m_dielectric; ofun[MAT_INTERFACE].funp = m_interface; + ofun[MAT_MIST].funp = m_mist; ofun[PAT_CTEXT].funp = ofun[PAT_BTEXT].funp = ofun[MIX_TEXT].funp = text; ofun[ALIAS].funp = alias; /* surface inverses */ + tinvers[OBJ_FACE] = OBJ_FACE; tinvers[OBJ_SOURCE] = OBJ_SOURCE; tinvers[OBJ_CONE] = OBJ_CUP; tinvers[OBJ_CUP] = OBJ_CONE;