Initial release of Maemo 5 port of gnuplot
[gnuplot] / term / fg.trm
diff --git a/term/fg.trm b/term/fg.trm
new file mode 100644 (file)
index 0000000..f959c49
--- /dev/null
@@ -0,0 +1,463 @@
+/* Hello, Emacs, this is -*-C-*-
+ * $Id: fg.trm,v 1.13 2006/07/21 02:35:46 sfeam Exp $
+ */
+
+/* GNUPLOT - fg.trm */
+
+/*[
+ * Copyright 1990 - 1993, 1998, 2004
+ *
+ * Permission to use, copy, and distribute this software and its
+ * documentation for any purpose with or without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.
+ *
+ * Permission to modify the software is granted, but not the right to
+ * distribute the complete modified source code.  Modifications are to
+ * be distributed as patches to the released version.  Permission to
+ * distribute binaries produced by compiling modified sources is granted,
+ * provided you
+ *   1. distribute the corresponding source modifications from the
+ *    released version in the form of a patch file along with the binaries,
+ *   2. add special version identification to distinguish your version
+ *    in addition to the base release version number,
+ *   3. provide your name and address as the primary contact for the
+ *    support of your modified version, and
+ *   4. retain our contact information in regard to use of the base
+ *    software.
+ * Permission to distribute the released version of the source code along
+ * with corresponding source modifications in the form of a patch file is
+ * granted with same provisions 2 through 4 for binary distributions.
+ *
+ * This software is provided "as is" without express or implied warranty
+ * to the extent permitted by applicable law.
+]*/
+
+/*
+ * This file is included by ../term.c.
+ *
+ * This terminal driver supports:
+ *     Under Zortech C
+ *      egalib, vgalib, vgamono, svga, mcga, cga, hercules, att
+ *
+ * AUTHORS
+ *               Gnuplot for DOS 386/flash graphics
+ *                               Clifton T. Liu
+ *
+ */
+
+/* The modifications to allow Gnuplot to compile with Zortech C/C++   */
+/* 3.1 /Flash Graphics were made by Clifton T. Liu               */
+/* (cliu@merlin.appmath.columbia.edu)           20 Feb 1993      */
+
+/*
+ * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
+ */
+
+#include "driver.h"
+
+#ifdef TERM_REGISTER
+register_term(hercules)
+register_term(egamono)
+register_term(egalib)
+register_term(vgalib)
+register_term(vgamono)
+register_term(svgalib)
+register_term(ssvgalib)
+#endif
+
+#ifdef TERM_PROTO
+TERM_PUBLIC void PC_text __PROTO((void));
+TERM_PUBLIC void PC_reset __PROTO((void));
+TERM_PUBLIC int VGA_text_angle __PROTO((int ang));
+TERM_PUBLIC int VGA_justify_text __PROTO((enum JUSTIFY mode));
+TERM_PUBLIC void VGA_init __PROTO((void));
+TERM_PUBLIC void HERC_graphics __PROTO((void));
+TERM_PUBLIC void EGAMONO_graphics __PROTO((void));
+TERM_PUBLIC void EGA_graphics __PROTO((void));
+TERM_PUBLIC void VGA_graphics __PROTO((void));
+TERM_PUBLIC void VGAMONO_graphics __PROTO((void));
+TERM_PUBLIC void SVGA_graphics __PROTO((void));
+TERM_PUBLIC void SSVGA_graphics __PROTO((void));
+TERM_PUBLIC void VGA_linetype __PROTO((int linetype));
+TERM_PUBLIC void VGA_put_text __PROTO((unsigned int x, unsigned int y, const char *str));
+TERM_PUBLIC void VGA_move __PROTO((int x, int y));
+TERM_PUBLIC void VGA_vector __PROTO((int x, int y));
+TERM_PUBLIC void VGA_text __PROTO((void));
+TERM_PUBLIC void VGA_reset __PROTO((void));
+#define HERC_XMAX 720
+#define HERC_YMAX 348
+
+#define HERC_XLAST (HERC_XMAX - 1)
+#define HERC_YLAST (HERC_YMAX - 1)
+
+#define HERC_VCHAR 10
+#define HERC_HCHAR 8
+#define HERC_VTIC 5
+#define HERC_HTIC 5
+
+
+
+#define EGA_XMAX 640
+#define EGA_YMAX 350
+
+#define EGA_XLAST (EGA_XMAX - 1)
+#define EGA_YLAST (EGA_YMAX - 1)
+
+#define EGA_VCHAR 18
+#define EGA_HCHAR 8
+#define EGA_VTIC 5
+#define EGA_HTIC 5
+
+
+#define VGA_XMAX 640
+#define VGA_YMAX 480
+
+#define VGA_XLAST (VGA_XMAX - 1)
+#define VGA_YLAST (VGA_YMAX - 1)
+
+#define VGA_VCHAR 24
+#define VGA_HCHAR 8
+#define VGA_VTIC 5
+#define VGA_HTIC 5
+
+
+#define SVGA_XMAX 800
+#define SVGA_YMAX 600
+
+#define SVGA_XLAST (SVGA_XMAX - 1)
+#define SVGA_YLAST (SVGA_YMAX - 1)
+
+#define SVGA_VCHAR 24
+#define SVGA_HCHAR 8
+#define SVGA_VTIC 5
+#define SVGA_HTIC 5
+
+#define SSVGA_XMAX 1024
+#define SSVGA_YMAX 768
+
+#define SSVGA_XLAST (SSVGA_XMAX - 1)
+#define SSVGA_YLAST (SSVGA_YMAX - 1)
+
+#define SSVGA_VCHAR 24
+#define SSVGA_HCHAR 8
+#define SSVGA_VTIC 5
+#define SSVGA_HTIC 5
+
+#endif /* TERM_PROTO */
+
+#ifndef TERM_PROTO_ONLY
+#ifdef TERM_BODY
+
+void pause __PROTO((void));
+
+#include <fg.h>
+
+static int pattern[] ={ 0xffff, 0x0f0f, 0xffff, 0xaaaa, 0x3333, 0x3f3f, 0x0f0f };
+
+static int graphics_on = FALSE;
+int startx, starty;
+/*
+int pc_angle;
+#define PC_VCHAR FNT5X9_VCHAR
+#define PC_HCHAR FNT5X9_HCHAR
+*/
+void
+pause()
+{                              /* press any key to continue... */
+    (void) getch();
+}
+
+
+TERM_PUBLIC void
+PC_text()
+{
+    if (graphics_on) {
+       graphics_on = FALSE;
+       pause();
+    }
+    fg_term();
+}
+
+TERM_PUBLIC void
+PC_reset()
+{
+}
+
+
+
+/* all of the FlashGraphics C routines for the different graphics devices
+ * go here */
+
+
+
+static int vga256color[] ={ 7, 8, 2, 3, 4, 5, 9, 14, 12, 15, 13, 10, 11, 1, 6 };
+static int *vgacolor = vga256color;
+static fg_color_t vga_color;
+static int text_angle;
+static fg_line_t line_to_draw;
+
+TERM_PUBLIC int
+VGA_text_angle(int ang)
+{
+    text_angle = (ang ? 1 : 0);
+    return TRUE;
+}
+
+TERM_PUBLIC int
+VGA_justify_text(enum JUSTIFY mode)
+{
+    return FALSE;
+}
+
+TERM_PUBLIC void
+VGA_init()
+{
+    if (fg_init() == FG_NULL) {
+       fputs("Graphics card not detected.\n", stderr);
+       exit(EXIT_FAILURE);
+    }
+}
+
+TERM_PUBLIC void
+HERC_graphics()
+{
+    fg_init_herc();
+    graphics_on = TRUE;
+}
+
+TERM_PUBLIC void
+EGAMONO_graphics()
+{
+    fg_init_egamono();
+    graphics_on = TRUE;
+}
+
+TERM_PUBLIC void
+EGA_graphics()
+{
+    fg_init_egaecd();
+    graphics_on = TRUE;
+}
+
+TERM_PUBLIC void
+VGA_graphics()
+{
+    fg_init_vga12();
+    graphics_on = TRUE;
+}
+
+TERM_PUBLIC void
+VGAMONO_graphics()
+{
+    fg_init_vga11();
+    graphics_on = TRUE;
+}
+
+TERM_PUBLIC void
+SVGA_graphics()
+{
+    fg_init_vesa6a();
+    graphics_on = TRUE;
+}
+
+TERM_PUBLIC void
+SSVGA_graphics()
+{
+    fg_init_vesa5();
+    graphics_on = TRUE;
+}
+
+TERM_PUBLIC void
+VGA_linetype(int linetype)
+{
+    if (linetype >= 13)
+       linetype %= 13;
+    if (linetype < -2)
+       linetype = LT_BLACK;
+    vga_color = fg.color[vgacolor[linetype + 2]];
+}
+
+TERM_PUBLIC void
+VGA_put_text(unsigned int x, unsigned int y, const char *str)
+{
+    fg_puts(vga_color, FG_MODE_SET, ~0, text_angle, x, y, str, fg.displaybox);
+}
+
+TERM_PUBLIC void
+VGA_move(unsigned int x, unsigned int y)
+{
+    line_to_draw[FG_X1] = x;
+    line_to_draw[FG_Y1] = y;
+}
+
+
+TERM_PUBLIC void
+VGA_vector(unsigned int x, unsigned int y);
+{
+    line_to_draw[FG_X2] = x;
+    line_to_draw[FG_Y2] = y;
+    fg_drawline(vga_color, FG_MODE_SET, ~0, FG_LINE_SOLID, line_to_draw);
+    line_to_draw[FG_X1] = x;
+    line_to_draw[FG_Y1] = y;
+}
+
+TERM_PUBLIC void
+VGA_text()
+{
+    if (graphics_on) {
+       graphics_on = FALSE;
+       fg_flush();
+       pause();
+    }
+    fg_term();
+}
+
+TERM_PUBLIC void
+VGA_reset()
+{
+    fg_term();
+}
+
+#endif /* TERM_BODY */
+
+#ifdef TERM_TABLE
+
+TERM_TABLE_START(hercules_driver)
+    "hercules", "IBM PC/Clone with Hercules graphics board",
+    HERC_XMAX, HERC_YMAX, HERC_VCHAR, HERC_HCHAR,
+    HERC_VTIC, HERC_HTIC, options_null, VGA_init, VGA_reset,
+    VGA_text, null_scale, HERC_graphics, VGA_move, VGA_vector,
+    VGA_linetype, VGA_put_text, VGA_text_angle,
+    VGA_justify_text, do_point, do_arrow, set_font_null
+TERM_TABLE_END(hercules_driver)
+
+#undef LAST_TERM
+#define LAST_TERM hercules_driver
+
+TERM_TABLE_START(egamono_driver)
+    "egamono", "IBM PC/Clone with monochrome EGA graphics board",
+    EGA_XMAX, EGA_YMAX, EGA_VCHAR, EGA_HCHAR,
+    EGA_VTIC, EGA_HTIC, options_null, VGA_init, VGA_reset,
+    VGA_text, null_scale, EGAMONO_graphics, VGA_move, VGA_vector,
+    VGA_linetype, VGA_put_text, VGA_text_angle,
+    VGA_justify_text, do_point, do_arrow, set_font_null
+TERM_TABLE_END(egamono_driver)
+
+#undef LAST_TERM
+#define LAST_TERM egamono_driver
+
+TERM_TABLE_START(egalib_driver)
+    "egalib", "IBM PC/Clone with color EGA graphics board",
+    EGA_XMAX, EGA_YMAX, EGA_VCHAR, EGA_HCHAR,
+    EGA_VTIC, EGA_HTIC, options_null, VGA_init, VGA_reset,
+    VGA_text, null_scale, EGA_graphics, VGA_move, VGA_vector,
+    VGA_linetype, VGA_put_text, VGA_text_angle,
+    VGA_justify_text, do_point, do_arrow, set_font_null
+TERM_TABLE_END(egalib_driver)
+
+#undef LAST_TERM
+#define LAST_TERM egalib_driver
+
+TERM_TABLE_START(vgalib_driver)
+    "vgalib", "IBM PC/Clone with VGA graphics board",
+    VGA_XMAX, VGA_YMAX, VGA_VCHAR, VGA_HCHAR,
+    VGA_VTIC, VGA_HTIC, options_null, VGA_init, VGA_reset,
+    VGA_text, null_scale, VGA_graphics, VGA_move, VGA_vector,
+    VGA_linetype, VGA_put_text, VGA_text_angle,
+    VGA_justify_text, do_point, do_arrow, set_font_null
+TERM_TABLE_END(vgalib_driver)
+
+#undef LAST_TERM
+#define LAST_TERM vgalib_driver
+
+TERM_TABLE_START(vgamono_driver)
+    "vgamono", "IBM PC/Clone with monochrome VGA graphics board",
+    VGA_XMAX, VGA_YMAX, VGA_VCHAR, VGA_HCHAR,
+    VGA_VTIC, VGA_HTIC, options_null, VGA_init, VGA_reset,
+    VGA_text, null_scale, VGAMONO_graphics, VGA_move, VGA_vector,
+    VGA_linetype, VGA_put_text, VGA_text_angle,
+    VGA_justify_text, do_point, do_arrow, set_font_null
+TERM_TABLE_END(vgamono_driver)
+
+#undef LAST_TERM
+#define LAST_TERM vgamono_driver
+
+TERM_TABLE_START(svgalib_driver)
+    "svgalib", "IBM PC/Clone with VESA Super VGA graphics board",
+    SVGA_XMAX, SVGA_YMAX, SVGA_VCHAR, SVGA_HCHAR,
+    SVGA_VTIC, SVGA_HTIC, options_null, VGA_init, VGA_reset,
+    VGA_text, null_scale, SVGA_graphics, VGA_move, VGA_vector,
+    VGA_linetype, VGA_put_text, VGA_text_angle,
+    VGA_justify_text, do_point, do_arrow, set_font_null
+TERM_TABLE_END(svgalib_driver)
+
+#undef LAST_TERM
+#define LAST_TERM svgalib_driver
+
+TERM_TABLE_START(ssvgalib_driver)
+    "ssvgalib", "IBM PC/Clone with VESA 256 color 1024 by 768 super VGA",
+    SSVGA_XMAX, SSVGA_YMAX, SSVGA_VCHAR, SSVGA_HCHAR,
+    SSVGA_VTIC, SSVGA_HTIC, options_null, VGA_init, VGA_reset,
+    VGA_text, null_scale, SSVGA_graphics, VGA_move, VGA_vector,
+    VGA_linetype, VGA_put_text, VGA_text_angle,
+    VGA_justify_text, do_point, do_arrow, set_font_null
+TERM_TABLE_END(ssvgalib_driver)
+
+#undef LAST_TERM
+#define LAST_TERM ssvgalib_driver
+
+#endif /* TERM_TABLE */
+#endif /* TERM_PROTO_ONLY */
+
+
+#ifdef TERM_HELP
+START_HELP(hercules)
+"1 hercules",
+"?commands set terminal hercules",
+"?set terminal hercules",
+"?set term hercules",
+"?terminal hercules",
+"?term hercules",
+"?hercules",
+"?commands set terminal egalib",
+"?set terminal egalib",
+"?set term egalib",
+"?terminal egalib",
+"?term egalib",
+"?egalib",
+"?commands set terminal egamono",
+"?set terminal egamono",
+"?set term egamono",
+"?terminal egamono",
+"?term egamono",
+"?egamono",
+"?commands set terminal vgalib",
+"?set terminal vgalib",
+"?set term vgalib",
+"?terminal vgalib",
+"?term vgalib",
+"?vgalib",
+"?commands set terminal vgamono",
+"?set terminal vgamono",
+"?set term vgamono",
+"?terminal vgamono",
+"?term vgamono",
+"?vgamono",
+"?commands set terminal svgalib",
+"?set terminal svgalib",
+"?set term svgalib",
+"?terminal svgalib",
+"?term svgalib",
+"?svgalib",
+"?commands set terminal ssvgalib",
+"?set terminal ssvgalib",
+"?set term ssvgalib",
+"?terminal ssvgalib",
+"?term ssvgalib",
+"?ssvgalib",
+" These drivers supports PC monitors with autodetected graphics boards.  They",
+" can be used only when compiled with Zortech C/C++.  None have options."
+END_HELP(hercules)
+#endif /* TERM_HELP */