Annotation of OpenXM_contrib/gnuplot/term/excl.trm, Revision 1.1.1.2
1.1 maekawa 1: /*
1.1.1.2 ! maekawa 2: * $Id: excl.trm,v 1.9 1998/12/14 18:38:59 lhecking Exp $
1.1 maekawa 3: *
4: */
5:
6: /* GNUPLOT - excl.trm */
7:
8: /* Copyright (c) 1992, 1998 by P. Klosowski at NIST. All Rights Reserved
9: *
10: * Permission to use, copy, and distribute this software and its
11: * documentation for any purpose with or without fee is hereby granted,
12: * provided that the above copyright notice appear in all copies and
13: * that both that copyright notice and this permission notice appear
14: * in supporting documentation.
15: *
16: * Permission to modify the software is granted, but not the right to
17: * distribute the complete modified source code. Modifications are to
18: * be distributed as patches to the released version. Permission to
19: * distribute binaries produced by compiling modified sources is granted,
20: * provided you
21: * 1. distribute the corresponding source modifications from the
22: * released version in the form of a patch file along with the binaries,
23: * 2. add special version identification to distinguish your version
24: * in addition to the base release version number,
25: * 3. provide your name and address as the primary contact for the
26: * support of your modified version, and
27: * 4. retain our contact information in regard to use of the base
28: * software.
29: * Permission to distribute the released version of the source code along
30: * with corresponding source modifications in the form of a patch file is
31: * granted with same provisions 2 through 4 for binary distributions.
32: *
33: * This software is provided "as is" without express or implied warranty
34: * to the extent permitted by applicable law.
35: *
36: * This file is included by ../term.c.
37: *
38: *
39: * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
40: *
41: */
42:
43: /***
44: NAME
45: quic
46: PURPOSE
47: QUIC driver for GNUPLOT
48: NOTES
49:
50: HISTORY
51: przemek - Aug 16, 1992: Created.
52: lars - Nov 30, 1998: Updated to new gnuplot copyright by
53: permission from Przemek
54: ***/
55: /*
56: c *****************************************
57: c *****************************************
58: c ****** *****
59: c ****** EXCL command definitions *****
60: c ****** *****
61: c *****************************************
62: c *****************************************
63: */
64:
65: /*
66: * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
67: */
68:
69: #include "driver.h"
70:
71: #ifdef TERM_REGISTER
72: register_term(excl)
73: #endif
74:
75: #ifdef TERM_PROTO
76: TERM_PUBLIC void EXCL_init __PROTO((void));
77: TERM_PUBLIC void EXCL_graphics __PROTO((void));
78: TERM_PUBLIC void EXCL_text __PROTO((void));
79: TERM_PUBLIC void EXCL_linetype __PROTO((int linetype));
80: TERM_PUBLIC void EXCL_move __PROTO((unsigned int x, unsigned int y));
81: TERM_PUBLIC void EXCL_vector __PROTO((unsigned int x2, unsigned int y2));
82: TERM_PUBLIC void EXCL_put_text __PROTO((unsigned int x, unsigned int y, char str[]));
83: TERM_PUBLIC void EXCL_reset __PROTO((void));
84:
85: #define EXCL_XMAX 9000
86: #define EXCL_YMAX 6500
87:
88: #define EXCL_XLAST (EXCL_XMAX - 1)
89: #define EXCL_YLAST (EXCL_YMAX - 1)
90:
91: #define EXCL_VCHAR 120
92: #define EXCL_HCHAR 70
93: #define EXCL_VTIC 70
94: #define EXCL_HTIC 70
95: #endif /* TERM_PROTO */
96:
97:
98: #ifndef TERM_PROTO_ONLY
99: #ifdef TERM_BODY
100:
101: /* Define ansi command headers, NUL character */
102: #define ESC "\033"
103: #define GS "\035"
104: #define CSI "\033["
105: #define DCS "\033P"
106: #define ST "\033\\"
107:
108: /*
109: page numbers are given per "Talaris EXCL programmer's reference manual" M292 rev.2
110: NOTE: EXCL coordinate system places (0,0) at upper left corner of the page
111:
112: c EXCL commands for initialization
113:
114: c TALAMS: set ANSI (p. 162)
115: c TALMOD: set emulation *** EXCL (p. 164)
116: c TALPGO: set page orient *** landscape (p. 81)
117: c TALFCTL: set paper format *** 8.5x11 (p. 85)
118: c TALTBM: set top/bot margins ** in land mode to full pg (p. 73)
119: c TALLRM: set left/right margins (p. 75)
120: c PUM: set units ** units of measure set by TALPRM (p. 67)
121: c TALASF: Absorb cr/ff/lf/vt ** ON (p. 182)
122: c TALPOP: pop controller params (p. 168)
123: c TALPSH: push controller params (p. 167)
124: c TALPRM: set units of measure ** to 1/1000 inch (p. 64)
125: c TALGLT: set line type ** solid (p. 211)
126: c TALORG: set page absolute origin ** (0,0) UL corner (p. 78)
127: c TALPCW: set page clip window *** for landsc/full page (p. 84)
128: c TALGLP: line: **pen7x7mil*draw*smear*glyph112*font5279* (p. 208)
129: c TALGLPE: ending for TALGLP command, forcing DRAW mode
130: c TALGBB: bounding box; used only by qdrive (p. 207)
131: c TALFPO: Force page out ** clear bitmap (p. 95)
132: c TALGDW: graphical draw to hor,vert ** abs coords (p. 212)
133: c TALGMV: graphical move to hor,vert ** abs coords (p. 213)
134: */
135: #define TALAMS "\033[0*s"
136: #define TALMOD "\033[1;0r"
137: #define TALPGO "\033[1;0p"
138: #define TALFCTL "\033[0;3x"
139: #define TALTBM "\033[0;8500 v"
140: #define TALLRM "\033[0;11000v"
141: #define PUM "\033[11h"
142: #define TALASF "\033[1 z"
143: #define TALPOP "\033[*]"
144: #define TALPSH "\033[*["
145: #define TALPRM "\033[3y"
146: #define TALGLT "\033[%s*t"
147: #define TALORG "\033[0;0o"
148: #define TALCCNT "\033[1;0u"
149: #define TALPCW "\033[0;8500;11000;0*c"
150: #define TALGLP_init "\033[7;7;8;1;112;5279*w"
151: #define TALGLP "\033[%d;%d;8*w"
152: #define TALFPO "\033[0*F"
153: #define TALGDW "\033[0;%d;%d*d"
154: #define TALGMV "\033[0;%d;%d*m"
155:
156: /* TALPYL: polyline (p. 222)
157: ** 5;0} list of 16-bit signed integers, encoded, mostly relative
158: ** 5,1} list of ASCII absolute coords (if w/o +- signs)(e.g. 315:1222;)
159: */
160:
161: #define TALPYL "\033P5;1}"
162:
163: TERM_PUBLIC void EXCL_init()
164: {
165: fprintf(gpoutfile, "%s%s%s%s%s%s",
166: TALPSH, TALAMS, TALMOD, TALCCNT, TALFCTL, TALASF);
167: /* ^save state ^setEXCL ^PaperSize8.5x11 */
168: /* ^setANSI ^copyCount1 ^absorbCtlChar */
169: fprintf(gpoutfile, "%s%s%s%s%s%s",
170: PUM, TALPRM, TALPGO, TALPCW, TALORG, TALGLP_init);
171: fprintf(gpoutfile, TALGLT, "");
172: /* ^setUnits ^landscape ^OriginZero ^SolidLine */
173: /* ^Units1/1000" ^pageClip ^SetLine */
174: }
175:
176: TERM_PUBLIC void EXCL_graphics()
177: {
178: }
179:
180: TERM_PUBLIC void EXCL_text()
181: {
182: fputs(TALFPO, gpoutfile);
183: /* ^pageout */
184: }
185:
186:
187: TERM_PUBLIC void EXCL_linetype(linetype)
188: int linetype;
189: {
190: /* excl line widths in mils: 4 is mimimum, but too thin; then
191: 7,10,14,17,20,24,27...
192: exclpen=MOD(NPEN,8)*7
193: CSI exclpen; exclpen; TALGLPE
194: */
195: static char *type[2 + 9] =
196: {
197: "", "40;40", "", "42;42", "14;21",
198: /* .... ---- -- -- -- . . . */
199: "", "49;30", "14;21", "", "49;30", "14;21"
200: /* same pattern, but thicker.. and thicker */
201: };
202: static int width[2+9] = { 14, 7, 7, 7, 7, 10, 10, 10, 17, 17, 17 };
203:
204: if (linetype >= 9)
205: linetype %= 9;
206:
207: fprintf(gpoutfile, TALGLP, width[linetype + 2], width[linetype + 2]);
208: /* ^width in dots */
209: fprintf(gpoutfile, TALGLT, type[linetype + 2]);
210: /* ^line type */
211: }
212:
213:
214: TERM_PUBLIC void EXCL_move(x, y)
215: unsigned int x, y;
216: {
217: fprintf(gpoutfile, TALGMV, 1000 + x, EXCL_YLAST + 1000 - y);
218: /* ^pen up vector */
219: }
220:
221:
222: TERM_PUBLIC void EXCL_vector(x2, y2)
223: unsigned int x2, y2;
224: {
225: fprintf(gpoutfile, TALGDW, 1000 + x2, EXCL_YLAST + 1000 - y2);
226: /* ^pen down vector */
227: }
228:
229:
230: TERM_PUBLIC void EXCL_put_text(x, y, str)
231: unsigned int x, y;
232: char str[];
233: {
234: char ch;
235: EXCL_move(x, y - EXCL_VCHAR / 3);
236: ch = *str++;
237: while (ch != NUL) {
238: putc(ch, gpoutfile);
239: ch = *str++;
240: }
241: }
242:
243: TERM_PUBLIC void EXCL_reset()
244: {
245: fprintf(gpoutfile, "%s%s", TALFPO, TALPOP);
246: /* ^pageout ^pop */
247: }
248:
249:
250: #endif /* TERM_BODY */
251:
252: #ifdef TERM_TABLE
253:
254: TERM_TABLE_START(excl_driver)
255: "excl", "Talaris EXCL Laser printer (also Talaris 1590 and others)",
256: EXCL_XMAX, EXCL_YMAX, EXCL_VCHAR, EXCL_HCHAR,
257: EXCL_VTIC, EXCL_HTIC, options_null, EXCL_init, EXCL_reset,
258: EXCL_text, null_scale, EXCL_graphics, EXCL_move, EXCL_vector,
259: EXCL_linetype, EXCL_put_text, null_text_angle,
260: null_justify_text, line_and_point, do_arrow, set_font_null
261: TERM_TABLE_END(excl_driver)
262: #undef LAST_TERM
263: #define LAST_TERM excl_driver
264:
265: #endif /* TERM_TABLE */
266: #endif /* TERM_PROTO_ONLY */
267:
268: #ifdef TERM_HELP
269: START_HELP(excl)
270: "1 excl",
271: "?commands set terminal excl",
272: "?set terminal excl",
273: "?set term excl",
274: "?terminal excl",
275: "?term excl",
276: "?excl",
277: " The `excl` terminal driver supports Talaris printers such as the EXCL Laser",
278: " printer and the 1590. It has no options."
279: END_HELP(excl)
280: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>