aboutsummaryrefslogtreecommitdiff
path: root/pkg/plot/gdevices.x
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /pkg/plot/gdevices.x
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'pkg/plot/gdevices.x')
-rw-r--r--pkg/plot/gdevices.x116
1 files changed, 116 insertions, 0 deletions
diff --git a/pkg/plot/gdevices.x b/pkg/plot/gdevices.x
new file mode 100644
index 00000000..e67091ba
--- /dev/null
+++ b/pkg/plot/gdevices.x
@@ -0,0 +1,116 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+define SZ_LBUF 2048
+define SZ_PATSTR 128
+define SZ_PATBUF 1024
+
+# GDEVICES -- Print a summary of the graphics devices currently defined in
+# graphcap. The devices parameter, a list of pattern strings, defines the
+# class of devices to be listed. The devices aliases, X and Y resolution,
+# and device description are output for each device.
+
+procedure t_gdevices()
+
+pointer fnt, ip, op, gty
+int fd, junk, nalias, lnum, xr, yr
+pointer sp, devices, fname, patstr, patbuf, lbuf, device, devdes
+
+bool streq()
+pointer fntopn(), gtyopen()
+int patmake(), patmatch(), gtygeti()
+int open(), getlongline(), envfind(), fntgfn()
+string s_graphcap "graphcap"
+
+begin
+ call smark (sp)
+ call salloc (devices, SZ_LINE, TY_CHAR)
+ call salloc (fname, SZ_PATHNAME, TY_CHAR)
+ call salloc (patstr, SZ_PATSTR, TY_CHAR)
+ call salloc (patbuf, SZ_PATBUF, TY_CHAR)
+ call salloc (lbuf, SZ_LBUF, TY_CHAR)
+ call salloc (device, SZ_FNAME, TY_CHAR)
+
+ # Get list of device patterns to be matched against graphcap.
+ call clgstr ("devices", Memc[devices], SZ_LINE)
+
+ # Get graphcap file name.
+ call clgstr (s_graphcap, Memc[fname], SZ_PATHNAME)
+ if (Memc[fname] == EOS)
+ call strcpy ("dev$graphcap", Memc[fname], SZ_PATHNAME)
+ else if (streq (Memc[fname], s_graphcap))
+ if (envfind (s_graphcap, Memc[fname], SZ_PATHNAME) <= 0)
+ call strcpy ("dev$graphcap", Memc[fname], SZ_PATHNAME)
+
+ # Print table header.
+ call printf ("#%39s %4s %4s %s\n")
+ call pargstr ("ALIASES")
+ call pargstr ("NX")
+ call pargstr ("NY")
+ call pargstr ("DESCRIPTION")
+
+ fnt = fntopn (Memc[devices])
+ while (fntgfn (fnt, Memc[patstr], SZ_PATSTR) != EOF) {
+ junk = patmake (Memc[patstr], Memc[patbuf], SZ_PATBUF)
+
+ fd = open (Memc[fname], READ_ONLY, TEXT_FILE)
+ while (getlongline (fd, Memc[lbuf], SZ_LBUF, lnum) != EOF) {
+
+ if (patmatch (Memc[lbuf], Memc[patbuf]) > 0) {
+ # Get device alias list and extract first device name
+ # into "device" string.
+
+ ip = lbuf
+ op = device
+ for (nalias=1; Memc[ip] != EOS; nalias=nalias+1) {
+ devdes = ip
+ while (Memc[ip] != EOS) {
+ if (Memc[ip] == '|') {
+ Memc[ip] = ' '
+ ip = ip + 1
+ break
+ } else if (Memc[ip] == ':') {
+ Memc[devdes-1] = EOS
+ Memc[ip] = EOS
+ break
+ } else {
+ if (nalias == 1) {
+ Memc[op] = Memc[ip]
+ op = op + 1
+ }
+ ip = ip + 1
+ }
+ }
+ Memc[op] = EOS
+ }
+
+ # Fetch graphcap entry for device.
+ iferr (gty = gtyopen (Memc[fname], Memc[device], "")) {
+ call eprintf ("cannot access entry for %s\n")
+ call pargstr (Memc[device])
+ next
+ }
+
+ # Print information about graphics device, in the
+ # form alias ... alias nx ny description.
+
+ iferr (xr = gtygeti (gty, "xr"))
+ xr = 0
+ iferr (yr = gtygeti (gty, "yr"))
+ yr = 0
+
+ call printf ("%40s %5d%5d %0.27s\n")
+ call pargstr (Memc[lbuf])
+ call pargi (xr)
+ call pargi (yr)
+ call pargstr (Memc[devdes])
+
+ call flush (STDOUT)
+ call gtyclose (gty)
+ }
+ }
+ call close (fd)
+ }
+
+ call fntcls (fnt)
+ call sfree (sp)
+end