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

Annotation of OpenXM_contrib/gnuplot/term/qms.trm, Revision 1.1.1.2

1.1       maekawa     1: /*
1.1.1.2 ! maekawa     2:  * $Id: qms.trm,v 1.6 1998/11/25 21:07:51 lhecking Exp $
1.1       maekawa     3:  *
                      4:  */
                      5:
                      6: /* GNUPLOT - qms.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:  *  QMS laser printers
                     43:  *
                     44:  * AUTHORS
                     45:  *  Colin Kelley, Thomas Williams, Russell Lang
                     46:  *
                     47:  * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
                     48:  *
                     49:  */
                     50:
                     51: /*
                     52:  * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
                     53:  */
                     54:
                     55: #include "driver.h"
                     56:
                     57: #ifdef TERM_REGISTER
                     58: register_term(qms)
                     59: #endif
                     60:
                     61: #ifdef TERM_PROTO
                     62: TERM_PUBLIC void QMS_init __PROTO((void));
                     63: TERM_PUBLIC void QMS_graphics __PROTO((void));
                     64: TERM_PUBLIC void QMS_text __PROTO((void));
                     65: TERM_PUBLIC void QMS_linetype __PROTO((int linetype));
                     66: TERM_PUBLIC void QMS_move __PROTO((unsigned int x, unsigned int y));
                     67: TERM_PUBLIC void QMS_vector __PROTO((unsigned int x2, unsigned int y2));
                     68: TERM_PUBLIC void QMS_put_text __PROTO((unsigned int x, unsigned int y, char str[]));
                     69: TERM_PUBLIC void QMS_reset __PROTO((void));
                     70:
                     71: #define QMS_XMAX 9000
                     72: #define QMS_YMAX 6000
                     73:
                     74: #define QMS_XLAST (QMS_XMAX - 1)
                     75: #define QMS_YLAST (QMS_YMAX - 1)
                     76:
                     77: #define QMS_VCHAR              120
                     78: #define QMS_HCHAR              70
                     79: #define QMS_VTIC               70
                     80: #define QMS_HTIC               70
                     81: #endif /* TERM_PROTO */
                     82:
                     83: #ifndef TERM_PROTO_ONLY
                     84: #ifdef TERM_BODY
                     85: static int qms_line = 0;       /* to remember current line type */
                     86:
                     87: TERM_PUBLIC void QMS_init()
                     88: {
                     89:     /* This was just ^IOL, but at Rutgers at least we need some more stuff */
                     90:     fputs("^PY^-\n^IOL\n^ISYNTAX00000^F^IB11000^IJ00000^IT00000\n", gpoutfile);
                     91:     /*     ^ QUIC on    ^set defaults  ^ set botttom,top,left margins
                     92:      *            ^landscape         ^free format
                     93:      */
                     94:
                     95: /* set defaults are: implicit decimal point, units in inches,
                     96:  * numbers left justified, units in 1/1000 inch, do not ignore spaces
                     97:  * margins are in 1/1000 inch units
                     98:  */
                     99: }
                    100:
                    101:
                    102: TERM_PUBLIC void QMS_graphics()
                    103: {
                    104:     fputs("^IGV\n", gpoutfile);
                    105:     /*     ^enter graphics vector mode */
                    106: }
                    107:
                    108:
                    109:
                    110: TERM_PUBLIC void QMS_text()
                    111: {
                    112: /* added ^-, because ^, after an ^I command doesn't actually print a page */
                    113: /* Did anybody try this code out?  [uhh...-cdk] */
                    114:     fputs("^IGE\n^-^,", gpoutfile);
                    115:     /*     ^exit graphics vector mode
                    116:      *           ^pass terminator
                    117:      *             ^print page
                    118:      */
                    119: }
                    120:
                    121:
                    122: TERM_PUBLIC void QMS_linetype(linetype)
                    123: int linetype;
                    124: {
                    125:     static int width[2 + 9] = { 7, 3, 3, 3, 3, 5, 5, 5, 7, 7, 7 };
                    126:     static int type[2 + 9] = { 0, 1, 0, 2, 3, 0, 2, 3, 0, 2, 3 };
                    127: /*
                    128:  * I don't know about Villanova, but on our printer, using ^V without
                    129:  * previously setting up a pattern crashes the microcode.
                    130:  * [nope, doesn't crash here. -cdk]
                    131:  * [it generates a controller error here on dotted lines. - rjl]
                    132:  */
                    133: /* Code to define patterns added by rjl
                    134:  * According to the manual it should work - but it doesn't
                    135:  */
                    136:     qms_line = linetype;
                    137:     if (linetype >= 9)
                    138:        linetype %= 9;
                    139:
                    140:     fprintf(gpoutfile, "^PW%02d\n", width[linetype + 2]);
                    141: /*                      ^width in dots */
                    142:
                    143:     switch (type[linetype + 2]) {
                    144:     case 1:                    /* short dash */
                    145:        fputs("^PV102025^G\n^V1\n", gpoutfile);
                    146:        /* ^PV = define pattern vector, 1 = pattern number,
                    147:         * 02 = number of pen downs and ups, 025 = .025" length of ups/downs
                    148:         */
                    149:        break;
                    150:     case 2:                    /* medium dash */
                    151:        fputs("^PV202050^G\n^V2\n", gpoutfile);
                    152:        break;
                    153:     case 3:                    /* long dash */
                    154:        fputs("^PV302100^G\n^V3\n", gpoutfile);
                    155:        break;
                    156:     default:
                    157:     case 0:
                    158:        fputs("^V0\n", gpoutfile);
                    159:        break;
                    160:     }
                    161: }
                    162:
                    163:
                    164: TERM_PUBLIC void QMS_move(x, y)
                    165: unsigned int x, y;
                    166: {
                    167:     fprintf(gpoutfile, "^U%05d:%05d\n", 1000 + x, QMS_YLAST + 1000 - y);
                    168:     /*                   ^pen up vector*/
                    169: }
                    170:
                    171:
                    172: TERM_PUBLIC void QMS_vector(x2, y2)
                    173: unsigned int x2, y2;
                    174: {
                    175:     fprintf(gpoutfile, "^D%05d:%05d\n", 1000 + x2, QMS_YLAST + 1000 - y2);
                    176:     /*                  ^pen down vector*/
                    177: }
                    178:
                    179:
                    180: TERM_PUBLIC void QMS_put_text(x, y, str)
                    181: unsigned int x, y;
                    182: char str[];
                    183: {
                    184:     char ch;
                    185:     QMS_move(x, y + QMS_VCHAR / 3);
                    186:     fputs("^IGE\n", gpoutfile);
                    187:     ch = *str++;
                    188:     while (ch != NUL) {
                    189:        if (ch == '^')
                    190:            putc('^', gpoutfile);
                    191:        putc(ch, gpoutfile);
                    192:        ch = *str++;
                    193:     }
                    194:     fputs("\n^IGV\n", gpoutfile);
                    195:     QMS_linetype(qms_line);    /* restore line type */
                    196: }
                    197:
                    198:
                    199: TERM_PUBLIC void QMS_reset()
                    200: {
                    201:     fputs("^PN^-\n", gpoutfile);
                    202:     /*     ^QUIC off */
                    203: }
                    204:
                    205: #endif /* TERM_BODY */
                    206:
                    207: #ifdef TERM_TABLE
                    208: TERM_TABLE_START(qms_driver)
                    209:     "qms", "QMS/QUIC Laser printer (also Talaris 1200 and others)",
                    210:     QMS_XMAX, QMS_YMAX, QMS_VCHAR, QMS_HCHAR,
                    211:     QMS_VTIC, QMS_HTIC, options_null, QMS_init, QMS_reset,
                    212:     QMS_text, null_scale, QMS_graphics, QMS_move, QMS_vector,
                    213:     QMS_linetype, QMS_put_text, null_text_angle,
                    214:     null_justify_text, line_and_point, do_arrow, set_font_null
                    215: TERM_TABLE_END(qms_driver)
                    216:
                    217: #undef LAST_TERM
                    218: #define LAST_TERM qms_driver
                    219:
                    220: #endif /* TERM_TABLE */
                    221: #endif /* TERM_PROTO_ONLY */
                    222:
                    223: #ifdef TERM_HELP
                    224: START_HELP(qms)
                    225: "1 qms",
                    226: "?commands set terminal qms",
                    227: "?set terminal qms",
                    228: "?set term qms",
                    229: "?terminal qms",
                    230: "?term qms",
                    231: "?qms",
                    232: " The `qms` terminal driver supports the QMS/QUIC Laser printer, the Talaris",
                    233: " 1200 and others.  It has no options."
                    234: END_HELP(qms)
                    235: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>