xref: /plan9/sys/src/cmd/postscript/posttek/posttek.h (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1*219b2ee8SDavid du Colombier /*
2*219b2ee8SDavid du Colombier  *
3*219b2ee8SDavid du Colombier  * Tektronix 4014 control codes.
4*219b2ee8SDavid du Colombier  *
5*219b2ee8SDavid du Colombier  */
6*219b2ee8SDavid du Colombier 
7*219b2ee8SDavid du Colombier #define NUL '\000'
8*219b2ee8SDavid du Colombier #define SOH '\001'
9*219b2ee8SDavid du Colombier #define STX '\002'
10*219b2ee8SDavid du Colombier #define ETX '\003'
11*219b2ee8SDavid du Colombier #define EOT '\004'
12*219b2ee8SDavid du Colombier #define ENQ '\005'
13*219b2ee8SDavid du Colombier #define ACK '\006'
14*219b2ee8SDavid du Colombier #define BEL '\007'
15*219b2ee8SDavid du Colombier #define BS  '\010'
16*219b2ee8SDavid du Colombier #define HT  '\011'
17*219b2ee8SDavid du Colombier #define NL  '\012'
18*219b2ee8SDavid du Colombier #define VT  '\013'
19*219b2ee8SDavid du Colombier #define FF  '\014'
20*219b2ee8SDavid du Colombier #define CR  '\015'
21*219b2ee8SDavid du Colombier #define SO  '\016'
22*219b2ee8SDavid du Colombier #define SI  '\017'
23*219b2ee8SDavid du Colombier #define DLE '\020'
24*219b2ee8SDavid du Colombier #define DC1 '\021'
25*219b2ee8SDavid du Colombier #define DC2 '\022'
26*219b2ee8SDavid du Colombier #define DC3 '\023'
27*219b2ee8SDavid du Colombier #define DC4 '\024'
28*219b2ee8SDavid du Colombier #define NAK '\025'
29*219b2ee8SDavid du Colombier #define SYN '\026'
30*219b2ee8SDavid du Colombier #define ETB '\027'
31*219b2ee8SDavid du Colombier #define CAN '\030'
32*219b2ee8SDavid du Colombier #define EM  '\031'
33*219b2ee8SDavid du Colombier #define SUB '\032'
34*219b2ee8SDavid du Colombier #define ESC '\033'
35*219b2ee8SDavid du Colombier #define FS  '\034'
36*219b2ee8SDavid du Colombier #define GS  '\035'
37*219b2ee8SDavid du Colombier #define RS  '\036'
38*219b2ee8SDavid du Colombier #define US  '\037'
39*219b2ee8SDavid du Colombier #define DEL '\177'
40*219b2ee8SDavid du Colombier 
41*219b2ee8SDavid du Colombier /*
42*219b2ee8SDavid du Colombier  *
43*219b2ee8SDavid du Colombier  * A few definitions used to classify the different tektronix states. OUTMODED
44*219b2ee8SDavid du Colombier  * is returned by control() and esc(), and typically means the state has changed.
45*219b2ee8SDavid du Colombier  *
46*219b2ee8SDavid du Colombier  */
47*219b2ee8SDavid du Colombier 
48*219b2ee8SDavid du Colombier #define OUTMODED	-1
49*219b2ee8SDavid du Colombier #define ALPHA		0
50*219b2ee8SDavid du Colombier #define GIN		1
51*219b2ee8SDavid du Colombier #define GRAPH		2
52*219b2ee8SDavid du Colombier #define POINT		3
53*219b2ee8SDavid du Colombier #define SPECIALPOINT	4
54*219b2ee8SDavid du Colombier #define INCREMENTAL	5
55*219b2ee8SDavid du Colombier #define RESET		6
56*219b2ee8SDavid du Colombier #define EXIT		7
57*219b2ee8SDavid du Colombier 
58*219b2ee8SDavid du Colombier /*
59*219b2ee8SDavid du Colombier  *
60*219b2ee8SDavid du Colombier  * The pen state, either UP or DOWN, controls whether vectors are drawn.
61*219b2ee8SDavid du Colombier  *
62*219b2ee8SDavid du Colombier  */
63*219b2ee8SDavid du Colombier 
64*219b2ee8SDavid du Colombier #define UP		0
65*219b2ee8SDavid du Colombier #define DOWN		1
66*219b2ee8SDavid du Colombier 
67*219b2ee8SDavid du Colombier /*
68*219b2ee8SDavid du Colombier  *
69*219b2ee8SDavid du Colombier  * Coordinates of the upper right corner of the screen - almost the real screen
70*219b2ee8SDavid du Colombier  * dimensions.
71*219b2ee8SDavid du Colombier  *
72*219b2ee8SDavid du Colombier  */
73*219b2ee8SDavid du Colombier 
74*219b2ee8SDavid du Colombier #define TEKXMAX		4096
75*219b2ee8SDavid du Colombier #define TEKYMAX		3120
76*219b2ee8SDavid du Colombier 
77*219b2ee8SDavid du Colombier /*
78*219b2ee8SDavid du Colombier  *
79*219b2ee8SDavid du Colombier  * The size of the spot in SPECIALPOINT mode is controlled by a non-linear
80*219b2ee8SDavid du Colombier  * function that has a domain that consists of the integers from 040 to 0175.
81*219b2ee8SDavid du Colombier  * The next definition is used to initialize the special point mode intensity
82*219b2ee8SDavid du Colombier  * array that implements the function. Data came from table F-6 in the tektronix
83*219b2ee8SDavid du Colombier  * 4014 manual.
84*219b2ee8SDavid du Colombier  *
85*219b2ee8SDavid du Colombier  */
86*219b2ee8SDavid du Colombier 
87*219b2ee8SDavid du Colombier #define INTENSITY							\
88*219b2ee8SDavid du Colombier 									\
89*219b2ee8SDavid du Colombier 	{								\
90*219b2ee8SDavid du Colombier 	    14, 16, 17, 19, 20, 22, 23, 25,				\
91*219b2ee8SDavid du Colombier 	    28, 31, 34, 38, 41, 44, 47, 50,				\
92*219b2ee8SDavid du Colombier 	    56, 62, 69, 75, 81, 88, 94,100,				\
93*219b2ee8SDavid du Colombier 	    56, 62, 69, 75, 81, 88, 94,100,				\
94*219b2ee8SDavid du Colombier 	     0,  1,  1,  1,  1,  1,  1,  2,				\
95*219b2ee8SDavid du Colombier 	     2,  2,  2,  2,  3,  3,  3,  3,				\
96*219b2ee8SDavid du Colombier 	     4,  4,  4,  5,  5,  5,  6,  6,				\
97*219b2ee8SDavid du Colombier 	     7,  8,  9, 10, 11, 12, 12, 13,				\
98*219b2ee8SDavid du Colombier 	    14, 16, 17, 19, 20, 22, 23, 25,				\
99*219b2ee8SDavid du Colombier 	    28, 31, 34, 38, 41, 44, 47, 50,				\
100*219b2ee8SDavid du Colombier 	    56, 62, 69, 75, 81, 88, 94,100,				\
101*219b2ee8SDavid du Colombier 	    56, 62, 69, 75, 81, 88, 94,100,				\
102*219b2ee8SDavid du Colombier 	}
103*219b2ee8SDavid du Colombier 
104*219b2ee8SDavid du Colombier /*
105*219b2ee8SDavid du Colombier  *
106*219b2ee8SDavid du Colombier  * The next two definitions give the height and width of characters in the four
107*219b2ee8SDavid du Colombier  * different sizes available on tektronix terminals. TEKFONT is the default index
108*219b2ee8SDavid du Colombier  * into CHARHEIGHT and CHARWIDTH.
109*219b2ee8SDavid du Colombier  *
110*219b2ee8SDavid du Colombier  */
111*219b2ee8SDavid du Colombier 
112*219b2ee8SDavid du Colombier #define CHARHEIGHT	{88, 82, 53, 48}
113*219b2ee8SDavid du Colombier #define CHARWIDTH	{56, 51, 34, 31}
114*219b2ee8SDavid du Colombier #define TEKFONT		2
115*219b2ee8SDavid du Colombier 
116*219b2ee8SDavid du Colombier /*
117*219b2ee8SDavid du Colombier  *
118*219b2ee8SDavid du Colombier  * The entries defined in STYLES are passed on to the PostScript operator setdash.
119*219b2ee8SDavid du Colombier  * They're used to implement the different tektronix line styles. Belongs in the
120*219b2ee8SDavid du Colombier  * prologue!
121*219b2ee8SDavid du Colombier  *
122*219b2ee8SDavid du Colombier  */
123*219b2ee8SDavid du Colombier 
124*219b2ee8SDavid du Colombier #define STYLES								\
125*219b2ee8SDavid du Colombier 									\
126*219b2ee8SDavid du Colombier 	{								\
127*219b2ee8SDavid du Colombier 	    "[]",							\
128*219b2ee8SDavid du Colombier 	    "[.5 2]",							\
129*219b2ee8SDavid du Colombier 	    "[.5 2 4 2]",						\
130*219b2ee8SDavid du Colombier 	    "[4 4]",							\
131*219b2ee8SDavid du Colombier 	    "[8 4]",							\
132*219b2ee8SDavid du Colombier 	    "[]"							\
133*219b2ee8SDavid du Colombier 	}
134*219b2ee8SDavid du Colombier 
135*219b2ee8SDavid du Colombier /*
136*219b2ee8SDavid du Colombier  *
137*219b2ee8SDavid du Colombier  * Variables of type Point are used to keep track of the cursor position.
138*219b2ee8SDavid du Colombier  *
139*219b2ee8SDavid du Colombier  */
140*219b2ee8SDavid du Colombier 
141*219b2ee8SDavid du Colombier typedef struct {
142*219b2ee8SDavid du Colombier 	int	x;
143*219b2ee8SDavid du Colombier 	int	y;
144*219b2ee8SDavid du Colombier } Point;
145*219b2ee8SDavid du Colombier 
146*219b2ee8SDavid du Colombier /*
147*219b2ee8SDavid du Colombier  *
148*219b2ee8SDavid du Colombier  * An array of type Fontmap helps convert font names requested by users into
149*219b2ee8SDavid du Colombier  * legitimate PostScript names. The array is initialized using FONTMAP, which must
150*219b2ee8SDavid du Colombier  * end with an entry that has NULL defined as its name field.
151*219b2ee8SDavid du Colombier  *
152*219b2ee8SDavid du Colombier  */
153*219b2ee8SDavid du Colombier 
154*219b2ee8SDavid du Colombier typedef struct {
155*219b2ee8SDavid du Colombier 	char	*name;			/* user's font name */
156*219b2ee8SDavid du Colombier 	char	*val;			/* corresponding PostScript name */
157*219b2ee8SDavid du Colombier } Fontmap;
158*219b2ee8SDavid du Colombier 
159*219b2ee8SDavid du Colombier #define FONTMAP								\
160*219b2ee8SDavid du Colombier 									\
161*219b2ee8SDavid du Colombier 	{								\
162*219b2ee8SDavid du Colombier 	    "R", "Courier",						\
163*219b2ee8SDavid du Colombier 	    "I", "Courier-Oblique",					\
164*219b2ee8SDavid du Colombier 	    "B", "Courier-Bold",					\
165*219b2ee8SDavid du Colombier 	    "CO", "Courier",						\
166*219b2ee8SDavid du Colombier 	    "CI", "Courier-Oblique",					\
167*219b2ee8SDavid du Colombier 	    "CB", "Courier-Bold",					\
168*219b2ee8SDavid du Colombier 	    "CW", "Courier",						\
169*219b2ee8SDavid du Colombier 	    "PO", "Courier",						\
170*219b2ee8SDavid du Colombier 	    "courier", "Courier",					\
171*219b2ee8SDavid du Colombier 	    "cour", "Courier",						\
172*219b2ee8SDavid du Colombier 	    "co", "Courier",						\
173*219b2ee8SDavid du Colombier 	    NULL, NULL							\
174*219b2ee8SDavid du Colombier 	}
175*219b2ee8SDavid du Colombier 
176*219b2ee8SDavid du Colombier /*
177*219b2ee8SDavid du Colombier  *
178*219b2ee8SDavid du Colombier  * Some of the non-integer valued functions in posttek.c.
179*219b2ee8SDavid du Colombier  *
180*219b2ee8SDavid du Colombier  */
181*219b2ee8SDavid du Colombier 
182*219b2ee8SDavid du Colombier char	*get_font();
183*219b2ee8SDavid du Colombier 
184