ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/meta/mx80.c
Revision: 1.2
Committed: Fri Aug 1 14:14:24 2003 UTC (20 years, 9 months ago) by schorsch
Content type: text/plain
Branch: MAIN
Changes since 1.1: +1 -15 lines
Log Message:
Eliminated CPM, MAC, and UNIX conditional compiles.

File Contents

# User Rev Content
1 greg 1.1 #ifndef lint
2 schorsch 1.2 static const char RCSid[] = "$Id: mx80.c,v 1.1 2003/02/22 02:07:26 greg Exp $";
3 greg 1.1 #endif
4     /*
5     * Program to print meta-files on a dot-matrix printer
6     *
7     * cc -o mx80 mx80.c mplot.o plot.o mfio.o syscalls.o palloc.o misc.o
8     *
9     * Epson MX-80 printer
10     */
11    
12    
13     #define MAXALLOC 5000
14    
15     #define DXSIZE 480 /* x resolution */
16    
17     #define DYSIZE 616 /* y resolution */
18    
19     #define LINWIDT DXSIZE /* line width */
20    
21     #define LINHITE 8 /* line height */
22    
23     #define NLINES (DYSIZE/LINHITE) /* number of lines */
24    
25     #define CHARWIDTH 6
26    
27     #define PNORM ""
28    
29     #define PINIT "\033@\033#\0331\033U1"
30    
31     #define PUNINIT "\033@\033="
32    
33     #define OUTPUT "\033K"
34    
35     #define XCOM "pexpand +vOCIsp %s | psort -Y +x"
36    
37    
38    
39    
40    
41     #include "meta.h"
42    
43     #include "plot.h"
44    
45     #include "span.h"
46    
47    
48    
49    
50     char *progname;
51    
52     struct span outspan;
53    
54     int dxsize = DXSIZE, dysize = DYSIZE,
55     linwidt = LINWIDT, linhite = LINHITE,
56     nrows = (LINHITE-1)/8+1;
57    
58     int maxalloc = MAXALLOC;
59    
60     int spanmin = 0, spanmax = LINWIDT-1;
61    
62     int charwidth = CHARWIDTH;
63    
64     static int lineno = 0;
65    
66     static short condonly = FALSE,
67     conditioned = FALSE;
68    
69    
70     main(argc, argv)
71    
72     int argc;
73     char **argv;
74    
75     {
76     FILE *fp;
77     FILE *popen();
78     char comargs[200], command[300];
79    
80     progname = *argv++;
81     argc--;
82    
83     condonly = FALSE;
84     conditioned = FALSE;
85    
86     while (argc && **argv == '-') {
87     switch (*(*argv+1)) {
88     case 'c':
89     condonly = TRUE;
90     break;
91     case 'r':
92     conditioned = TRUE;
93     break;
94     default:
95     error(WARNING, "unknown option");
96     break;
97     }
98     argv++;
99     argc--;
100     }
101    
102     if (conditioned) {
103     fputs(PINIT, stdout);
104     if (argc)
105     while (argc) {
106     fp = efopen(*argv, "r");
107     plot(fp);
108     fclose(fp);
109     argv++;
110     argc--;
111     }
112     else
113     plot(stdin);
114     fputs(PUNINIT, stdout);
115     } else {
116     comargs[0] = '\0';
117     while (argc) {
118     strcat(comargs, " ");
119     strcat(comargs, *argv);
120     argv++;
121     argc--;
122     }
123     sprintf(command, XCOM, comargs);
124     if (condonly)
125     return(system(command));
126     else {
127     fputs(PINIT, stdout);
128     if ((fp = popen(command, "r")) == NULL)
129     error(SYSTEM, "cannot execute input filter");
130     plot(fp);
131     pclose(fp);
132     fputs(PUNINIT, stdout);
133     }
134     }
135    
136     return(0);
137     }
138    
139    
140    
141    
142    
143    
144    
145     thispage() /* rewind and initialize current page */
146    
147     {
148    
149     if (lineno)
150     error(USER, "cannot restart page in thispage");
151    
152     }
153    
154    
155    
156    
157     nextpage() /* advance to next page */
158    
159     {
160    
161     fputs("\f\r", stdout);
162    
163     lineno = 0;
164    
165     }
166    
167    
168    
169    
170     contpage() /* continue new plot on current page */
171    
172     {
173    
174     while (lineno++ < NLINES)
175     putc('\n', stdout);
176    
177     lineno = 0;
178    
179     }
180    
181    
182    
183     printspan() /* output span to printer */
184    
185     {
186     register int k;
187    
188     if (spanmin <= spanmax) {
189    
190     k = spanmin/charwidth;
191     while (k--)
192     putc(' ', stdout);
193    
194     k = spanmin%charwidth;
195     fputs(OUTPUT, stdout);
196     putc((spanmax-spanmin+k+1)%256, stdout);
197     putc((spanmax-spanmin+k+1)/256, stdout);
198     while (k--)
199     putc('\0', stdout);
200    
201     for (k = spanmin; k <= spanmax; k++)
202     putc(outspan.cols[k], stdout);
203    
204     putc('\r', stdout);
205     }
206     putc('\n', stdout);
207     lineno++;
208    
209     }
210    
211    
212    
213    
214    
215     printstr(p) /* output a string to the printer */
216    
217     PRIMITIVE *p;
218    
219     {
220     int i;
221    
222     i = CONV(p->xy[XMN], dxsize)/charwidth;
223     while (i--)
224     putc(' ', stdout);
225    
226     fputs(p->args, stdout);
227     fputs(PNORM, stdout);
228     putc('\r', stdout);
229    
230     }