date and time created 83/11/11 15:12:39 by ralph
authorRalph Campbell <ralph@ucbvax.Berkeley.EDU>
Sat, 12 Nov 1983 07:12:39 +0000 (23:12 -0800)
committerRalph Campbell <ralph@ucbvax.Berkeley.EDU>
Sat, 12 Nov 1983 07:12:39 +0000 (23:12 -0800)
SCCS-vsn: lib/libplot/aed/open.c 4.1

usr/src/lib/libplot/aed/open.c [new file with mode: 0644]

diff --git a/usr/src/lib/libplot/aed/open.c b/usr/src/lib/libplot/aed/open.c
new file mode 100644 (file)
index 0000000..15c3713
--- /dev/null
@@ -0,0 +1,74 @@
+#ifndef lint
+static char sccsid[] = "@(#)open.c     4.1 (Berkeley) %G%";
+#endif
+
+/*
+ * Displays plot files on a AED512 graphics terminal.
+ */
+
+#include "aed.h"
+
+char dbuf[BUFSIZ];     /* Used to buffer display characters */
+struct sgttyb sgttyb;  /* Used to save terminal control bits */
+curx, cury;            /* Current screen position */
+int xbot, ybot;                /* Coordinates of screen lower-left corner */
+int scale;             /* The number of pixels per 2**12 units
+                        * of world coordinates.
+                        */
+
+/*
+ * The following is the color map, containing reg, green, and blue
+ * values for color locations 0 and 1.
+ */
+
+static int colors[] = {200, 200, 200, 0, 0, 125, 125, 0, 0, 125, 0, 0};
+
+/*---------------------------------------------------------
+ *     Openpl initializes the graphics display and clears its screen.
+ *
+ *     Results:        None.
+ *
+ *     Side Effects:
+ *     The display is re-initialized and the file is remembered for
+ *     use in all subsequent calls to this module.  The display's
+ *     color map is reset.  The display is put into raw mode, but
+ *     the previous mode bits are saved.
+ *
+ *     Errors:         None.
+ *---------------------------------------------------------
+ */
+openpl()
+{
+    int flags, *p, i;
+    char dum[4];
+
+    /* First, grab up the display modes, then reset them to put it
+     * into cooked mode.  Also, lock the terminal.
+     */
+
+    (void) gtty(fileno(stdout), &sgttyb);
+    flags = sgttyb.sg_flags;
+    sgttyb.sg_flags = (sgttyb.sg_flags & ~(RAW | CBREAK)) | EVENP | ODDP;
+    (void) stty(fileno(stdout), &sgttyb);
+    sgttyb.sg_flags = flags;
+
+    /* Save the file pointer around for later use, then output an
+     * initialization string to the display.  The initialization
+     * string resets the terminal, sets formats, clears the display,
+     * initializes the read and write masks, and sets the color map.
+     */
+
+    setbuf(stdout, dbuf);
+    fputs("\33\33G1HHHN[00LFFCFFMFFFFFFFF", stdout);
+    fputs("K0004", stdout);
+    p = colors;
+    for (i=0; i<12; i++)
+    {
+       chex(*p++, dum, 2);
+       fputs(dum, stdout);
+    }
+    fputs("^15060AL", stdout);
+    scale = 1<<12;
+    curx = cury = xbot = ybot = 0;
+    (void) fflush(stdout);
+}