[BACK]Return to mgr.trm CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot / term

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>