ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/ot/getbbox.c
Revision: 2.5
Committed: Sat Feb 22 02:07:26 2003 UTC (21 years, 2 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad3R5
Changes since 2.4: +9 -8 lines
Log Message:
Changes and check-in for 3.5 release
Includes new source files and modifications not recorded for many years
See ray/doc/notes/ReleaseNotes for notes between 3.1 and 3.5 release

File Contents

# User Rev Content
1 greg 1.1 #ifndef lint
2 greg 2.5 static const char RCSid[] = "$Id$";
3 greg 1.1 #endif
4     /*
5     * getbbox.c - compute bounding box for scene files
6     *
7     * Adapted from oconv.c 29 May 1991
8     */
9    
10     #include "standard.h"
11    
12     #include "octree.h"
13    
14     #include "object.h"
15    
16     char *progname; /* argv[0] */
17    
18     int nowarn = 0; /* supress warnings? */
19    
20 greg 2.5 void (*addobjnotify[])() = {NULL}; /* new object notifier functions */
21 greg 1.1
22     FVECT bbmin, bbmax; /* bounding box */
23    
24     addobject(o) /* add object to bounding box */
25     OBJREC *o;
26     {
27     add2bbox(o, bbmin, bbmax);
28     }
29    
30    
31     main(argc, argv) /* read object files and compute bounds */
32     int argc;
33     char **argv;
34     {
35 greg 2.2 extern char *getenv();
36 greg 1.3 int nohead = 0;
37 greg 1.1 int i;
38    
39     progname = argv[0];
40    
41 greg 1.3 for (i = 1; i < argc && argv[i][0] == '-'; i++) {
42     switch (argv[i][1]) {
43     case 'w':
44     nowarn = 1;
45     continue;
46     case 'h':
47     nohead = 1;
48     continue;
49     }
50     break;
51     }
52 greg 1.1 /* find bounding box */
53     bbmin[0] = bbmin[1] = bbmin[2] = FHUGE;
54     bbmax[0] = bbmax[1] = bbmax[2] = -FHUGE;
55     /* read input */
56 greg 1.2 if (i >= argc)
57 greg 2.5 readobj2(NULL, addobject);
58 greg 1.2 else
59     for ( ; i < argc; i++)
60     if (!strcmp(argv[i], "-")) /* from stdin */
61 greg 2.5 readobj2(NULL, addobject);
62 greg 1.2 else /* from file */
63 greg 2.5 readobj2(argv[i], addobject);
64 greg 1.2 /* print bounding box */
65 greg 1.3 if (!nohead)
66     printf(
67 greg 2.3 " xmin xmax ymin ymax zmin zmax\n");
68 greg 1.3
69 greg 1.1 printf("%9g %9g %9g %9g %9g %9g\n", bbmin[0], bbmax[0],
70     bbmin[1], bbmax[1], bbmin[2], bbmax[2]);
71     quit(0);
72     }
73    
74    
75 greg 2.5 void
76 greg 1.1 quit(code) /* exit program */
77     int code;
78     {
79     exit(code);
80     }
81    
82    
83 greg 2.5 void
84 greg 1.1 cputs() /* interactive error */
85     {
86     /* referenced, but not used */
87     }
88    
89    
90 greg 2.5 void
91 greg 1.1 wputs(s) /* warning message */
92     char *s;
93     {
94     if (!nowarn)
95     eputs(s);
96     }
97    
98    
99 greg 2.5 void
100 greg 1.1 eputs(s) /* put string to stderr */
101     register char *s;
102     {
103     static int inln = 0;
104    
105     if (!inln++) {
106     fputs(progname, stderr);
107     fputs(": ", stderr);
108     }
109     fputs(s, stderr);
110     if (*s && s[strlen(s)-1] == '\n')
111     inln = 0;
112     }