Annotation of OpenXM_contrib/gnuplot/term/mgr.trm, Revision 1.1.1.1
1.1 maekawa 1: /*
2: * Id: $
3: */
4:
5: /* GNUPLOT - mgr.trm */
6:
7: /*[
8: * Copyright 1986 - 1993, 1998 Thomas Williams, Colin Kelley
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:
37: /*
38: * This file is included by ../term.c.
39: *
40: * This terminal driver supports:
41: * Mgr window system, color display
42: *
43: * AUTHOR
44: * Vincent Broman, broman@nosc.mil
45: */
46: /*
47: * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
48: */
49:
50: #include "driver.h"
51:
52: #ifdef TERM_REGISTER
53: register_term(mgr)
54: #endif
55:
56: #ifdef TERM_PROTO
57: TERM_PUBLIC void MGR_init __PROTO((void));
58: TERM_PUBLIC void MGR_graphics __PROTO((void));
59: TERM_PUBLIC void MGR_text __PROTO((void));
60: TERM_PUBLIC void MGR_linetype __PROTO((int linetype));
61: TERM_PUBLIC void MGR_move __PROTO((unsigned int x, unsigned int y));
62: TERM_PUBLIC void MGR_vector __PROTO((unsigned int x, unsigned int y));
63: TERM_PUBLIC void MGR_put_text __PROTO((unsigned int x, unsigned int y, char *str));
64: TERM_PUBLIC void MGR_reset __PROTO((void));
65: #define MGR_XMAX 640
66: #define MGR_YMAX 400
67: #define MGR_VCHAR 16
68: #define MGR_HCHAR 8
69: #define MGR_VTIC 4
70: #define MGR_HTIC 4
71: #endif /* TERM_PROTO */
72:
73: #ifndef TERM_PROTO_ONLY
74: #ifdef TERM_BODY
75: #undef ESC
76: #include <term.h> /* from Mgr, not gnuplot */
77:
78:
79:
80: static int MGR_border = 5;
81: static int MGR_winnbr = 0;
82:
83: static int MGR_rowcount = 24;
84: static int MGR_winwidth = MGR_XMAX;
85: static int MGR_winheight = MGR_YMAX;
86: static int MGR_vchar = MGR_VCHAR;
87: static int MGR_hchar = MGR_HCHAR;
88:
89:
90: TERM_PUBLIC void MGR_init()
91: {
92: char res[300];
93: int winnbr;
94: int w, h, bor;
95:
96: m_setup(0);
97: m_ttyset();
98:
99: m_getinfo(G_SYSTEM);
100: if (m_gets(res) && sscanf(res, "%*s%d%d%d", &w, &h, &bor) == 3)
101: MGR_border = bor;
102:
103: m_newwin(0, 0, MGR_winwidth + 2 * MGR_border,
104: MGR_winheight + 2 * MGR_border);
105:
106: if (m_gets(res) && sscanf(res, "%d", &winnbr) == 1)
107: MGR_winnbr = winnbr;
108:
109: /* if no alt window is created, then the main window is used
110: * and if size is different, term_tbl updated later */
111: m_selectwin(MGR_winnbr);
112: m_setmode(M_ABS);
113:
114: m_getinfo(G_FONT);
115: if (m_gets(res) && sscanf(res, "%d %d", &w, &h) == 2) {
116: MGR_vchar = h;
117: MGR_hchar = w;
118: }
119: m_ttyreset();
120:
121: term->v_char = MGR_vchar;
122: term->h_char = MGR_hchar;
123: term->v_tic = MGR_vchar / 4;
124: term->h_tic = MGR_hchar / 2;
125:
126: m_selectwin(0);
127: m_flush();
128: }
129:
130:
131: TERM_PUBLIC void MGR_graphics()
132: {
133: char res[32];
134: int c, r, w, h;
135:
136: m_selectwin(MGR_winnbr);
137: m_setmode(M_ACTIVATE);
138: m_clear();
139:
140: /* we permit the user to reshape the window arbitrarily.
141: do_plot calls boundary to recheck the term_tbl for each plot */
142: m_ttyset();
143: m_getinfo(G_WINSIZE);
144: if (m_gets(res) && sscanf(res, "%d %d", &c, &r) == 2)
145: MGR_rowcount = r;
146: m_getinfo(G_COORDS);
147: if (m_gets(res) && sscanf(res, "%d %d %d %d", &c, &r, &w, &h) == 4) {
148: term->xmax = MGR_winwidth = w;
149: term->ymax = MGR_winheight = h;
150: }
151: m_ttyreset();
152: m_flush();
153: }
154:
155:
156: TERM_PUBLIC void MGR_text()
157: {
158: m_go(0, 0);
159: m_aligntext();
160: if (MGR_winnbr == 0)
161: m_move(0, MGR_rowcount - 1);
162: m_selectwin(0);
163: m_flush();
164: }
165:
166:
167: TERM_PUBLIC void MGR_linetype(linetype)
168: int linetype;
169: {
170: /*
171: * this mapping of colors is intended for a color sun on which
172: * colors 0-23 are defined, 0 is white, 1 is black.
173: */
174: m_linecolor(B_SRC, (linetype < 0) ? 1 : (2 + (linetype % 22)));
175: }
176:
177:
178: TERM_PUBLIC void MGR_move(x, y)
179: unsigned int x, y;
180: {
181: m_go(x, MGR_winheight - 1 - y);
182: }
183:
184:
185: TERM_PUBLIC void MGR_vector(x, y)
186: unsigned int x, y;
187: {
188: m_draw(x, MGR_winheight - 1 - y);
189: }
190:
191:
192: TERM_PUBLIC void MGR_put_text(x, y, str)
193: unsigned int x, y;
194: char *str;
195: {
196: MGR_move(x, y - MGR_vchar / 2);
197: m_aligntext();
198: m_printstr(str);
199: }
200:
201:
202: TERM_PUBLIC void MGR_reset()
203: {
204: m_destroywin(MGR_winnbr);
205: MGR_winnbr = 0;
206: m_setmode(M_ACTIVATE);
207: m_flush();
208: }
209:
210: #endif /* TERM_BODY */
211:
212: #ifdef TERM_TABLE
213:
214: TERM_TABLE_START(mgr_driver)
215: "mgr", "Mgr window system",
216: /* dimensions nominal, replaced during MGR_graphics call */
217: MGR_XMAX, MGR_YMAX, MGR_VCHAR, MGR_HCHAR,
218: MGR_VTIC, MGR_HTIC, options_null, MGR_init, MGR_reset,
219: MGR_text, null_scale, MGR_graphics, MGR_move, MGR_vector,
220: MGR_linetype, MGR_put_text, null_text_angle,
221: null_justify_text, do_point, do_arrow, set_font_null
222: TERM_TABLE_END(mgr_driver)
223:
224: #undef LAST_TERM
225: #define LAST_TERM mgr_driver
226:
227: #endif /* TERM_TABLE */
228: #endif /* TERM_PROTO_ONLY */
229:
230: #ifdef TERM_HELP
231: START_HELP(mgr)
232: "1 mgr",
233: "?commands set terminal mgr",
234: "?set terminal mgr",
235: "?set term mgr",
236: "?terminal mgr",
237: "?term mgr",
238: "?mgr",
239: " The `mgr` terminal driver supports the Mgr Window system. It has no options."
240: END_HELP(mgr)
241: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>