Annotation of OpenXM_contrib/gnuplot/term/regis.trm, Revision 1.1
1.1 ! maekawa 1: /*
! 2: * $Id: regis.trm,v 1.18 1998/04/14 00:18:06 drd Exp $
! 3: *
! 4: */
! 5:
! 6: /* GNUPLOT - regis.trm */
! 7:
! 8: /*[
! 9: * Copyright 1990 - 1993, 1998
! 10: *
! 11: * Permission to use, copy, and distribute this software and its
! 12: * documentation for any purpose with or without fee is hereby granted,
! 13: * provided that the above copyright notice appear in all copies and
! 14: * that both that copyright notice and this permission notice appear
! 15: * in supporting documentation.
! 16: *
! 17: * Permission to modify the software is granted, but not the right to
! 18: * distribute the complete modified source code. Modifications are to
! 19: * be distributed as patches to the released version. Permission to
! 20: * distribute binaries produced by compiling modified sources is granted,
! 21: * provided you
! 22: * 1. distribute the corresponding source modifications from the
! 23: * released version in the form of a patch file along with the binaries,
! 24: * 2. add special version identification to distinguish your version
! 25: * in addition to the base release version number,
! 26: * 3. provide your name and address as the primary contact for the
! 27: * support of your modified version, and
! 28: * 4. retain our contact information in regard to use of the base
! 29: * software.
! 30: * Permission to distribute the released version of the source code along
! 31: * with corresponding source modifications in the form of a patch file is
! 32: * granted with same provisions 2 through 4 for binary distributions.
! 33: *
! 34: * This software is provided "as is" without express or implied warranty
! 35: * to the extent permitted by applicable law.
! 36: ]*/
! 37:
! 38: /*
! 39: * This file is included by ../term.c.
! 40: *
! 41: * This terminal driver supports:
! 42: * REGIS devices
! 43: *
! 44: * AUTHORS
! 45: * Colin Kelley, Thomas Williams
! 46: *
! 47: * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
! 48: *
! 49: */
! 50:
! 51: #include "driver.h"
! 52:
! 53: #ifdef TERM_REGISTER
! 54: register_term(regis)
! 55: #endif
! 56:
! 57:
! 58: #ifdef TERM_PROTO
! 59: TERM_PUBLIC void REGISinit __PROTO((void));
! 60: TERM_PUBLIC void REGISgraphics __PROTO((void));
! 61: TERM_PUBLIC void REGISinit __PROTO((void));
! 62: TERM_PUBLIC void REGISgraphics __PROTO((void));
! 63: TERM_PUBLIC void REGIStext __PROTO((void));
! 64: TERM_PUBLIC void REGISlinetype __PROTO((int linetype));
! 65: TERM_PUBLIC void REGISmove __PROTO((unsigned int x, unsigned int y));
! 66: TERM_PUBLIC void REGISvector __PROTO((unsigned int x, unsigned int y));
! 67: TERM_PUBLIC void REGISput_text __PROTO((unsigned int x, unsigned int y, char *str));
! 68: TERM_PUBLIC int REGIStext_angle __PROTO((int ang));
! 69: TERM_PUBLIC void REGISreset __PROTO((void));
! 70: TERM_PUBLIC void REGISoptions __PROTO((void));
! 71:
! 72: #define REGISXMAX 800
! 73: #define REGISYMAX 440
! 74:
! 75: #define REGISXLAST (REGISXMAX - 1)
! 76: #define REGISYLAST (REGISYMAX - 1)
! 77:
! 78: #define REGISVCHAR 20
! 79: #define REGISHCHAR 9
! 80: #define REGISVTIC 8
! 81: #define REGISHTIC 6
! 82:
! 83: /* is defined in plot.h
! 84: #define TRUE 1
! 85: #define FALSE 0
! 86: */
! 87: #endif
! 88:
! 89:
! 90:
! 91: #ifndef TERM_PROTO_ONLY
! 92: #ifdef TERM_BODY
! 93:
! 94: static int REGIS16color = FALSE;
! 95:
! 96: static int REGISang = 0;
! 97:
! 98: TERM_PUBLIC void REGISinit()
! 99: {
! 100: fputs("\033[r\033[24;1H", gpoutfile);
! 101: /* 1 2
! 102: * 1. reset scrolling region
! 103: * 2. locate cursor on bottom line
! 104: */
! 105: }
! 106:
! 107:
! 108: /* thanks to calmasd!dko (Dan O'Neill) for adding S(E) for vt125s */
! 109: TERM_PUBLIC void REGISgraphics()
! 110: {
! 111: fputs("\033[2J\033P1pS(C0)S(E)T(A0)\n", gpoutfile);
! 112: /* 1 2 3 4 5
! 113: * 1. clear screen
! 114: * 2. enter ReGIS graphics
! 115: * 3. turn off graphics diamond cursor
! 116: * 4. clear graphics screen
! 117: * 5. character set option.
! 118: */
! 119: (void) REGIStext_angle(0); /* select text size and angle */
! 120: }
! 121:
! 122:
! 123: TERM_PUBLIC void REGIStext()
! 124: {
! 125: fputs("\033\\\033[24;1H", gpoutfile);
! 126: /* 1 2
! 127: * 1. Leave ReGIS graphics mode
! 128: * 2. locate cursor on last line of screen
! 129: */
! 130: }
! 131:
! 132:
! 133: TERM_PUBLIC void REGISlinetype(linetype)
! 134: int linetype;
! 135: {
! 136: /* This will change color in order G,R,B,G-dot,R-dot,B-dot */
! 137:
! 138: static int in_16_map[15 + 2] = { 7, 7, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
! 139: static int lt_16_map[15 + 2] = { 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
! 140: static int in_map[9 + 2] = { 2, 2, 3, 2, 1, 3, 2, 1, 3, 2, 1 };
! 141: static int lt_map[9 + 2] = { 1, 4, 1, 1, 1, 4, 4, 4, 6, 6, 6 };
! 142:
! 143: if (!REGIS16color) {
! 144: if (linetype >= 9)
! 145: linetype %= 9;
! 146: fprintf(gpoutfile, "W(I%d)\n", in_map[linetype + 2]);
! 147: fprintf(gpoutfile, "W(P%d)\n", lt_map[linetype + 2]);
! 148: } else {
! 149: if (linetype >= 15)
! 150: linetype %= 15;
! 151: fprintf(gpoutfile, "W(I%d)\n", in_16_map[linetype + 2]);
! 152: fprintf(gpoutfile, "W(P%d)\n", lt_16_map[linetype + 2]);
! 153: }
! 154: }
! 155:
! 156:
! 157:
! 158: /*
! 159: ** The \n was added in the functions below (and above) in order to not cause
! 160: ** a buffer overflow in devices that can't deal with long line lengths.
! 161: ** The DEC vt-340 doesn't need this, but Reflection 4, a vt-340 emulator
! 162: ** for PC's under MS-DOS and Microsoft Windows does need it.
! 163: ** Also needed for DECterm, a vt-340 emulator for use with Motif 1.0
! 164: ** on Open/VMS.
! 165: ** NGB 9/13/93
! 166: */
! 167:
! 168: TERM_PUBLIC void REGISmove(x, y)
! 169: unsigned int x, y;
! 170: {
! 171: fprintf(gpoutfile, "P[%d,%d]\n", x, REGISYLAST - y);
! 172: }
! 173:
! 174:
! 175: TERM_PUBLIC void REGISvector(x, y)
! 176: unsigned int x, y;
! 177: {
! 178: fprintf(gpoutfile, "v[]v[%d,%d]\n", x, REGISYLAST - y);
! 179: /* the initial v[] is needed to get the first pixel plotted */
! 180: }
! 181:
! 182:
! 183: /* put_text and text_angle by rjl */
! 184: TERM_PUBLIC void REGISput_text(x, y, str)
! 185: unsigned int x, y;
! 186: char *str;
! 187: {
! 188: if (REGISang == 1)
! 189: REGISmove(x - REGISVCHAR / 2 - 1, y);
! 190: else
! 191: REGISmove(x, y + REGISVCHAR / 2 - 1);
! 192: (void) putc('T', gpoutfile);
! 193: (void) putc('\'', gpoutfile);
! 194: while (*str) {
! 195: (void) putc(*str, gpoutfile);
! 196: if (*str == '\'')
! 197: (void) putc('\'', gpoutfile); /* send out another one */
! 198: str++;
! 199: }
! 200: (void) putc('\'', gpoutfile);
! 201: (void) putc('\n', gpoutfile);
! 202: }
! 203:
! 204:
! 205: TERM_PUBLIC int REGIStext_angle(ang)
! 206: int ang;
! 207: {
! 208: REGISang = ang;
! 209: if (ang == 1)
! 210: fputs("T(D90,S1)\n", gpoutfile);
! 211: else
! 212: fputs("T(D0,S1)\n", gpoutfile);
! 213: return TRUE;
! 214: }
! 215:
! 216:
! 217: TERM_PUBLIC void REGISreset()
! 218: {
! 219: fputs("\033[2J\033[24;1H", gpoutfile);
! 220: }
! 221:
! 222: TERM_PUBLIC void REGISoptions()
! 223: {
! 224: int i = 0;
! 225: struct value a;
! 226:
! 227: if (!END_OF_COMMAND) {
! 228: i = (int) real(const_express(&a));
! 229: }
! 230: REGIS16color = (i == 16);
! 231: sprintf(term_options, "%s", REGIS16color ? "16" : "4");
! 232: }
! 233:
! 234: #endif
! 235:
! 236:
! 237: #ifdef TERM_TABLE
! 238: TERM_TABLE_START(regis_driver)
! 239: "regis", "REGIS graphics language",
! 240: REGISXMAX, REGISYMAX, REGISVCHAR, REGISHCHAR,
! 241: REGISVTIC, REGISHTIC, REGISoptions, REGISinit, REGISreset,
! 242: REGIStext, null_scale, REGISgraphics, REGISmove, REGISvector,
! 243: REGISlinetype, REGISput_text, REGIStext_angle,
! 244: null_justify_text, line_and_point, do_arrow, set_font_null
! 245: TERM_TABLE_END(regis_driver)
! 246:
! 247: #undef LAST_TERM
! 248: #define LAST_TERM regis_driver
! 249: #endif
! 250: #endif /* TERM_PROTO_ONLY */
! 251:
! 252: #ifdef TERM_HELP
! 253: START_HELP(regis)
! 254: "1 regis",
! 255: "?commands set terminal regis",
! 256: "?set terminal regis",
! 257: "?set term regis",
! 258: "?terminal regis",
! 259: "?term regis",
! 260: "?regis",
! 261: " The `regis` terminal device generates output in the REGIS graphics language.",
! 262: " It has the option of using 4 (the default) or 16 colors.",
! 263: "",
! 264: " Syntax:",
! 265: " set terminal regis {4 | 16}"
! 266: END_HELP(regis)
! 267: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>