Initial release of Maemo 5 port of gnuplot
[gnuplot] / term / mgr.trm
diff --git a/term/mgr.trm b/term/mgr.trm
new file mode 100644 (file)
index 0000000..a8e351a
--- /dev/null
@@ -0,0 +1,244 @@
+/* Hello, Emacs, this is -*-C-*-
+ * $Id: mgr.trm,v 1.11 2006/07/21 02:35:47 sfeam Exp $
+ */
+
+/* GNUPLOT - mgr.trm */
+
+/*[
+ * Copyright 1986 - 1993, 1998, 2004   Thomas Williams, Colin Kelley
+ *
+ * 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:
+ *  Mgr window system, color display
+ *
+ * AUTHOR
+ *  Vincent Broman, broman@nosc.mil
+ */
+/*
+ * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
+ */
+
+#include "driver.h"
+
+#ifdef TERM_REGISTER
+register_term(mgr)
+#endif
+
+#ifdef TERM_PROTO
+TERM_PUBLIC void MGR_init __PROTO((void));
+TERM_PUBLIC void MGR_graphics __PROTO((void));
+TERM_PUBLIC void MGR_text __PROTO((void));
+TERM_PUBLIC void MGR_linetype __PROTO((int linetype));
+TERM_PUBLIC void MGR_move __PROTO((unsigned int x, unsigned int y));
+TERM_PUBLIC void MGR_vector __PROTO((unsigned int x, unsigned int y));
+TERM_PUBLIC void MGR_put_text __PROTO((unsigned int x, unsigned int y, const char *str));
+TERM_PUBLIC void MGR_reset __PROTO((void));
+#define MGR_XMAX 640
+#define MGR_YMAX 400
+#define MGR_VCHAR 16
+#define MGR_HCHAR 8
+#define MGR_VTIC 4
+#define MGR_HTIC 4
+#endif /* TERM_PROTO */
+
+#ifndef TERM_PROTO_ONLY
+#ifdef TERM_BODY
+#undef ESC
+#include <term.h>              /* from Mgr, not gnuplot */
+
+
+
+static int MGR_border = 5;
+static int MGR_winnbr = 0;
+
+static int MGR_rowcount = 24;
+static int MGR_winwidth = MGR_XMAX;
+static int MGR_winheight = MGR_YMAX;
+static int MGR_vchar = MGR_VCHAR;
+static int MGR_hchar = MGR_HCHAR;
+
+
+TERM_PUBLIC void
+MGR_init()
+{
+    char res[300];
+    int winnbr;
+    int w, h, bor;
+
+    m_setup(0);
+    m_ttyset();
+
+    m_getinfo(G_SYSTEM);
+    if (m_gets(res) && sscanf(res, "%*s%d%d%d", &w, &h, &bor) == 3)
+       MGR_border = bor;
+
+    m_newwin(0, 0, MGR_winwidth + 2 * MGR_border,
+            MGR_winheight + 2 * MGR_border);
+
+    if (m_gets(res) && sscanf(res, "%d", &winnbr) == 1)
+       MGR_winnbr = winnbr;
+
+    /* if no alt window is created, then the main window is used
+     * and if size is different, term_tbl updated later */
+    m_selectwin(MGR_winnbr);
+    m_setmode(M_ABS);
+
+    m_getinfo(G_FONT);
+    if (m_gets(res) && sscanf(res, "%d %d", &w, &h) == 2) {
+       MGR_vchar = h;
+       MGR_hchar = w;
+    }
+    m_ttyreset();
+
+    term->v_char = MGR_vchar;
+    term->h_char = MGR_hchar;
+    term->v_tic = MGR_vchar / 4;
+    term->h_tic = MGR_hchar / 2;
+
+    m_selectwin(0);
+    m_flush();
+}
+
+
+TERM_PUBLIC void
+MGR_graphics()
+{
+    char res[32];
+    int c, r, w, h;
+
+    m_selectwin(MGR_winnbr);
+    m_setmode(M_ACTIVATE);
+    m_clear();
+
+    /* we permit the user to reshape the window arbitrarily.
+       do_plot calls boundary to recheck the term_tbl for each plot */
+    m_ttyset();
+    m_getinfo(G_WINSIZE);
+    if (m_gets(res) && sscanf(res, "%d %d", &c, &r) == 2)
+       MGR_rowcount = r;
+    m_getinfo(G_COORDS);
+    if (m_gets(res) && sscanf(res, "%d %d %d %d", &c, &r, &w, &h) == 4) {
+       term->xmax = MGR_winwidth = w;
+       term->ymax = MGR_winheight = h;
+    }
+    m_ttyreset();
+    m_flush();
+}
+
+
+TERM_PUBLIC void
+MGR_text()
+{
+    m_go(0, 0);
+    m_aligntext();
+    if (MGR_winnbr == 0)
+       m_move(0, MGR_rowcount - 1);
+    m_selectwin(0);
+    m_flush();
+}
+
+
+TERM_PUBLIC void
+MGR_linetype(int linetype)
+{
+/*
+ * this mapping of colors is intended for a color sun on which
+ * colors 0-23 are defined, 0 is white, 1 is black.
+ */
+    m_linecolor(B_SRC, (linetype < 0) ? 1 : (2 + (linetype % 22)));
+}
+
+
+TERM_PUBLIC void
+MGR_move(unsigned int x, unsigned int y)
+{
+    m_go(x, MGR_winheight - 1 - y);
+}
+
+
+TERM_PUBLIC void
+MGR_vector(unsigned int x, unsigned int y)
+{
+    m_draw(x, MGR_winheight - 1 - y);
+}
+
+
+TERM_PUBLIC void
+MGR_put_text(unsigned int x, unsigned int y, const char *str)
+{
+    MGR_move(x, y - MGR_vchar / 2);
+    m_aligntext();
+    m_printstr(str);
+}
+
+
+TERM_PUBLIC void
+MGR_reset()
+{
+    m_destroywin(MGR_winnbr);
+    MGR_winnbr = 0;
+    m_setmode(M_ACTIVATE);
+    m_flush();
+}
+
+#endif /* TERM_BODY */
+
+#ifdef TERM_TABLE
+
+TERM_TABLE_START(mgr_driver)
+    "mgr", "Mgr window system",
+    /* dimensions nominal, replaced during MGR_graphics call */
+    MGR_XMAX, MGR_YMAX, MGR_VCHAR, MGR_HCHAR,
+    MGR_VTIC, MGR_HTIC, options_null, MGR_init, MGR_reset,
+    MGR_text, null_scale, MGR_graphics, MGR_move, MGR_vector,
+    MGR_linetype, MGR_put_text, null_text_angle,
+    null_justify_text, do_point, do_arrow, set_font_null
+TERM_TABLE_END(mgr_driver)
+
+#undef LAST_TERM
+#define LAST_TERM mgr_driver
+
+#endif /* TERM_TABLE */
+#endif /* TERM_PROTO_ONLY */
+
+#ifdef TERM_HELP
+START_HELP(mgr)
+"1 mgr",
+"?commands set terminal mgr",
+"?set terminal mgr",
+"?set term mgr",
+"?terminal mgr",
+"?term mgr",
+"?mgr",
+" The `mgr` terminal driver supports the Mgr Window system.  It has no options."
+END_HELP(mgr)
+#endif