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

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

1.1       maekawa     1: /*
1.1.1.2 ! maekawa     2:  * $Id: fg.trm,v 1.5 1998/12/14 18:39:04 lhecking Exp $
1.1       maekawa     3:  */
                      4:
                      5: /* GNUPLOT - fg.trm */
                      6:
                      7: /*[
                      8:  * Copyright 1990 - 1993, 1998
                      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:  *     Under Zortech C
                     42:  *      egalib, vgalib, vgamono, svga, mcga, cga, hercules, att
                     43:  *
                     44:  * AUTHORS
                     45:  *               Gnuplot for DOS 386/flash graphics
                     46:  *                               Clifton T. Liu
                     47:  *
                     48:  * There is a mailing list for gnuplot users. Note, however, that the
                     49:  * newsgroup
                     50:  *     comp.graphics.apps.gnuplot
                     51:  * is identical to the mailing list (they
                     52:  * both carry the same set of messages). We prefer that you read the
                     53:  * messages through that newsgroup, to subscribing to the mailing list.
                     54:  * (If you can read that newsgroup, and are already on the mailing list,
                     55:  * please send a message to majordomo@dartmouth.edu, asking to be
                     56:  * removed from the mailing list.)
                     57:  *
                     58:  * The address for mailing to list members is
                     59:  *        info-gnuplot@dartmouth.edu
                     60:  * and for mailing administrative requests is
                     61:  *        majordomo@dartmouth.edu
                     62:  * The mailing list for bug reports is
                     63:  *        bug-gnuplot@dartmouth.edu
                     64:  * The list of those interested in beta-test versions is
                     65:  *        info-gnuplot-beta@dartmouth.edu
                     66:  */
                     67: /* The modifications to allow Gnuplot to compile with Zortech C/C++   */
                     68: /* 3.1 /Flash Graphics were made by Clifton T. Liu               */
                     69: /* (cliu@merlin.appmath.columbia.edu)           20 Feb 1993      */
                     70:
                     71: /*
                     72:  * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
                     73:  */
                     74:
                     75: #include "driver.h"
                     76:
                     77: #ifdef TERM_REGISTER
                     78: register_term(hercules)
                     79: register_term(egamono)
                     80: register_term(egalib)
                     81: register_term(vgalib)
                     82: register_term(vgamono)
                     83: register_term(svgalib)
                     84: register_term(ssvgalib)
                     85: #endif
                     86:
                     87: #ifdef TERM_PROTO
                     88: TERM_PUBLIC void PC_text __PROTO((void));
                     89: TERM_PUBLIC void PC_reset __PROTO((void));
                     90: TERM_PUBLIC int VGA_text_angle __PROTO((int ang));
                     91: TERM_PUBLIC int VGA_justify_text __PROTO((enum JUSTIFY mode));
                     92: TERM_PUBLIC void VGA_init __PROTO((void));
                     93: TERM_PUBLIC void HERC_graphics __PROTO((void));
                     94: TERM_PUBLIC void EGAMONO_graphics __PROTO((void));
                     95: TERM_PUBLIC void EGA_graphics __PROTO((void));
                     96: TERM_PUBLIC void VGA_graphics __PROTO((void));
                     97: TERM_PUBLIC void VGAMONO_graphics __PROTO((void));
                     98: TERM_PUBLIC void SVGA_graphics __PROTO((void));
                     99: TERM_PUBLIC void SSVGA_graphics __PROTO((void));
                    100: TERM_PUBLIC void VGA_linetype __PROTO((int linetype));
                    101: #define HERC_XMAX 720
                    102: #define HERC_YMAX 348
                    103:
                    104: #define HERC_XLAST (HERC_XMAX - 1)
                    105: #define HERC_YLAST (HERC_YMAX - 1)
                    106:
                    107: #define HERC_VCHAR 10
                    108: #define HERC_HCHAR 8
                    109: #define HERC_VTIC 5
                    110: #define HERC_HTIC 5
                    111:
                    112:
                    113:
                    114: #define EGA_XMAX 640
                    115: #define EGA_YMAX 350
                    116:
                    117: #define EGA_XLAST (EGA_XMAX - 1)
                    118: #define EGA_YLAST (EGA_YMAX - 1)
                    119:
                    120: #define EGA_VCHAR 18
                    121: #define EGA_HCHAR 8
                    122: #define EGA_VTIC 5
                    123: #define EGA_HTIC 5
                    124:
                    125:
                    126: #define VGA_XMAX 640
                    127: #define VGA_YMAX 480
                    128:
                    129: #define VGA_XLAST (VGA_XMAX - 1)
                    130: #define VGA_YLAST (VGA_YMAX - 1)
                    131:
                    132: #define VGA_VCHAR 24
                    133: #define VGA_HCHAR 8
                    134: #define VGA_VTIC 5
                    135: #define VGA_HTIC 5
                    136:
                    137:
                    138: #define SVGA_XMAX 800
                    139: #define SVGA_YMAX 600
                    140:
                    141: #define SVGA_XLAST (SVGA_XMAX - 1)
                    142: #define SVGA_YLAST (SVGA_YMAX - 1)
                    143:
                    144: #define SVGA_VCHAR 24
                    145: #define SVGA_HCHAR 8
                    146: #define SVGA_VTIC 5
                    147: #define SVGA_HTIC 5
                    148:
                    149: #define SSVGA_XMAX 1024
                    150: #define SSVGA_YMAX 768
                    151:
                    152: #define SSVGA_XLAST (SSVGA_XMAX - 1)
                    153: #define SSVGA_YLAST (SSVGA_YMAX - 1)
                    154:
                    155: #define SSVGA_VCHAR 24
                    156: #define SSVGA_HCHAR 8
                    157: #define SSVGA_VTIC 5
                    158: #define SSVGA_HTIC 5
                    159:
                    160: #endif /* TERM_PROTO */
                    161:
                    162: #ifndef TERM_PROTO_ONLY
                    163: #ifdef TERM_BODY
                    164:
                    165: void pause __PROTO((void));
                    166:
                    167: #include <fg.h>
                    168:
                    169: static int pattern[] ={ 0xffff, 0x0f0f, 0xffff, 0xaaaa, 0x3333, 0x3f3f, 0x0f0f };
                    170:
                    171: static int graphics_on = FALSE;
                    172: int startx, starty;
                    173: /*
                    174: int pc_angle;
                    175: #define PC_VCHAR FNT5X9_VCHAR
                    176: #define PC_HCHAR FNT5X9_HCHAR
                    177: */
                    178: void pause()
                    179: {                              /* press any key to continue... */
                    180:     (void) getch();
                    181: }
                    182:
                    183:
                    184: TERM_PUBLIC void PC_text()
                    185: {
                    186:     if (graphics_on) {
                    187:        graphics_on = FALSE;
                    188:        pause();
                    189:     }
                    190:     fg_term();
                    191: }
                    192:
                    193: TERM_PUBLIC void PC_reset()
                    194: {
                    195: }
                    196:
                    197:
                    198:
                    199: /* all of the FlashGraphics C routines for the different graphics devices
                    200:  * go here */
                    201:
                    202:
                    203:
                    204: static int vga256color[] ={ 7, 8, 2, 3, 4, 5, 9, 14, 12, 15, 13, 10, 11, 1, 6 };
                    205: static int *vgacolor = vga256color;
                    206: static fg_color_t vga_color;
                    207: static int text_angle;
                    208: static fg_line_t line_to_draw;
                    209:
                    210: TERM_PUBLIC int VGA_text_angle(ang)
                    211: int ang;
                    212: {
                    213:     text_angle = ang;
                    214:     return TRUE;
                    215: }
                    216:
                    217: TERM_PUBLIC int VGA_justify_text(mode)
                    218: enum JUSTIFY mode;
                    219: {
                    220:     return FALSE;
                    221: }
                    222:
                    223: TERM_PUBLIC void VGA_init()
                    224: {
                    225:     if (fg_init() == FG_NULL) {
                    226:        fputs("Graphics card not detected.\n", stderr);
                    227:        exit(EXIT_FAILURE);
                    228:     }
                    229: }
                    230:
                    231: TERM_PUBLIC void HERC_graphics()
                    232: {
                    233:     fg_init_herc();
                    234:     graphics_on = TRUE;
                    235: }
                    236:
                    237: TERM_PUBLIC void EGAMONO_graphics()
                    238: {
                    239:     fg_init_egamono();
                    240:     graphics_on = TRUE;
                    241: }
                    242:
                    243: TERM_PUBLIC void EGA_graphics()
                    244: {
                    245:     fg_init_egaecd();
                    246:     graphics_on = TRUE;
                    247: }
                    248:
                    249: TERM_PUBLIC void VGA_graphics()
                    250: {
                    251:     fg_init_vga12();
                    252:     graphics_on = TRUE;
                    253: }
                    254:
                    255: TERM_PUBLIC void VGAMONO_graphics()
                    256: {
                    257:     fg_init_vga11();
                    258:     graphics_on = TRUE;
                    259: }
                    260:
                    261: TERM_PUBLIC void SVGA_graphics()
                    262: {
                    263:     fg_init_vesa6a();
                    264:     graphics_on = TRUE;
                    265: }
                    266:
                    267: TERM_PUBLIC void SSVGA_graphics()
                    268: {
                    269:     fg_init_vesa5();
                    270:     graphics_on = TRUE;
                    271: }
                    272:
                    273: TERM_PUBLIC void VGA_linetype(linetype)
                    274: {
                    275:     if (linetype >= 13)
                    276:        linetype %= 13;
                    277:     vga_color = fg.color[vgacolor[linetype + 2]];
                    278: }
                    279:
                    280: TERM_PUBLIC void VGA_put_text(x, y, str)
                    281: unsigned int x, y;
                    282: char *str;
                    283: {
                    284:     fg_puts(vga_color, FG_MODE_SET, ~0, text_angle, x, y, str, fg.displaybox);
                    285: }
                    286:
                    287: TERM_PUBLIC void VGA_move(x, y)
                    288: {
                    289:     line_to_draw[FG_X1] = x;
                    290:     line_to_draw[FG_Y1] = y;
                    291: }
                    292:
                    293:
                    294: TERM_PUBLIC void VGA_vector(x, y)
                    295: {
                    296:     line_to_draw[FG_X2] = x;
                    297:     line_to_draw[FG_Y2] = y;
                    298:     fg_drawline(vga_color, FG_MODE_SET, ~0, FG_LINE_SOLID, line_to_draw);
                    299:     line_to_draw[FG_X1] = x;
                    300:     line_to_draw[FG_Y1] = y;
                    301: }
                    302:
                    303: TERM_PUBLIC void VGA_text()
                    304: {
                    305:     if (graphics_on) {
                    306:        graphics_on = FALSE;
                    307:        fg_flush();
                    308:        pause();
                    309:     }
                    310:     fg_term();
                    311: }
                    312:
                    313: TERM_PUBLIC void VGA_reset()
                    314: {
                    315:     fg_term();
                    316: }
                    317:
                    318: #endif /* TERM_BODY */
                    319:
                    320: #ifdef TERM_TABLE
                    321:
                    322: TERM_TABLE_START(hercules_driver)
                    323:     "hercules", "IBM PC/Clone with Hercules graphics board",
                    324:     HERC_XMAX, HERC_YMAX, HERC_VCHAR, HERC_HCHAR,
                    325:     HERC_VTIC, HERC_HTIC, options_null, VGA_init, VGA_reset,
                    326:     VGA_text, null_scale, HERC_graphics, VGA_move, VGA_vector,
                    327:     VGA_linetype, VGA_put_text, VGA_text_angle,
                    328:     VGA_justify_text, do_point, do_arrow, set_font_null
                    329: TERM_TABLE_END(hercules_driver)
                    330:
                    331: #undef LAST_TERM
                    332: #define LAST_TERM hercules_driver
                    333:
                    334: TERM_TABLE_START(egamono_driver)
                    335:     "egamono", "IBM PC/Clone with monochrome EGA graphics board",
                    336:     EGA_XMAX, EGA_YMAX, EGA_VCHAR, EGA_HCHAR,
                    337:     EGA_VTIC, EGA_HTIC, options_null, VGA_init, VGA_reset,
                    338:     VGA_text, null_scale, EGAMONO_graphics, VGA_move, VGA_vector,
                    339:     VGA_linetype, VGA_put_text, VGA_text_angle,
                    340:     VGA_justify_text, do_point, do_arrow, set_font_null
                    341: TERM_TABLE_END(egamono_driver)
                    342:
                    343: #undef LAST_TERM
                    344: #define LAST_TERM egamono_driver
                    345:
                    346: TERM_TABLE_START(egalib_driver)
                    347:     "egalib", "IBM PC/Clone with color EGA graphics board",
                    348:     EGA_XMAX, EGA_YMAX, EGA_VCHAR, EGA_HCHAR,
                    349:     EGA_VTIC, EGA_HTIC, options_null, VGA_init, VGA_reset,
                    350:     VGA_text, null_scale, EGA_graphics, VGA_move, VGA_vector,
                    351:     VGA_linetype, VGA_put_text, VGA_text_angle,
                    352:     VGA_justify_text, do_point, do_arrow, set_font_null
                    353: TERM_TABLE_END(egalib_driver)
                    354:
                    355: #undef LAST_TERM
                    356: #define LAST_TERM egalib_driver
                    357:
                    358: TERM_TABLE_START(vgalib_driver)
                    359:     "vgalib", "IBM PC/Clone with VGA graphics board",
                    360:     VGA_XMAX, VGA_YMAX, VGA_VCHAR, VGA_HCHAR,
                    361:     VGA_VTIC, VGA_HTIC, options_null, VGA_init, VGA_reset,
                    362:     VGA_text, null_scale, VGA_graphics, VGA_move, VGA_vector,
                    363:     VGA_linetype, VGA_put_text, VGA_text_angle,
                    364:     VGA_justify_text, do_point, do_arrow, set_font_null
                    365: TERM_TABLE_END(vgalib_driver)
                    366:
                    367: #undef LAST_TERM
                    368: #define LAST_TERM vgalib_driver
                    369:
                    370: TERM_TABLE_START(vgamono_driver)
                    371:     "vgamono", "IBM PC/Clone with monochrome VGA graphics board",
                    372:     VGA_XMAX, VGA_YMAX, VGA_VCHAR, VGA_HCHAR,
                    373:     VGA_VTIC, VGA_HTIC, options_null, VGA_init, VGA_reset,
                    374:     VGA_text, null_scale, VGAMONO_graphics, VGA_move, VGA_vector,
                    375:     VGA_linetype, VGA_put_text, VGA_text_angle,
                    376:     VGA_justify_text, do_point, do_arrow, set_font_null
                    377: TERM_TABLE_END(vgamono_driver)
                    378:
                    379: #undef LAST_TERM
                    380: #define LAST_TERM vgamono_driver
                    381:
                    382: TERM_TABLE_START(svgalib_driver)
                    383:     "svgalib", "IBM PC/Clone with VESA Super VGA graphics board",
                    384:     SVGA_XMAX, SVGA_YMAX, SVGA_VCHAR, SVGA_HCHAR,
                    385:     SVGA_VTIC, SVGA_HTIC, options_null, VGA_init, VGA_reset,
                    386:     VGA_text, null_scale, SVGA_graphics, VGA_move, VGA_vector,
                    387:     VGA_linetype, VGA_put_text, VGA_text_angle,
                    388:     VGA_justify_text, do_point, do_arrow, set_font_null
                    389: TERM_TABLE_END(svgalib_driver)
                    390:
                    391: #undef LAST_TERM
                    392: #define LAST_TERM svgalib_driver
                    393:
                    394: TERM_TABLE_START(ssvgalib_driver)
                    395:     "ssvgalib", "IBM PC/Clone with VESA 256 color 1024 by 768 super VGA",
                    396:     SSVGA_XMAX, SSVGA_YMAX, SSVGA_VCHAR, SSVGA_HCHAR,
                    397:     SSVGA_VTIC, SSVGA_HTIC, options_null, VGA_init, VGA_reset,
                    398:     VGA_text, null_scale, SSVGA_graphics, VGA_move, VGA_vector,
                    399:     VGA_linetype, VGA_put_text, VGA_text_angle,
                    400:     VGA_justify_text, do_point, do_arrow, set_font_null
                    401: TERM_TABLE_END(ssvgalib_driver)
                    402:
                    403: #undef LAST_TERM
                    404: #define LAST_TERM ssvgalib_driver
                    405:
                    406: #endif /* TERM_TABLE */
                    407: #endif /* TERM_PROTO_ONLY */
                    408:
                    409:
                    410: #ifdef TERM_HELP
                    411: START_HELP(hercules)
                    412: "1 hercules",
                    413: "?commands set terminal hercules",
                    414: "?set terminal hercules",
                    415: "?set term hercules",
                    416: "?terminal hercules",
                    417: "?term hercules",
                    418: "?hercules",
                    419: "?commands set terminal egalib",
                    420: "?set terminal egalib",
                    421: "?set term egalib",
                    422: "?terminal egalib",
                    423: "?term egalib",
                    424: "?egalib",
                    425: "?commands set terminal egamono",
                    426: "?set terminal egamono",
                    427: "?set term egamono",
                    428: "?terminal egamono",
                    429: "?term egamono",
                    430: "?egamono",
                    431: "?commands set terminal vgalib",
                    432: "?set terminal vgalib",
                    433: "?set term vgalib",
                    434: "?terminal vgalib",
                    435: "?term vgalib",
                    436: "?vgalib",
                    437: "?commands set terminal vgamono",
                    438: "?set terminal vgamono",
                    439: "?set term vgamono",
                    440: "?terminal vgamono",
                    441: "?term vgamono",
                    442: "?vgamono",
                    443: "?commands set terminal svgalib",
                    444: "?set terminal svgalib",
                    445: "?set term svgalib",
                    446: "?terminal svgalib",
                    447: "?term svgalib",
                    448: "?svgalib",
                    449: "?commands set terminal ssvgalib",
                    450: "?set terminal ssvgalib",
                    451: "?set term ssvgalib",
                    452: "?terminal ssvgalib",
                    453: "?term ssvgalib",
                    454: "?ssvgalib",
                    455: " These drivers supports PC monitors with autodetected graphics boards.  They",
                    456: " can be used only when compiled with Zortech C/C++.  None have options."
                    457: END_HELP(hercules)
                    458: #endif /* TERM_HELP */

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