ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/meta/plot4.c
Revision: 1.1
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
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

# Content
1 #ifndef lint
2 static const char RCSid[] = "$Id$";
3 #endif
4 /*
5 * plot4.c - program to put four metafile pages onto one.
6 *
7 * Greg Ward
8 * 7/10/86
9 */
10
11 #include "meta.h"
12
13
14 #define OUTFILT "pexpand +OCIms" /* output filter */
15
16 #define SEGNAME "plot4seg" /* segment name */
17
18
19 extern FILE *pout; /* the output stream */
20
21 char *progname;
22
23
24 main(argc, argv)
25 int argc;
26 char *argv[];
27 {
28 #ifdef UNIX
29 FILE *popen();
30 #endif
31 FILE *fp;
32 int i;
33
34 #ifdef CPM
35 fixargs("plot4", &argc, &argv);
36 #endif
37
38 progname = argv[0];
39
40 #ifdef UNIX
41 pout = popen(OUTFILT, "w");
42 #endif
43
44 if (argc > 1)
45 for (i = 1; i < argc; i++) {
46 fp = efopen(argv[i], "r");
47 plot4(fp);
48 fclose(fp);
49 }
50 else
51 plot4(stdin);
52
53 pglob(PEOF, 0200, NULL);
54
55 #ifdef UNIX
56 return(pclose(pout));
57 #else
58 return(0);
59 #endif
60 }
61
62
63 plot4(fp) /* put a file into its place on page */
64 FILE *fp;
65 {
66 static int nplts = 0;
67 PRIMITIVE curp;
68
69 pglob(POPEN, 0, SEGNAME);
70
71 while (readp(&curp, fp))
72 if (curp.com == PEOP) {
73 pglob(PCLOSE, 0200, NULL);
74 doseg(nplts++ % 4);
75 pglob(POPEN, 0, SEGNAME);
76 } else
77 writep(&curp, pout);
78
79 pglob(PCLOSE, 0200, NULL);
80 }
81
82
83 doseg(n) /* do segment number n */
84 int n;
85 {
86 switch (n) {
87 case 0: /* upper left */
88 pprim(PSEG, 0, 0, XYSIZE/2, XYSIZE/2-1, XYSIZE-1, SEGNAME);
89 break;
90 case 1: /* upper right */
91 pprim(PSEG, 0, XYSIZE/2, XYSIZE/2, XYSIZE-1, XYSIZE-1, SEGNAME);
92 break;
93 case 2: /* lower left */
94 pprim(PSEG, 0, 0, 0, XYSIZE/2-1, XYSIZE/2-1, SEGNAME);
95 break;
96 case 3: /* lower right, end page */
97 pprim(PSEG, 0, XYSIZE/2, 0, XYSIZE-1, XYSIZE/2-1, SEGNAME);
98 pglob(PEOP, 0200, NULL);
99 break;
100 }
101 }