aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/stdgraph/stgopen.x
diff options
context:
space:
mode:
Diffstat (limited to 'sys/gio/stdgraph/stgopen.x')
-rw-r--r--sys/gio/stdgraph/stgopen.x103
1 files changed, 103 insertions, 0 deletions
diff --git a/sys/gio/stdgraph/stgopen.x b/sys/gio/stdgraph/stgopen.x
new file mode 100644
index 00000000..47fb2b61
--- /dev/null
+++ b/sys/gio/stdgraph/stgopen.x
@@ -0,0 +1,103 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <gset.h>
+include <gki.h>
+include "stdgraph.h"
+
+# STG_OPEN -- Install the STDGRAPH kernel as a graphics kernel device driver.
+# The device table DD consists of an array of the entry point addresses for
+# the driver procedures. If a driver does not implement a particular
+# instruction the table entry for that procedure may be set to zero, causing
+# the interpreter to ignore the instruction.
+
+procedure stg_open (devname, dd, in, out, xres, yres, hardchar)
+
+char devname[ARB] # if nonnull, force output to device
+int dd[ARB] # device table to be initialized
+int in # input file
+int out # output file
+int xres # number of resolved pixels in X
+int yres # number of resolved pixels in Y
+int hardchar # use hardware character generator
+
+bool first_time
+pointer sp, devns
+int len_devname
+int locpr(), strlen()
+
+extern stg_openws(), stg_closews(), stg_clear(), stg_cancel()
+extern stg_flush(), stg_polyline(), stg_polymarker(), stg_text()
+extern stg_fillarea(), stg_putcellarray(), stg_setcursor(), stg_plset()
+extern stg_pmset(), stg_txset(), stg_faset(), stg_getcursor()
+extern stg_getcellarray(), stg_escape()
+extern stg_reactivatews(), stg_deactivatews()
+include "stdgraph.com"
+data first_time /true/
+
+begin
+ call smark (sp)
+ call salloc (devns, SZ_FNAME, TY_SHORT)
+
+ if (first_time) {
+ g_nopen = 0
+ g_sg = NULL
+ g_tty = NULL
+ g_term = NULL
+ g_pbtty = NULL
+ g_cursor = 0
+ first_time = false
+ }
+
+ g_in = in
+ g_out = out
+ g_xres = xres
+ g_yres = yres
+ g_nopen = g_nopen + 1
+ g_stream = STDGRAPH
+ g_hardchar = hardchar
+ g_active = NO
+ g_enable = NO
+ g_message = NO
+ g_msgbuf = NULL
+ g_msgbuflen = 0
+ g_msglen = 0
+ call strcpy (devname, g_device, SZ_GDEVICE)
+
+ # Install the device driver.
+ dd[GKI_OPENWS] = locpr (stg_openws)
+ dd[GKI_CLOSEWS] = locpr (stg_closews)
+ dd[GKI_REACTIVATEWS] = locpr (stg_reactivatews)
+ dd[GKI_DEACTIVATEWS] = locpr (stg_deactivatews)
+ dd[GKI_MFTITLE] = 0
+ dd[GKI_CLEAR] = locpr (stg_clear)
+ dd[GKI_CANCEL] = locpr (stg_cancel)
+ dd[GKI_FLUSH] = locpr (stg_flush)
+ dd[GKI_POLYLINE] = locpr (stg_polyline)
+ dd[GKI_POLYMARKER] = locpr (stg_polymarker)
+ dd[GKI_TEXT] = locpr (stg_text)
+ dd[GKI_FILLAREA] = locpr (stg_fillarea)
+ dd[GKI_PUTCELLARRAY] = locpr (stg_putcellarray)
+ dd[GKI_SETCURSOR] = locpr (stg_setcursor)
+ dd[GKI_PLSET] = locpr (stg_plset)
+ dd[GKI_PMSET] = locpr (stg_pmset)
+ dd[GKI_TXSET] = locpr (stg_txset)
+ dd[GKI_FASET] = locpr (stg_faset)
+ dd[GKI_GETCURSOR] = locpr (stg_getcursor)
+ dd[GKI_GETCELLARRAY] = locpr (stg_getcellarray)
+ dd[GKI_ESCAPE] = locpr (stg_escape)
+ dd[GKI_SETWCS] = 0
+ dd[GKI_GETWCS] = 0
+ dd[GKI_UNKNOWN] = 0
+
+ # If a device was named open the workstation as well. This is
+ # necessary to permit processing of metacode files which do not
+ # contain the open workstation instruction.
+
+ len_devname = strlen (devname)
+ if (len_devname > 0) {
+ call achtcs (devname, Mems[devns], len_devname)
+ call stg_openws (Mems[devns], len_devname, NEW_FILE)
+ }
+
+ call sfree (sp)
+end