/* Copyright (c) 1991 Regents of the University of California */ #ifndef lint static char SCCSid[] = "$SunId$ LBL"; #endif /* * getbbox.c - compute bounding box for scene files * * Adapted from oconv.c 29 May 1991 */ #include "standard.h" #include "octree.h" #include "object.h" #ifndef DEFPATH #define DEFPATH ":/usr/local/lib/ray" #endif char *progname; /* argv[0] */ char *libpath; /* library search path */ int nowarn = 0; /* supress warnings? */ int (*addobjnotify[])() = {NULL}; /* new object notifier functions */ FVECT bbmin, bbmax; /* bounding box */ addobject(o) /* add object to bounding box */ OBJREC *o; { add2bbox(o, bbmin, bbmax); } main(argc, argv) /* read object files and compute bounds */ int argc; char **argv; { char *getenv(); double atof(); int i; progname = argv[0]; if ((libpath = getenv("RAYPATH")) == NULL) libpath = DEFPATH; if (!strcmp(argv[1], "-w")) { nowarn = 1; i = 2; } else i = 1; breakopt: /* find bounding box */ bbmin[0] = bbmin[1] = bbmin[2] = FHUGE; bbmax[0] = bbmax[1] = bbmax[2] = -FHUGE; /* read input */ if (i >= argc) readobj(NULL, addobject); else for ( ; i < argc; i++) if (!strcmp(argv[i], "-")) /* from stdin */ readobj(NULL, addobject); else /* from file */ readobj(argv[i], addobject); /* print bounding box */ printf(" xmin xmax ymin ymax zmin zmax\n"); printf("%9g %9g %9g %9g %9g %9g\n", bbmin[0], bbmax[0], bbmin[1], bbmax[1], bbmin[2], bbmax[2]); quit(0); } quit(code) /* exit program */ int code; { exit(code); } cputs() /* interactive error */ { /* referenced, but not used */ } wputs(s) /* warning message */ char *s; { if (!nowarn) eputs(s); } eputs(s) /* put string to stderr */ register char *s; { static int inln = 0; if (!inln++) { fputs(progname, stderr); fputs(": ", stderr); } fputs(s, stderr); if (*s && s[strlen(s)-1] == '\n') inln = 0; }