1: /*
2: *
3: * Copyright (c) 1984, 1985 Xerox Corp.
4: *
5: * HISTORY
6: * 01-Dec-85 lee at Xerox, WRC
7: * Modified to pass lint.
8: *
9: * 28-apr-85 ed flint add conditional code for vax11-c (vms)
10: * now use -s for point size and added -o for
11: * output file
12: */
13:
14: #ifdef vax11c
15: #include stdio
16: #include ctype
17: #else
18: # include <stdio.h>
19: # include <ctype.h>
20: # include <sys/file.h>
21: # include <strings.h>
22: #endif
23:
24: # include "iptokens.h"
25: # include "literal.h"
26: # include "operator.h"
27:
28: /* frame buffer numbers */
29: # define F_backgroundfont 1
30: # define F_font 2
31: # define F_transform 3
32:
33: # define INCH 720
34: # define Top_margin (10 * INCH)
35: # define Left_margin (INCH * 2)
36: # define Left_table (Left_margin + INCH/2)
37:
38: main(argc, argv)
39:
40: int argc;
41: char *argv[];
42:
43: {
44: char u_fontname[256];
45: char buffer[256];
46: char *outputname= 0;
47: int ipressfile;
48: int point_size = 10;
49: int char_spacing;
50: int line_spacing;
51: int x_pos;
52: int y_pos;
53: int i;
54: int num;
55: int prefix = 0;
56:
57: if (argc < 2)
58: {
59: fprintf(stderr, "charset: which font?\n");
60: exit(1);
61: }
62:
63: for ( i= 1 ; i <= argc ; i++ )
64: {
65: if ( argv[i][0] == '-' )
66: switch(argv[i][1])
67: {
68: case ('p'):
69: case ('P'):
70: (void) sscanf(&argv[i][2], "%o", &prefix);
71: break;
72: case ('o'):
73: case ('O'):
74: if ( strlen(argv[i]) > 2 )
75: outputname= &(argv[i][2]);
76: else
77: outputname= argv[++i];
78: break;
79: case ('s'):
80: case ('S'):
81: point_size= atoi(&(argv[i][2]));
82: break;
83: }
84: else
85: break;
86: }
87:
88: (void) strcpy(u_fontname, "Xerox/XC1-1-1/");
89: (void) strcat(u_fontname, argv[i]);
90:
91: /* set spacing parameters */
92: line_spacing = (point_size + 2) * 15;
93: char_spacing = point_size * 30;
94:
95: if ( outputname != 0 )
96: {
97: #ifdef vax11c
98: if ( (ipressfile= creat(outputname, 0, "rfm=udf")) == -1 )
99: #else
100: if ( (ipressfile= open(outputname, O_WRONLY | O_CREAT, 0666)) == -1 )
101: #endif
102: {
103: perror(outputname);
104: exit(1);
105: }
106: }
107: else /* default to stdout */
108: {
109: ipressfile= 1;
110: }
111:
112: ip_select(ipressfile);
113:
114: AppendOp(OP_beginBlock);
115: AppendOp(OP_beginBody);
116:
117: /* set up the two fonts: the background and the font in question */
118: SetupFont("Xerox/XC1-1-1/Classic", 100., F_backgroundfont);
119: SetupFont(u_fontname, point_size * 10., F_font);
120:
121: /* set frame[2] to a scaling transform that uses 1/10 point */
122: /* co-ordiate system */
123: AppendRational(353L, 10000000);
124: AppendOp(OP_scale);
125: AppendInteger((long) F_transform);
126: AppendOp(OP_fset);
127:
128: AppendOp(OP_endBody); /* end preamble */
129:
130: AppendOp(OP_beginBody); /* page 1 (and only) */
131:
132: Fget(F_transform);
133: AppendOp(OP_concatt);
134: Setfont(F_backgroundfont);
135: Setxy((double)Left_margin, (double)Top_margin);
136: (void) sprintf(buffer, "Xerox/XC1-1-1/%s at %d point, character set %o (octal)",
137: argv[i], point_size, prefix);
138: ShowString(buffer);
139:
140: buffer[0] = '0';
141: buffer[1] = '\0';
142: for (x_pos = Left_table, i = 0; i < 8;
143: x_pos += char_spacing, i++)
144: {
145: Setxy((double)x_pos, (double)(Top_margin - 2 * line_spacing));
146: ShowString(buffer);
147: buffer[0] += 1;
148: }
149:
150: for (y_pos = Top_margin - 3 * line_spacing, num = 000; num < 0377;
151: y_pos -= line_spacing)
152: {
153: Setxy((double)Left_margin, (double)y_pos);
154: (void) sprintf(buffer, "%03o", num);
155: ShowString(buffer);
156: Setfont(F_font);
157:
158: for (x_pos = Left_table, i = 0; i < 8;
159: x_pos += char_spacing, i++, num++)
160: {
161: Setxy((double)x_pos, (double)y_pos);
162: if (num != 0377)
163: {
164: if (prefix > 0)
165: {
166: (void) sprintf(buffer, "\377%c%c", prefix, num);
167: AppendString(buffer);
168: }
169: else
170: {
171: buffer[0] = num;
172: buffer[1] = '\0';
173: AppendString(buffer);
174: }
175: AppendOp(OP_show);
176: }
177: }
178: Setfont(F_backgroundfont);
179: }
180:
181: /* wrap it up */
182: AppendOp(OP_endBody);
183: AppendOp(OP_endBlock);
184:
185: ip_flush();
186: }
Defined functions
main
defined in line
38;
never used
Defined macros
INCH
defined in line
33; used 3 times