aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/obm/docs/gui.doc
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /vendor/x11iraf/obm/docs/gui.doc
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'vendor/x11iraf/obm/docs/gui.doc')
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/TclQuickRef.html208
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/alphabetic.html39
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/athena.gifbin0 -> 1018 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/athena.html73
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/blueline.gifbin0 -> 75 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/book.p1.ps.gzbin0 -> 201061 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/clientclass.html75
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/coloredline.gifbin0 -> 5979 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/einstein.html5
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/example.html6
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/exampmap30
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/gmc.html402
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/gterm.gifbin0 -> 1689 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/gtermclass.html694
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/gui.html93
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/guiintro.html9
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowse.gifbin0 -> 4642 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/controlForm.html3
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/dirName.html3
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/dirSelect.html3
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/headerText.html3
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/imageButton.html3
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/none.html3
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/objView.html3
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/panel.html3
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/sectionBox.html3
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/statusBox.html3
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/imtool.gifbin0 -> 13848 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/intro.gifbin0 -> 228 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/irafgui.gifbin0 -> 1102 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/llama.gifbin0 -> 21774 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/marker.gifbin0 -> 1297 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/newgui.html18
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/notyet.html5
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/notyet2.html5
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/otherwidgets.html10
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/params.gifbin0 -> 420 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/redline.gifbin0 -> 75 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/serverclass.html38
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/servercom.html375
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/softgui.gifbin0 -> 381 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/tcl.gifbin0 -> 186 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/tcl.html7
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/uiparameterclass.html107
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/widgetclass.html450
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/widgets.gifbin0 -> 378 bytes
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/widgets.html14
-rw-r--r--vendor/x11iraf/obm/docs/gui.doc/ximclient.html194
48 files changed, 2887 insertions, 0 deletions
diff --git a/vendor/x11iraf/obm/docs/gui.doc/TclQuickRef.html b/vendor/x11iraf/obm/docs/gui.doc/TclQuickRef.html
new file mode 100644
index 00000000..3f41eb29
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/TclQuickRef.html
@@ -0,0 +1,208 @@
+<title>Tcl Quick Reference</title>
+
+
+<H1><pre>TCL Quick Reference
+Based on TCL version 6.4
+Jeff Tranter 12-Aug-1992</pre><h1>
+
+
+<pre>
+Basic Language Features
+
+# comment (continues to end of line)
+" " allows embedding whitespace in arguments; substitutions made
+{ } group arguments; substitutions not made
+[ ] command substitution; replace with result of command
+$var variable substitution
+; command separator
+
+
+Backslash Substitution
+
+\b backspace
+\[ open bracket
+\f form feed
+\] close bracket
+\n newline
+\$ dollar sign
+\r carriage return
+\<space> space
+\t tab
+\; semi-colon
+\v vertical tab
+\" double-quote
+\{ left brace
+\<newln> newline
+\} right brace
+\\ backslash
+\ddd octal digits
+
+
+Built-in Variables
+
+env
+errorCode
+errorInfo
+
+
+Operators (in decreasing order of precedence)
+
+- ~ ! unary minus, bit-wise NOT, logical NOT
+* / % multiply, divide, remainder
++ - add, subtract
+<< >> left and right shift
+< > <= >= boolean comparisons
+== != boolean equal, not equa
+& bit-wise AND
+^ bit-wise exclusive OR
+| bit-wise inclusive OR
+&& logical AND
+|| logical OR
+x?y:z conditional operator
+
+All operators support integers.
+All support floating point except ~, %, <<, >>, &, ^, and |
+Boolean operators can also be used on strings.
+
+
+Regular Expressions
+regex | regex match either expression
+regex* match zero or more of regex
+regex+ match one or more of regex
+regex? match zero or one of regex
+. any single character (except newline)
+^ match beginning of line
+$ match end of line
+\c match character c
+c match character c
+[] match set of characters
+[a-z] match range of characters
+[^] match characters not in range or set
+() group expressions
+
+
+Keywords
+
+append varName value [value value ...]
+array anymore arrayName searchId
+array donesearch arrayName searchId
+array names arrayName
+array nextelement arrayName searchId
+array size arrayName
+array startsearch arrayName
+break
+case string [in] patList body [patList body ...]
+case string [in] {patList body [patList body ...]
+catch command [varName]
+cd [dirName]
+close fileId
+concat arg [arg ...]
+continue
+error message [info] [code]
+eof fileId
+error $errMsg $savedInfo
+eval arg [arg ...]
+exec arg [arg ...]
+exit [returnCode]
+expr arg
+file atime name
+file dirname name
+file executable name
+file exists name
+file extension name
+file isdirectory name
+file isfile name
+file lstat name varName
+file mtime name
+file owned name
+file readable name
+file readlink name
+file rootname name
+file size name
+file stat name varName
+file tail name
+file type name
+file writable name
+flush fileId
+for start test next body
+foreach varname list body
+format formatString [arg arg ...]
+gets fileId [varName]
+glob [-nocomplain] filename [filename ...]
+global varname [varname ...]
+history
+history add command [exec]
+history change newValue [event]
+history event [event]
+history info [count]
+history keep count
+history nextid
+history redo [event]
+history substitute old new [event]
+history words selector [event]
+if test [then] trueBody [else] [falseBody]
+incr varName [increment]
+info args procname
+info body procname
+info cmdcount
+info commands [pattern]
+info default procname arg varname
+into variable varname
+info exists varName
+info globals [pattern]
+info level [number]
+info library
+info locals [pattern]
+info procs [pattern]
+info script
+info tclversion
+info vars [pattern]
+join list [joinString]
+lappend varName value [value value ...]
+lindex list index
+linsert list index element [element element ...]
+list arg [arg ...]
+llength list
+lrange list first last
+lreplace list first last [element element ...]
+lsearch list pattern
+lsort list
+open fileName [access]
+proc name args body
+puts fileId string [nonewline]
+pwd
+read fileId
+read fileId nonewline
+read fileId numBytes
+regexp [-indices] [-nocase] exp string [matchVar] [subMatchVar subMatchVar ...]
+regsub [-all] [-nocase] exp string subSpec varName
+rename oldName newName
+return [value]
+scan string format varname1 [varname2 ...]
+seek fileId offset [origin]
+set varname [value]
+source fileName
+split string [splitChars]
+string compare string1 string2
+string first string1 string2
+string index string charIndex
+string last string1 string2
+string length string
+string match pattern string
+string range string first last
+string tolower string
+string toupper string
+string trim string [chars]
+string trimleft string [chars]
+string trimright string [chars]
+tell fileId
+time command [count]
+trace variable name ops command
+trace vdelete name ops command
+trace vinfo name
+unknown cmdName [arg arg ...]
+unset name [name name ...]
+uplevel [level] command [command ...]
+upvar [level] otherVar myVar [otherVar myVar ...]
+while test body
+</pre>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/alphabetic.html b/vendor/x11iraf/obm/docs/gui.doc/alphabetic.html
new file mode 100644
index 00000000..0c141617
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/alphabetic.html
@@ -0,0 +1,39 @@
+<title>Alphabetized list of GUI commands</title>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
+<pre>
+<a href="gtermclass.html#activate">activate</a> <a href="servercom.html#activate">activate</a> <a href="notyet.html">activeMapping</a> <a href="gmc.html#addCallback">addCallback</a> <a href="gtermclass.html#addCallback">addCallback</a>
+<a href="uiparameterclass.html#addCallback">addCallback</a> <a href="widgetclass.html#addCallback">addCallback</a> <a href="widgetclass.html#addEventHandler">addEventHandler</a> <a href="widgetclass.html#append">append</a> <a href="servercom.html#appInitialize">appInitialize</a>
+<a href="notyet.html">assignRaster</a> <a href="gtermclass.html#bell">bell</a> <a href="widgetclass.html#do_userproc">call</a> <a href="gtermclass.html#clearScreen">clearScreen</a> <a href="widgetclass.html#configure">configure</a>
+<a href="notyet.html">copyPixmap</a> <a href="notyet.html">copyRaster</a> <a href="servercom.html#createBitmap">createBitmap</a> <a href="servercom.html#createCursor">createCursor</a> <a href="gtermclass.html#createMarker">createMarker</a>
+<a href="servercom.html#createMenu">createMenu</a> <a href="servercom.html#createObjects">createObjects</a> <a href="notyet.html">createPixmap</a> <a href="servercom.html#createPixmap">createPixmap</a> <a href="notyet.html">createRaster</a>
+<a href="gtermclass.html#deactivate">deactivate</a> <a href="servercom.html#deactivate">deactivate</a> <a href="uiparameterclass.html#deleteCallback">deleteCallback</a> <a href="widgetclass.html#deleteCallback">deleteCallback</a> <a href="servercom.html#deleteTimedCallback">deleteTimedCallback</a>
+<a href="servercom.html#deleteWorkCallback">deleteWorkCallback</a> <a href="gmc.html#destroy">destroy</a> <a href="servercom.html#destroyMenu">destroyMenu</a> <a href="servercom.html#destroyObject">destroyObject</a>
+<a href="notyet.html">destroyRaster</a> <a href="notyet.html">disableMapping</a> <a href="notyet.html">drawAlphaText</a> <a href="notyet.html">drawDialogText</a> <a href="notyet.html">drawMarker</a>
+<a href="notyet.html">drawPolygon</a> <a href="notyet.html">drawPolyline</a> <a href="notyet.html">drawPolymarker</a> <a href="servercom.html#createMenu">editMenu</a> <a href="notyet.html">enableMapping</a>
+<a href="ximclient.html#encodewcs">encodewcs</a> <a href="notyet.html">endDialog</a> <a href="notyet.html">eraseDialog</a> <a href="ximclient.html#fitFrame">fitFrame</a> <a href="gtermclass.html#flip">flip</a>
+<a href="ximclient.html#flip">flip</a> <a href="gtermclass.html#flush">flush</a> <a href="notyet.html">freeColormap</a> <a href="notyet.html">freeMapping</a> <a href="clientclass.html#gcmd">gcmd</a>
+<a href="gmc.html#getAttribute">get</a> <a href="widgetclass.html#get">get</a> <a href="notyet.html">getAlphaTextSize</a> <a href="gmc.html#getAttribute">getAttribute</a>
+<a href="gmc.html#getAttributes">getAttributes</a> <a href="gtermclass.html#getCursorPos">getCursorPos</a> <a href="notyet.html">getDialogTextSize</a> <a href="ximclient.html#getFrame">getFrame</a>
+<a href="widgetclass.html#getItem">getItem</a> <a href="notyet.html">getLogRes</a> <a href="gtermclass.html#getMapping">getMapping</a> <a href="notyet.html">getPhysRes</a> <a href="gtermclass.html#getPixel">getPixel</a>
+<a href="gtermclass.html#getRaster">getRaster</a> <a href="gmc.html#getRect">getRect</a> <a href="gmc.html#getRegion">getRegion</a> <a href="servercom.html#getResource">getResource</a> <a href="servercom.html#getResources">getResources</a>
+<a href="uiparameterclass.html#getValue">getValue</a> <a href="gmc.html#getVertices">getVertices</a> <a href="clientclass.html#gkey">gkey</a> <a href="widgetclass.html#highlight">highlight</a> <a href="notyet.html">initMappings</a>
+<a href="widgetclass.html#isRealized">isRealized</a> <a href="widgetclass.html#isSensitive">isSensitive</a> <a href="clientclass.html#literal">literal</a> <a href="gtermclass.html#loadColormap">loadColormap</a> <a href="gmc.html#lower">lower</a>
+<a href="gmc.html#makeCopy">makeCopy</a> <a href="widgetclass.html#manage">manage</a> <a href="widgetclass.html#map">map</a> <a href="gtermclass.html#markerInit">markerInit</a> <a href="gmc.html#markpos">markpos</a>
+<a href="ximclient.html#matchFrames">matchFrames</a> <a href="gmc.html#move">move</a> <a href="widgetclass.html#move">move</a> <a href="notyet.html">nextColormap</a> <a href="ximclient.html#nextFrame">nextFrame</a>
+<a href="gtermclass.html#nextMapping">nextMapping</a> <a href="notyet.html">nextRaster</a> <a href="gmc.html#notify">notify</a> <a href="uiparameterclass.html#notify">notify</a> <a href="notyet.html">nRasters</a>
+<a href="ximclient.html#pan">pan</a> <a href="widgetclass.html#do_popdown">popdown</a> <a href="widgetclass.html#popdown">popdown</a> <a href="widgetclass.html#do_popup">popup</a> <a href="widgetclass.html#popup">popup</a>
+<a href="widgetclass.html#popupSpringLoaded">popupSpringLoaded</a> <a href="servercom.html#postActivateCallback">postActivateCallback</a> <a href="servercom.html#postTimedCallback">postTimedCallback</a>
+<a href="servercom.html#postWorkCallback">postWorkCallback</a> <a href="ximclient.html#prevFrame">prevFrame</a> <a href="servercom.html#print">print</a> <a href="notyet.html">queryRaster</a>
+<a href="ximclient.html#Quit">Quit</a> <a href="gmc.html#raise">raise</a> <a href="gtermclass.html#rasterInit">rasterInit</a> <a href="notyet.html">readColormap</a> <a href="gtermclass.html#readPixels">readPixels</a>
+<a href="widgetclass.html#realize">realize</a> <a href="gmc.html#redraw">redraw</a> <a href="notyet.html">refreshMapping</a> <a href="notyet.html">refreshPixels</a> <a href="servercom.html#resetReset">reset-server</a>
+<a href="gtermclass.html#reset">reset</a> <a href="gmc.html#resize">resize</a> <a href="widgetclass.html#resize">resize</a> <a href="ximclient.html#retCursorVal">retCursorVal</a> <a href="gmc.html#rotate">rotate</a>
+<a href="gtermclass.html#selectRaster">selectRaster</a> <a href="servercom.html#send">send</a> <a href="gmc.html#setAttribute">set</a> <a href="widgetclass.html#set">set</a> <a href="gmc.html#setAttribute">setAttribute</a>
+<a href="gmc.html#setAttributes">setAttributes</a> <a href="notyet.html">setColorIndex</a> <a href="ximclient.html#setColormap">setColormap</a> <a href="gtermclass.html#setCursorPos">setCursorPos</a> <a href="gtermclass.html#setCursorType">setCursorType</a>
+<a href="notyet.html">setDataLevel</a> <a href="notyet.html">setFillType</a> <a href="ximclient.html#setFrame">setFrame</a> <a href="gtermclass.html#setGterm">setGterm</a> <a href="notyet.html">setLineStyle</a>
+<a href="notyet.html">setLineWidth</a> <a href="widgetclass.html#setList">setList</a> <a href="notyet.html">setLogRes</a> <a href="gtermclass.html#setMapping">setMapping</a> <a href="notyet.html">setPhysRes</a>
+<a href="gtermclass.html#setPixel">setPixel</a> <a href="gtermclass.html#setRaster">setRaster</a> <a href="widgetclass.html#setSensitive">setSensitive</a> <a href="notyet.html">setTextRes</a> <a href="uiparameterclass.html#setValue">setValue</a>
+<a href="gmc.html#setVertices">setVertices</a> <a href="notyet.html">startDialog</a> <a href="widgetclass.html#unhighlight">unhighlight</a> <a href="widgetclass.html#unmanage">unmanage</a> <a href="widgetclass.html#unmap">unmap</a>
+<a href="gtermclass.html#unmapPixel">unmapPixel</a> <a href="widgetclass.html#unrealize">unrealize</a> <a href="widgetclass.html#userEventHandler">userEventHandler</a> <a href="ximclient.html#windowColormap">windowColormap</a>
+<a href="notyet.html">writeColormap</a> <a href="gtermclass.html#writePixels">writePixels</a> <a href="ximclient.html#zoom">zoom</a> <a href="ximclient.html#zoom">zoomAbs</a>
+</pre>
+
diff --git a/vendor/x11iraf/obm/docs/gui.doc/athena.gif b/vendor/x11iraf/obm/docs/gui.doc/athena.gif
new file mode 100644
index 00000000..56e74e96
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/athena.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/athena.html b/vendor/x11iraf/obm/docs/gui.doc/athena.html
new file mode 100644
index 00000000..dcd3decf
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/athena.html
@@ -0,0 +1,73 @@
+<title>Athena Widgets</title>
+<h1><IMG SRC="irafgui.gif"> Athena Widgets</h1>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
+<p>
+The Athena widgets were written at MIT. Each of the widget names is a
+hypertext link to a page describing the widget and including an example.
+<p>
+<h2>Simple Widgets</h2>
+<dl>
+<dt><a href="commandwidget.html">Command</a>
+<dd>A push button that, when selected, may cause a specific action
+to take place. This widget can display a multi-line string or a bitmap image.
+<dt><a href="gripwidget.html">Grip</a>
+<dd>A rectangle that, when selected, will cause an action to take
+place.
+<dt><a href="labelwidget.html">Label</a>
+<dd>A rectangle that may contain one or more lines of text or a bitmap image.
+<dt><a href="listwidget.html">List</a>
+<dd>A list of text strings presented in row column format that may be
+individually selected. When an element is selected an action may take place.
+<dt><a href="pannerwidget.html">Panner</a>
+<dd>A rectangular area containing a <i>slider</i> that may be moved in two
+dimensions. Notification of movement may be continuous or discrete.
+<dt><a href="repeaterwidget.html">Repeater</a>
+<dd>A push button that triggers an action at an increasing rate when selected.
+<dt><a href="scrollbarwidget.html">Scrollbar</a>
+<dd>A rectangular area containg a <i>thumb</i> that, when slid along one
+dimension, may cause a specific action to take place. The Scrollbar may
+be oriented horixontall or vertically.
+<dt><a href="simplewidget.html">Simple</a>
+<dd>The vase class for most of the simple widgets. Provides a rectangular
+area with a settable mouse cursor and special border.
+<dt><a href="stripchartwidget.html">StripChart</a>
+<dd>A real time data graph that will automatically update and scroll.
+<dt><a href="togglewidget.html">Toggle</a>
+<dd>A push button [see Command] that contains state information. Toggles
+may also be used as radio buttons to implement a "one of many" group of
+buttons.
+</dl>
+<h2>Text Widgets</h2>
+<dl>
+<dt><a href="textwidget.html">Text</a>
+<dd>Basic text widget supports edit commands.
+<dt><a href="asciitextwidget.html">AsciiText</a>
+<dd>This widget contains a text widget and also includes AsciiSrc and
+and AsciiSink widgets.
+</dl>
+<h2>Composite and Constraint Widgets</h2>
+<dl>
+<dt><a href="boxwidget.html">Box</a>
+<dd>This widget will pack its children as tightly as possible in
+non-overlapping rows.
+<dt><a href="dialogwidget.html">Dialog</a>
+<dd>An implementation of a commonly used interaction semantic to
+prompt for auxiliary input from the user, such as a filename.
+<dt><a href="formwidget.html">Form</a>
+<dd>A more sophisticated layout widget that allows the children to specify
+their positions relative to the other children, or to the edges of the form.
+<dt><a href="panedwidget.html">Paned</a>
+<dd>Allows children to be tiled vertically or horizontally. Controls are also
+provided to allow the user to dynamically resize the individual panes.
+<dt><a href="portholewidget.html">Porthole</a>
+<dd>Allows viewing of a managed child which is as large as, or larger than its
+parent, typically under control of a Panner widget.
+<dt><a href="treewidget.html">Tree</a>
+<dd>Provides geometry management of widgets arranged in a directed, acyclic
+graph.
+<dt><a href="viewportwidget.html">Viewport</a>
+<dd>Consists of a frame, one of two scrollbars, and an inner window. The
+inner window can contain all the data that is to be displayed. This inner
+window will be clipped by the frame with the scrollbars controlling which
+section of the inner window is currently visible.
+</dl>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/blueline.gif b/vendor/x11iraf/obm/docs/gui.doc/blueline.gif
new file mode 100644
index 00000000..d911fe03
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/blueline.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/book.p1.ps.gz b/vendor/x11iraf/obm/docs/gui.doc/book.p1.ps.gz
new file mode 100644
index 00000000..360e4950
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/book.p1.ps.gz
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/clientclass.html b/vendor/x11iraf/obm/docs/gui.doc/clientclass.html
new file mode 100644
index 00000000..407c177b
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/clientclass.html
@@ -0,0 +1,75 @@
+<title>CLIENT class</title>
+<h1><IMG SRC="/iraf/web/images/iraf.gif"> CLIENT class</h1>
+<p>
+<HR>
+<p>
+The client is the client application, which provides the functionality
+underlying the UI. When a message is sent to the client object it usually
+results in a message being sent to the client *application*, usually an
+external program communicating via IPC, which has little or no knowledge
+of the UI. The client application receives and executes commands delivered
+by the UI via the client object. Output from the client may or may not
+come back to the object manager. That portion of the output which comes
+back to the object manager is in the form of assignments of string values
+to <a href="uiparameterclass.html">UI parameter-class objects</a> (another
+way of thinking of this is that
+messages or events are sent to and acted upon by the parameter objects).
+Hence, the client object is output only so far as the client application
+is concerned.
+<p>
+The Client-class commands are used to send a message to the client.
+<p>
+<pre>
+ <a href="#gkey">gkey</a> &lt;key&gt;
+ <a href="#gcmd">gcmd</a> &lt;command-string&gt;
+ <a href="#literal">literal</a> &lt;command&gt;
+</pre>
+<p>
+or just &lt;command&gt;, e.g., "send client &lt;command&gt;" will work in most cases.
+<p>
+<a href="#gkey">GKEY</a> sends an IRAF graphics keystroke.
+<a href="#gcmd">GCMD</a> sends an
+IRAF graphics colon command. <a href="#literal">LITERAL</a> sends a literal
+command string to the
+client. The keyword "literal" may optionally be omitted, i.e., "send client
+foo" and "send client literal foo" are the same. The keyword "literal" may
+be used to ensure that the client command string which follows will not
+be interpreted as a Client-class command (such as gkey, gcmd, or literal).
+<p>
+<p>
+<h1><A NAME="gcmd">gcmd</A></h1>
+<p>
+Send a graphics command string to the client application.
+A graphics command string is a graphics cursor value with the key set
+to `:' and the command string given as the string part of the cursor
+value. The protocol module which posted the client output procedure is
+responsible for encoding and sending the cursor command.
+<p>
+Usage:
+<p>
+<pre>
+ gcmd &lt;command-string&gt;
+</pre>
+<p>
+<h1><A NAME="gkey">gkey</A></h1>
+<p>
+Send a graphics key event to the client application.
+A graphics key event is a graphics cursor value with the key set to some
+integer value and a null string part.
+<p>
+Usage:
+<p>
+<pre>
+gkey &lt;key&gt;
+</pre>
+<p>
+<h1><A NAME="literal">literal</A></h1>
+<p>
+Send a literal command to the client application.
+<p>
+Usage:
+<p>
+<pre>
+ literal &lt;command&gt;
+</pre>
+
diff --git a/vendor/x11iraf/obm/docs/gui.doc/coloredline.gif b/vendor/x11iraf/obm/docs/gui.doc/coloredline.gif
new file mode 100644
index 00000000..f08eb184
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/coloredline.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/einstein.html b/vendor/x11iraf/obm/docs/gui.doc/einstein.html
new file mode 100644
index 00000000..1d6e1927
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/einstein.html
@@ -0,0 +1,5 @@
+<title>Einstein</title>
+<p>
+<a href="notyet.html"><IMG align=middle SRC="einstein.gif"></a>
+Yep, that's uncle Albert!
+<p>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/example.html b/vendor/x11iraf/obm/docs/gui.doc/example.html
new file mode 100644
index 00000000..40b0b4cd
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/example.html
@@ -0,0 +1,6 @@
+<title>Example: Imbrowse</title>
+<h2><IMG SRC="irafgui.gif"> Example: Imbrowse</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
+<p>
+<a href="exampmap"><IMG SRC="imbrowse.gif" ISMAP></a>
+<p>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/exampmap b/vendor/x11iraf/obm/docs/gui.doc/exampmap
new file mode 100644
index 00000000..d2284a37
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/exampmap
@@ -0,0 +1,30 @@
+
+default imbrowsemap/none.html
+
+# The ellipse containing "panel"
+rect imbrowsemap/panel.html 287,19 366,56
+
+# The ellipse containing "objView"
+rect imbrowsemap/objView.html 226,98 312,130
+
+# The ellipse containing "controlForm"
+rect imbrowsemap/controlForm.html 266,154 382,186
+
+# The ellipse containing "headerText"
+rect imbrowsemap/headerText.html 336,96 450,130
+
+# The ellipse containing "sectionBox"
+rect imbrowsemap/sectionBox.html 461,99 577,131
+
+# The ellipse containing "statusBox"
+rect imbrowsemap/statusBox.html 75,158 202,190
+
+# The ellipse containing "dirSelect"
+rect imbrowsemap/dirSelect.html 7,280 95,320
+
+# The ellipse containing "dirName"
+rect imbrowsemap/dirName.html 74,342 167,380
+
+# The ellipse containing "imageButton"
+rect imbrowsemap/imageButton.html 171,280 298,315
+
diff --git a/vendor/x11iraf/obm/docs/gui.doc/gmc.html b/vendor/x11iraf/obm/docs/gui.doc/gmc.html
new file mode 100644
index 00000000..9e124846
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/gmc.html
@@ -0,0 +1,402 @@
+<title>Graphics Marker class</title>
+<h1><IMG SRC="/iraf/web/images/iraf.gif"> Graphics Marker class</h1>
+<p>
+<HR>
+<p>
+A marker is a graphics object implemented by the Gterm-Image widget.
+Markers are not real toolkit widgets, but they act much like widgets and
+are interfaced as an object class under the Object Manager. The Marker
+class is not a subclass, it is a base class like Widget, but Marker objects
+can exist only as children of Gterm widgets.
+<p>
+Since markers are not independent widgets but rather part of a Gterm widget
+instance, the parent Gterm widget is partially responsible for managing
+markers. The Gterm widget implements the following commands for dealing
+with markers.
+<p>
+<pre>
+ <a href="gtermclass.html#createMarker">createMarker</a> name [attribute-list]
+ <a href="gtermclass.html#markerInit">markerInit</a>
+</pre>
+<p>
+A new marker is created by sending the createMarker message to the parent
+gterm widget. This creates a marker of the given name and type.
+The markerInit command, if sent to a gterm widget, destroys any markers
+defined for that widget and reinitializes the marker facility. Markers
+may also be created by action procedures in response to user input events.
+<p>
+A marker may be destroyed by itself in response to an input event (e.g. the
+user presses the delete key), by sending the marker the destroy message
+to tell it to destroy itself, by sending a markerInit to the parent gterm
+widget, or by destroying the marker object (or any parent) with the server
+command <a href="servercom.html#destroyObject">destroyObject</a>.
+<p>
+Once a marker has been created it behaves as an independent object and
+receives and executes messages, responds to events, generates callbacks,
+and so on. The marker class defines the following commands.
+<p>
+<pre>
+ <a href="#makeCopy">makeCopy</a> name
+ <a href="#addCallback">addCallback</a> procedure [event [event ...]]
+ <a href="#notify">notify</a> [event-type [param [param ...]]]
+ <a href="#destroy">destroy</a> [nocallback]
+<p>
+ <a href="#markpos">markpos</a>
+ <a href="#redraw">redraw</a> [function] [markpos|nomarkpos] [erase|noerase]
+<p>
+ <a href="#raise">raise</a> [reference-marker]
+ <a href="#lower">lower</a> [reference-marker]
+<p>
+ <a href="#move">move</a> x y
+ <a href="#resize">resize</a> width height
+ <a href="#rotate">rotate</a> angle # radians
+<p>
+ <a href="#setAttribute">set</a> attribute value # alias for setAttribute
+ value = <a href="#getAttribute">get</a> attribute # alias for getAttribute
+<p>
+ <a href="#setAttribute">setAttribute</a> attribute value
+ value = <a href="#getAttribute">getAttribute</a> attribute
+ <a href="#setAttributes">setAttributes</a> attribute-list
+ <a href="#getAttributes">getAttributes</a> attribute-list
+ <a href="#setVertices">setVertices</a> points first npts
+ <a href="#getVertices">getVertices</a> points first npts
+<p>
+ region = <a href="#getRegion">getRegion</a> [unmap] [coord-type]
+ <a href="#getRect">getRect</a> dx dy dnx dny
+</pre>
+<p>
+Marker positions and dimensions are given in window (raster 0) coordinates.
+<p>
+The operators raise, lower, move, resize, and rotate erase the marker,
+modify it as indicated, and redraw it with the new attributes. For finer
+control over marker attributes one can use [get|set]Attribute[s] and
+[get|set]Vertices to edit the markers directly. In this case an auto
+redraw is not performed (unless the autoRedraw marker attribute is set).
+The usual sequence is a markpos to record the marker position, one or more
+setAttribute calls to change marker attributes, then a redraw to erase
+the old marker and redraw the new one. Markers have many attributes which
+can be set to control things like the position and size, colors, line
+widths, fill type and style, font, rubber-band technique, and so on.
+Refer to &lt;ObmW/Gterm.h&gt; for a list of marker types and attributes.
+<p>
+The marker type may be changed at runtime without destroying the marker.
+For example a circle can be changed to an ellipse or a rectangle. This
+also works for polygons (the vertex list is preserved and restored when
+the marker is changed back to a polygon).
+<p>
+The current shape of a marker may be queried with getVertices, which
+returns the polygon or polyline vertex list in window coordinates. A more
+powerful routine which does something similar is getRegion. This routine
+returns a high level description of the region outlined by the marker,
+giving the marker type (rectangle, circle, ellipse etc.), center, width
+and height, and so on. Any position or dimension information may
+optionally be transformed back to the original source raster, if the marker
+center is in a region of the window which is the destination of an active
+mapping. The unmap option will follow multiple mappings back to the
+original mapped source raster.
+<p>
+The getRect function returns the parameters of the region outlined by a
+rectangle marker in a form convenient for use in a Gterm setMapping call
+(this is used to display an image within a marker).
+<p>
+Default translations when pointer is over a marker.
+default Marker Translations
+<p>
+<pre>
+ Shift &lt; Btn1Motion &gt;i m_rotateResize()
+ &lt; Btn1Motion &gt; m_moveResize()
+ Shift &lt; Btn1Down &gt; m_raise() m_markpos()
+ &lt; Btn1Down &gt; m_raise() m_markposAdd()
+ &lt; Btn1Up &gt; m_redraw() m_destroyNull()
+ &lt; Btn2Down &gt; m_lower()
+ &lt; Key &gt; BackSpace m_deleteDestroy()
+ &lt; Key &gt; Delete m_deleteDestroy()
+ &lt; KeyPress &gt; m_input()
+ &lt; Motion &gt; track-cursor()
+</pre>
+<p>
+MARKER class commands.
+<p>
+makeCopy</A></h1>
+<p>
+Copy a marker. The new marker is initially identical to the
+old one, and will not be distinct until, e.g., moved to a new center.
+<p>
+Usage:
+<p>
+<pre>
+ makeCopy name
+</pre>
+<p>
+<h1><A NAME="addCallback">addCallback</A></h1>
+<p>
+Post a marker callback to be called when the specified
+event or events occurs. If no events are listed a Notify callback will
+be posted.
+<p>
+Usage:
+<p>
+<pre>
+ addCallback procedure [event [event ...]]
+</pre>
+<p>
+<h1><A NAME="notify">notify</A></h1>
+<p>
+Generate a Marker pseudo-event, causing any posted client
+callback procedures to be called.
+<p>
+Usage:
+<p>
+<pre>
+ notify [event-type [param [param ...]]]
+</pre>
+<p>
+<h1><A NAME="destroy">destroy</A></h1>
+<p>
+Destroy a marker. Just tell the marker to destroy itself.
+All cleanup outside the marker facility relies upon the use of callbacks.
+This includes our callback markerDestroyCallback below.
+<p>
+Usage:
+<p>
+<pre>
+ destroy
+</pre>
+<p>
+<h1><A NAME="markpos">markpos</A></h1>
+<p>
+Mark the current position of a marker for a later redraw.
+<p>
+Usage:
+<p>
+<pre>
+ markpos
+</pre>
+<p>
+Markpos is used to mark the position of a marker before changing any
+marker attributes, so that a later "redraw marked" will erase the old
+marker rather than the new one. This is necessary, for example, if any
+marker attributes are changed which affect the size or position of the
+marker.
+<p>
+<h1><A NAME="redraw">redraw</A></h1>
+<p>
+Redraw a marker.
+<p>
+Usage:
+<p>
+<pre>
+ redraw [function] [erase|noerase] [markpos|nomarkpos]
+</pre>
+<p>
+By default redraw will erase the old marker at the position indicated by
+a previous call to markpos, and redraw the marker with the current
+attributes using the drawing function copy (copy source to destination).
+Hence the usual usage is "markpos ... change marker attributes ... redraw".
+Optional arguments may be given to change the drawing function, enable or
+disable erase, or force redraw to do a markpos. These arguments may be
+given in any order.
+<p>
+The drawing functions are as given in the XLIB documentation, minus the
+"GX" prefix. The most commonly used functions are "copy" and "xor".
+A normal marker redraw uses function=copy.
+<p>
+<h1><A NAME="raise">raise</A></h1>
+<p>
+Raise a marker, i.e., cause it to be drawn on top of other
+markers when overlapping markers are drawn.
+<p>
+Usage:
+<p>
+<pre>
+ raise [reference-marker]
+</pre>
+<p>
+In a reference marker is named the marker will raise itself above this
+marker, otherwise the raised marker becomes the topmost marker.
+<p>
+<h1><A NAME="lower">lower</A></h1>
+<p>
+Lower a marker, i.e., cause it to be drawn beneath other
+markers when overlapping markers are drawn.
+<p>
+Usage:
+<p>
+<pre>
+ lower [reference-marker]
+</pre>
+<p>
+In a reference marker is named the marker will lower itself beneath this
+marker, otherwise the lowered marker becomes the lowest marker.
+<p>
+<h1><A NAME="move">move</A></h1>
+<p>
+Move a marker.
+<p>
+Usage:
+<p>
+<pre>
+ move x y
+</pre>
+<p>
+Move the marker center to the indicated coordinates in the display window.
+<p>
+<h1><A NAME="resize">resize</A></h1>
+<p>
+Resize a marker.
+<p>
+Usage:
+<p>
+<pre>
+ resize width height
+</pre>
+<p>
+Resize the marker to the indicated size. By default width and height are
+given in pixels. For a text marker one can append "ch" to indicate that
+the units are chars in whatever font is in use, e.g., "40ch" or "40 chars"
+is an acceptable value for a text marker dimension.
+<p>
+<h1><A NAME="rotate">rotate</A></h1>
+<p>
+Rotate a marker.
+<p>
+Usage:
+<p>
+<pre>
+ rotate angle
+</pre>
+<p>
+Redraw a marker oriented to the given rotation angle. The angle is
+given in radians.
+<p>
+<h1><A NAME="getAttribute">getAttribute</A></h1>
+<p>
+Return the value of a marker attribute.
+<p>
+Usage:
+<p>
+<pre>
+ value = getAttribute attribute-name
+</pre>
+<p>
+<h1><A NAME="setAttribute">setAttribute</A></h1>
+<p>
+Set the value of a marker attribute.
+<p>
+Usage:
+<p>
+<pre>
+ setAttribute attribute-name value
+</pre>
+<p>
+<h1><A NAME="getAttributes">getAttributes</A></h1>
+<p>
+Return the values of a list of marker attributes.
+<p>
+Usage:
+<p>
+<pre>
+ getAttributes attribute-list
+ i.e. getAttributes {name value [name value ...]}
+ or getAttributes name value [name value ...]
+</pre>
+<p>
+where "value" is the name of the variable in which the attribute value
+is to be stored.
+<p>
+<h1><A NAME="setAttributes">setAttributes</A></h1>
+<p>
+Set the values of a list of marker attributes.
+<p>
+Usage:
+<p>
+<pre>
+ setAttributes attribute-list
+ i.e. setAttributes {name value [name value ...]}
+</pre>
+<p>
+where "value" is the new value of the associated marker attribute.
+<p>
+<h1><A NAME="getVertices">getVertices</A></h1>
+<p>
+Get some or all of the vertices making up the polygon or
+polyline representation of a marker.
+<p>
+Usage:
+<p>
+<pre>
+ getVertices points [first npts]
+</pre>
+<p>
+The polygon or polyline representation of a marker is returned in the
+variable "points", as a string of the form { {x y} {x y} ...}. The first
+point is number zero.
+<p>
+<h1><A NAME="setVertices">setVertices</A></h1>
+<p>
+Set some or all of the vertices making up the polygon or
+polyline representation of a marker.
+<p>
+Usage:
+<p>
+<pre>
+ setVertices points [first npts]
+</pre>
+<p>
+The polygon or polyline representation of a marker is set using the points
+passed in the "points" variable as a string of the form { {x y} {x y} ...}.
+If FIRST and NPTS are not specified first is assumed to be zero (the first
+point) and NPTS is the length of the points array.
+<p>
+<h1><A NAME="getRegion">getRegion</A></h1>
+<p>
+Return as a text string a high level description of the
+region defined by a marker.
+<p>
+Usage:
+<p>
+<pre>
+ region = getRegion [unmap] [coord-type]
+</pre>
+<p>
+The output string defines the marker type and the major marker positional
+attributes. The region description formats for the various marker types
+follow.
+<p>
+<pre>
+ text raster x y width height
+ line raster x y x y
+ polyline raster npts { {x y} {x y} ...}
+ rectangle raster x y width height rotangle
+ circle raster x y radius
+ ellipse raster x y width height rotangle
+ polygon raster npts { {x y} {x y} ...}
+</pre>
+<p>
+Here, width and height refer to the distance from the marker center to an
+edge, not to the width or height of the whole marker. This avoids
+ambiguities about where the edge of a marker is if the width is even or
+odd. Using the center to edge measurement, the edge is at x +/- width,
+y +/- height.
+<p>
+If the "unmap" flag is given getRegion will attempt to associate the
+marker with a mapped raster, reversing any mappings from the screen back
+to the original source raster, and returning the raster number and raster
+coordinates and marker sizes. If "unmap" is not given the marker
+coordinates will refer to raster 0. Either pixel ("pixel") or NDC
+("ndc") coordinates may be returned, pixel coordinates being the default.
+<p>
+<h1><A NAME="getRect">getRect</A></h1>
+<p>
+Return the region enclosed by a rectangle marker. The rect is
+returned in a form convenient for use as the destination rect in a gterm
+widget raster mapping.
+<p>
+Usage:
+<p>
+<pre>
+ getRect dx dy dnx dny
+</pre>
+<p>
+The rect is stored in the output arguments.
+<p>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/gterm.gif b/vendor/x11iraf/obm/docs/gui.doc/gterm.gif
new file mode 100644
index 00000000..042debf5
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/gterm.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/gtermclass.html b/vendor/x11iraf/obm/docs/gui.doc/gtermclass.html
new file mode 100644
index 00000000..5fcdab10
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/gtermclass.html
@@ -0,0 +1,694 @@
+<title>Gterm-Image widget class</title>
+<h1><IMG SRC="/iraf/web/images/iraf.gif"> Gterm-Image widget class (a subclass of Widget).</h1>
+<p>
+<HR>
+<p>
+The gterm-image widget is a general 2D graphics-imaging widget providing
+a wide range of facilities for drawing graphics and text, for image
+display, and for graphics interaction. Normally the client communicates
+directly with the Gterm widget to draw graphics, download image data,
+and so on, using some communications protocol outside the domain of the
+object manager. Nonetheless so far as possible the facilities of the Gterm
+widget have also been made available to GUI code via the commands listed
+here.
+<p>
+The Gterm widget adds the following function to the OBM library.
+<p>
+<pre>
+ ObmPostSetGtermCallback (obm, &setgterm, setgterm_client_data)
+</pre>
+<p>
+This is called by a client application to post a procedure to be called
+when a gterm widget receives the setGterm command. The calling sequence
+for setGterm callback is as follows:
+<p>
+<pre>
+ setgterm (client_data, gterm_widget)
+</pre>
+<p>
+The purpose of this callback is to tell the client which gterm widget is
+the "active" gterm widget. This is used by clients which only support
+one active Gterm widget, i.e., which can only direct graphics output to
+one Gterm widget at a time.
+<p>
+The messages or commands that can be sent to the Gterm widget by GUI
+code follow.
+<p>
+General commands:
+<p>
+<pre>
+ <a href="#setGterm">setGterm</a> # make widget the active Gterm
+<p>
+ <a href="#activate">activate</a>
+ <a href="#deactivate">deactivate</a>
+ <a href="#addCallback">addCallback</a> procedure-name callback-type
+ <a href="#reset">reset</a>
+ <a href="#flush">flush</a>
+<p>
+ <a href="#setCursorPos">setCursorPos</a> x y [raster]
+ <a href="#getCursorPos">getCursorPos</a> x y
+ <a href="#setCursorType">setCursorType</a> cursortype
+ <a href="#bell">bell</a>
+</pre>
+<p>
+Graphics drawing commands:
+<p>
+<pre>
+ <a href="#setRaster">setRaster</a> raster
+ raster = <a href="#getRaster">getRaster</a> [raster]
+<p>
+ <a href="notyet.html">setLogRes</a> width height (unimplimented)
+ <a href="notyet.html">getLogRes</a> width height (unimplimented)
+ <a href="notyet.html">setPhysRes</a> width height (unimplimented)
+ <a href="notyet.html">getPhysRes</a> width height (unimplimented)
+ <a href="notyet.html">setTextRes</a> rows cols (unimplimented)
+ <a href="notyet.html">setDataLevel</a> level (unimplimented)
+ <a href="notyet.html">setLineWidth</a> width (unimplimented)
+ <a href="notyet.html">setLineStyle</a> style (unimplimented)
+ <a href="notyet.html">setColorIndex</a> index (unimplimented)
+ <a href="notyet.html">setFillType</a> filltype (unimplimented)
+<p>
+ <a href="#clearScreen">clearScreen</a>
+ <a href="notyet.html">drawPolyline</a> vector (unimplimented)
+ <a href="notyet.html">drawPolymarker</a> vector (unimplimented)
+ <a href="notyet.html">drawPolygon</a> vector (unimplimented)
+ <a href="notyet.html">drawMarker</a> x y xsize ysize type (unimplimented)
+<p>
+ <a href="notyet.html">drawAlphaText</a> x y text (unimplimented)
+ <a href="notyet.html">getAlphaTextSize</a> string width height base (unimplimented)
+ <a href="notyet.html">startDialog</a> (unimplimented)
+ <a href="notyet.html">endDialog</a> (unimplimented)
+ <a href="notyet.html">eraseDialog</a> (unimplimented)
+ <a href="notyet.html">drawDialogText</a> x y text (unimplimented)
+ <a href="notyet.html">getDialogTextSize</a> string width height base (unimplimented)
+</pre>
+<p>
+The coordinates used in the graphics drawing commands are logical
+coordinates as defined by setLogRes, in the coordinate system of the
+reference drawing raster as defined by setRaster. The default reference
+raster is raster zero, the widget's window. Vectors are specified as
+a list of points, e.g., { {x y} {x y} ... }.
+<p>
+Imaging commands:
+<p>
+<pre>
+ <a href="#rasterInit">rasterInit</a>
+ <a href="notyet.html">assignRaster</a> raster drawable (unimplimented)
+ <a href="notyet.html">createRaster</a> raster type width height depth (unimplimented)
+ <a href="notyet.html">destroyRaster</a> raster (unimplimented)
+ exists = <a href="notyet.html">queryRaster</a> raster type width height depth (unimplimented)
+ raster = <a href="notyet.html">nextRaster</a> [raster] (unimplimented)
+ nrasters = <a href="notyet.html">nRasters</a> [nrasters] (unimplimented)
+<p>
+ <a href="#setPixel">setPixel</a> raster x y value
+ value = <a href="#getPixel">getPixel</a> raster x y
+ <a href="#writePixels">writePixels</a> raster pixels encoding x1 y1 nx ny
+ <a href="#readPixels">readPixels</a> raster pixels encoding x1 y1 nx ny
+ <a href="notyet.html">refreshPixels</a> raster ct x1 y1 nx ny (unimplimented)
+ pixmap = <a href="notyet.html">createPixmap</a> src x y width height (unimplimented)
+ <a href="notyet.html">copyPixmap</a> pixmap dst x y width height (unimplimented)
+<p>
+ colormap = <a href="notyet.html">nextColormap</a> [colormap] (unimplimented)
+ <a href="notyet.html">freeColormap</a> colormap (unimplimented)
+ <a href="notyet.html">writeColormap</a> colormap first nelem colors (unimplimented)
+ <a href="notyet.html">readColormap</a> colormap first nelem colors (unimplimented)
+ <a href="#loadColormap">loadColormap</a> colormap offset scale
+<p>
+ <a href="notyet.html">initMappings</a> (unimplimented)
+ mapping = <a href="#nextMapping">nextMapping</a> [mapping]
+ <a href="notyet.html">freeMapping</a> mapping (unimplimented)
+ <a href="notyet.html">enableMapping</a> mapping (unimplimented)
+ <a href="notyet.html">disableMapping</a> mapping (unimplimented)
+ active = <a href="notyet.html">activeMapping</a> mapping (unimplimented)
+ <a href="notyet.html">refreshMapping</a> mapping (unimplimented)
+<p>
+ raster = <a href="#selectRaster">selectRaster</a> dras dt dx dy rt rx ry [map]
+ <a href="#unmapPixel">unmapPixel</a> sx sy raster rx ry [rz]
+<p>
+ <a href="notyet.html">copyRaster</a> rop src st sx sy snx sny dst dt dx dy dnx dny (unimplimented)
+ <a href="#setMapping">setMapping</a> mapping rop
+ src st sx sy snx sny dst dt dx dy dnx dny
+ <a href="#getMapping">getMapping</a> mapping rop
+ src st sx sy snx sny dst dt dx dy dnx dny
+<p>
+ <a href="#flip">flip</a> mapping axis [axis...]
+</pre>
+<p>
+Pixel arrays are long strings consisting either of a sequence of numeric
+pixel values separated by whitespace (space or newline), or a hex encoded
+sequence of bytes (2 hex digits per 8 bit pixel). Colors are specified
+as a list of RGB triplets, e.g., { {R G B} {R G B} ... }.
+<p>
+Refer to the documentation for the Gterm widget for a detailed description
+of rasters, mappings, and colormaps.
+<p>
+Markers:
+<p>
+<pre>
+ <a href="#createMarker">createMarker</a> name [attribute-list]
+ <a href="#markerInit">markerInit</a>
+</pre>
+<p>
+New markers may be created with createMarker. Once created, a marker
+functions under the Object Manager as a named object of class "marker".
+Refer to the marker class for a description of the commands defined for
+a marker.
+<p>
+gterm Actions List
+<p>
+<pre>
+ ignore
+ graphics-input
+ graphics-context
+ crosshair
+ track-cursor
+ enter-window
+ leave-window
+ popup-menu {not implemented}
+ reset
+ m_create
+</pre>
+<p>
+Default translations for Gterm window.
+Omitted for now: Ctrl ~Meta <Btn3Down>: popup-menu(tekMenu)
+<p>
+default Gterm Translations
+<p>
+<pre>
+ [Btn1Down]:m_create()
+ [Btn2Down]:crosshair(on)
+ [Btn2Motion]:crosshair(on)
+ [Btn2Up]:crosshair(off)
+ ~Ctrl ~Meta [Btn3Down]:graphics-context()
+ [EnterWindow]:enter-window()
+ [LeaveWindow]:leave-window()
+ [KeyPress]:graphics-input()
+ [Motion]:track-cursor()
+<pre>
+<p>
+<p>
+GTERM class commands.
+<p>
+<h1><A NAME="setGterm">setGterm</A></h1>
+<p>
+Set the active Gterm widget. A UI can have more than one
+gterm widget, but due to restrictions on the client-server interface, it
+may be possible for only one to receive client output at any one time (any
+gterm widget can generate input to be sent to the client). If the client
+has this restriction, the client-server interface code which uses OBM can
+call the ObmPostSetGtermCallback procedure to post a function to be called
+when the UI code calls the setGterm procedure.
+<p>
+Usage:
+<p>
+<pre>
+ setGterm
+</pre>
+<p>
+<h1><A NAME="activate">activate</A></h1>
+<p>
+Activate the gterm widget. This causes the next GIN mode
+setCursorType to warp the pointer into the gterm window.
+<p>
+Usage:
+<p>
+<pre>
+ activate
+</pre>
+<p>
+<h1><A NAME="deactivate">deactivate</A></h1>
+<p>
+Deactivate the gterm widget. If the cursor has been warped
+into the window by a previous activate/setCursorType GIN mode, this causes
+the cursor to be warped back to where it was previously.
+<p>
+Usage:
+<p>
+<pre>
+ deactivate
+</pre>
+<p>
+<h1><A NAME="reset">reset</A></h1>
+<p>
+Reset the gterm widget. This causes a number of state variables
+affecting graphics drawing options to be set to their default values.
+<p>
+Usage:
+<p>
+<pre>
+ reset
+</pre>
+<p>
+<h1><A NAME="flush">flush</A></h1>
+<p>
+Flush any graphics output and synchronize the state of the widget
+with what is shown on the display.
+<p>
+Usage:
+<p>
+<pre>
+ flush
+</pre>
+<p>
+The gterm widget uses XLIB, which buffers graphics drawing commands and
+automatically sends them to the X server when 1) the buffer fills,
+2) input is requested from the server. Such buffering of data is necessary
+for efficient operation and it should rarely be necessary to explicitly
+flush graphics output since XLIB does this automatically in most cases.
+An example of when explicitly flushing the ouptut might be necessary is in
+cases where smooth animation is desired and drawing the graphics in batches
+could cause the display to appear "jerky".
+<p>
+<h1><A NAME="addCallback">addCallback</A></h1>
+<p>
+Post a callback for a Gterm widget event.
+<p>
+Usage:
+<p>
+<pre>
+ addCallback procedure-name [callback-type]
+</pre>
+<p>
+The recognized Gterm callbacks are
+<p>
+<pre>
+
+ input Called when the graphics-input action is invoked in
+ a translation table. The default Gterm translation
+ table invokes this action when a KeyPress event occurs
+ in the Gterm window.
+ Callback: widget-name input-type event-data
+
+ resize Called when the gterm window is resized.
+ Callback: widget-name width height
+
+ reset Called when the "reset" action is invoked.
+ Callback: widget-name
+
+<pre>
+<p>
+If no callback is specified the default is "input".
+<p>
+Note that in GUI code one can also use the translation table to directly
+invoke GUI procedures without need to use the Gterm input mechanism. This
+is more flexible but we support the Gterm input callback here for
+applications that use the default translations.
+<p>
+<h1><A NAME="setCursorPos">setCursorPos</A></h1>
+<p>
+Warp the cursor (pointer) to the given coordinates. This
+is a graphics drawing command and if no raster number is specified the
+current reference drawing raster, as set with setRaster, defines the
+coordinate system.
+<p>
+Usage:
+<p>
+<pre>
+ setCursorPos x y [raster]
+</pre>
+<p>
+A raster number may optionally given to define the raster coordinate system
+to be used. raster=0 yields screen coordinates.
+<p>
+<h1><A NAME="getCursorPos">getCursorPos</A></h1>
+<p>
+Get the cursor position (raster 0 or screen coordinates).
+<p>
+Usage:
+<p>
+<pre>
+ getCursorPos x y
+</pre>
+<p>
+<h1><A NAME="setCursorType">setCursorType</A></h1>
+<p>
+Set the cursor type.
+<p>
+Usage:
+<p>
+<pre>
+ setCursorType cursor-type
+
+ idle default cursor
+ busy busy cursor, e.g, when program is busy
+ ginMode graphics input mode cursor, set when program is
+ waiting for graphics input
+</pre>
+<p>
+<h1><A NAME="bell">bell</A></h1>
+<p>
+Gterm widget sound output.
+<p>
+Usage:
+<p>
+<pre>
+ bell
+</pre>
+<p>
+<h1><A NAME="setRaster">setRaster</A></h1>
+<p>
+Set the number of the raster to be used to define the drawing
+context (e.g. coordinate system) for graphics and text drawing functions.
+<p>
+Usage:
+<p>
+<pre>
+ setRaster raster-number
+</pre>
+<p>
+<h1><A NAME="getRaster">getRaster</A></h1>
+<p>
+Get the number of the raster which defines the drawing
+context, as set in the last setRaster call.
+<p>
+Usage:
+<p>
+<pre>
+ raster = getRaster [raster]
+</pre>
+<p>
+If the name of a variable is given the raster number will be stored
+directly in that variable.
+<p>
+<h1><A NAME="clearScreen">clearScreen</A></h1>
+<p>
+Clear the "screen", i.e., window. This action clears the
+drawing window and sets a number of drawing state variables to their default
+values.
+<p>
+Usage:
+<p>
+<pre>
+ clearScreen
+</pre>
+<p>
+<h1><A NAME="rasterInit">rasterInit</A></h1>
+<p>
+Initialize the raster subsystem, deleting all rasters and
+mappings and freeing the dynamic part of the colortable.
+<p>
+Usage:
+<p>
+<pre>
+ rasterInit
+</pre>
+<p>
+<h1><A NAME="writePixels">writePixels</A></h1>
+<p>
+Set the values of some subset of the pixels in a raster.
+If any mappings are defined on the affected region and are enabled, any
+destination rasters will be automatically updated as defined by the mapping.
+<p>
+Usage:
+<p>
+<pre>
+ writePixels raster pixels encoding nbits x1 y1 nx ny
+
+ raster The raster number.
+ pixels The pixel array, encoded as a string.
+ encoding The pixel encoding. "numeric" means each pixel is
+ encoded as a decimal integer delimited by whitespace.
+ "hex" means the pixel array is hex encoded, 2 bytes
+ per 8 bit pixel, as a printable text string. The
+ two bytes are defined as follows (v = pixel value):
+
+ byte1 = ((v >> 4) & 017) in hex [0-9A-F]
+ byte2 = ((v ) & 017) in hex [0-9A-F]
+
+ Whitespace in a hex encoded string is ignored.
+ Hex encoding reduces the data volume by about a factor
+ of two (compared to numeric) and is only a factor of
+ two less space efficient than binary.
+
+ nbits Number of bits per pixel - currently only 8 bit pixels
+ are supported.
+
+ x1,y1,nx,ny Region of the raster to be written.
+</pre>
+<p>
+Most real-world image processing applications get the Gterm widget handle
+with setGterm and pass binary data to the widget by calling GtWritePixels
+directly. This is the most efficient approach for serious image processing
+where large amounts of data are involved. However, being able to read and
+write raster pixels directly in a GUI can be useful in specialized
+applications, e.g., where the image is computed or modified by the GUI.
+<p>
+<h1><A NAME="setPixel">setPixel</A></h1>
+<p>
+Set the value of a single pixel.
+<p>
+Usage:
+<p>
+<pre>
+ setPixel raster x y value
+
+ raster The raster number.
+ x, y The pixel to be set.
+ value The pixel value.
+</pre>
+<p>
+This routine is more efficient than writePixels for setting the value of
+a single pixel, but is a lot less efficient if a block of pixels are to
+be set.
+<p>
+<h1><A NAME="readPixels">readPixels</A></h1>
+<p>
+Get the values of some subset of the pixels in a raster.
+<p>
+Usage:
+<p>
+<pre>
+ readPixels raster pixels encoding nbits x1 y1 nx ny
+
+ raster The raster number.
+ pixels The pixel array, encoded as a string.
+ encoding The pixel encoding. "numeric" means each pixel is
+ encoded as a decimal integer delimited by whitespace.
+ "hex" means the pixel array is hex encoded, 2 bytes
+ per 8 bit pixel, as a printable text string. The
+ two bytes are defined as follows (v = pixel value):
+
+ byte1 = ((v >> 4) & 017) in hex [0-9A-F]
+ byte2 = ((v ) & 017) in hex [0-9A-F]
+
+ Whitespace in a hex encoded string is ignored.
+ Hex encoding reduces the data volume by about a factor
+ of two (compared to numeric) and is only a factor of
+ two less space efficient than binary.
+
+ nbits Number of bits per pixel - currently only 8 bit pixels
+ are supported.
+
+ x1,y1,nx,ny Region of the raster to be read.
+</pre>
+<p>
+Use readPixels to read a block of pixels, and getPixel to get the value
+of a single pixel.
+<p>
+<h1><A NAME="getPixel">getPixel</A></h1>
+<p>
+Get the value of a single pixel.
+<p>
+Usage:
+<p>
+<pre>
+ getPixel raster x y
+
+ raster The raster number.
+ x, y The pixel to be set.
+</pre>
+<p>
+This routine is more efficient than readPixels for getting the value of
+a single pixel, but is a lot less efficient if a block of pixels are to
+be read.
+<p>
+<h1><A NAME="nextMapping">nextMapping</A></h1>
+<p>
+Return the index of the next unused mapping.
+<p>
+Usage:
+<p>
+<pre>
+ nextMapping
+</pre>
+<p>
+Returns the mapping number as the function value.
+<p>
+<h1><A NAME="getMapping">getMapping</A></h1>
+<p>
+Get a mapping.
+<p>
+Usage:
+<p>
+<pre>
+ getMapping mapping rop src st sx sy snx sny dst dt dx dy dnx dny
+</pre>
+<p>
+All parameters except the mapping number are output parameters.
+<p>
+<h1><A NAME="setMapping">setMapping</A></h1>
+<p>
+Set a mapping.
+<p>
+Usage:
+<p>
+<pre>
+ setMapping mapping rop src st sx sy snx sny dst dt dx dy dnx dny
+</pre>
+<p>
+All parameters are input parameters.
+<p>
+<h1><A NAME="loadColormap">loadColormap</A></h1>
+<p>
+Load a colormap.
+<p>
+Usage:
+<p>
+<pre>
+ loadColormap colormap [offset [scale]]
+</pre>
+<p>
+The offset and scale parameters may be used to adjust the brightness and
+contrast of the image when the colormap is loaded. The normalized colormap
+has offset=0.5, scale=1.0. Colormap zero is the hardware colormap.
+<p>
+<h1><A NAME="selectRaster">selectRaster</A></h1>
+<p>
+Given the raw screen coordinates SX,SY (or coords in
+any destination raster), determine the mapping and source raster which are
+mapped to that pixel and return the raster and mapping numbers and the
+coordinates of the same pixel in the source raster.
+<p>
+Usage:
+<p>
+<pre>
+ raster = selectRaster dras dt dx dy rt rx ry [map]
+</pre>
+<p>
+where
+<p>
+<pre>
+ dras display raster
+ dt,rt coordinate type - "pixel" or "ndc"
+ dx,dy display raster coordinates (input)
+ rx,ry source raster coordinates (output)
+ map mapping selected (output)
+</pre>
+<p>
+Note that the coordinates returned by selectRaster are measured (taking
+a line as an example) from zero at the left edge of the first pixel, to
+"width" at the right edge of the last pixel. This means that the floating
+point coordinates of the center of raster pixel N will be N + 0.5. For
+example, if we input screen coordinates (dras=0), x=117, and no mapping
+is in effect, the floating point raster coordinates returned will be 117.5.
+The difference occurs because the input coordinate is a pixel number
+(integer) while the output coordinate is a floating point coordinate
+measuring the continuously variable location a pixel. int(x) will convert
+this coordinate to a raster pixel number.
+<p>
+<h1><A NAME="unmapPixel">unmapPixel</A></h1>
+<p>
+unmapPixel is a simplified, less general version of
+selectRaster which will automatically follow graphics pipelines back to
+the original mapped raster. If desired the raster pixel value can be
+returned as well as the raster number and raster pixel coordinates
+corresponding to a screen (raster 0) pixel.
+<p>
+Usage:
+<p>
+<pre>
+ unmapPixel sx sy raster rx ry [rz]
+</pre>
+<p>
+where
+<p>
+<pre>
+ sx,sy "screen" (raster 0) coordinates
+ raster original mapped raster (output)
+ rx,ry source raster coordinates (output)
+ rz source raster pixel value (output)
+<pre>
+<p>
+By following graphics pipelines back to the original source raster we mean
+the following. If raster A is mapped to raster B which is mapped to C (the
+screen), given a screen coordinate in the mapped region unmapPixel will
+return the raster number and coordinates for raster A.
+<p>
+<h1><A NAME="flip">flip</A></h1>
+<p>
+Edit a mapping to flip the mapped subimage in X and/or Y.
+<p>
+Usage:
+<p>
+<pre>
+ flip mapping axis [axis]
+</pre>
+<p>
+where axis is "x" or "y". This is a convenience routine for changing only
+the flip portion of a mapping.
+<p>
+<h1><A NAME="markerInit">markerInit</A></h1>
+<p>
+Initialize the Marker subsystem for a Gterm widget.
+This destroys all markers and initializes the marker subsystem.
+<p>
+Usage:
+<p>
+<pre>
+ markerInit
+</pre>
+<p>
+<h1><A NAME="createMarker">createMarker</A></h1>
+<p>
+Create a new marker.
+<p>
+Usage:
+<p>
+<pre>
+ createMarker name attribute-list
+ e.g. createMarker name {attribute value [attribute value ...]}
+ or createMarker name attribute value [attribute value ...]
+<pre>
+<p>
+Any marker attribute may be assigned a value when the marker is created.
+Refer to &lt;ObmW/Gterm.h&gt; for a list of marker attribute names. Often the
+the attributes "type" and "createMode" need to be specified at marker
+create time.
+<p>
+<pre>
+ type The marker type: text, rectangle, circle, etc.
+
+ createMode A marker should be created with createMode=interactive
+ if the user is expected to interactively drag out
+ the marker using the pointer and either the default
+ or an application specified translation table. A
+ marker can also be created interactively using only
+ the m_create (marker create) action, however m_create
+ does not allow the marker attributes to be set.
+<pre>
+<p>
+There are any number of ways to use a GUI to create a marker under the
+Object Manager, but an example might be using a translation to call a GUI
+procedure which issues the createMarker call. For example a pointer down
+event could translate as "call(newMarker,$name,$x,$y) m_create()" where
+newMarker is a GUI marker creation procedure which sends a createMarker
+message to the Gterm widget. The GUI procedure could set the marker
+attributes as desired, possibly using additional GUI components to define
+the marker attributes. The m_create action will notice that a
+createMarker has been executed and will merely activate the marker and
+give it the pointer focus (i.e. install the marker translations). The
+user will then use the pointer or keyboard to drag out the marker.
+<p>
+If the marker is created noninteractive the application must set the marker
+position and size using marker attributes. If the marker is sensitive
+the user can then use the marker's translations to interactively modify
+the marker (resize it, move it, etc.). All markers which are visible and
+sensitive and which have the necessary translations can be interactively
+modified by the user; the reason for creating a marker in interactive mode
+is to allow the initial marker position and size to be specified
+interactively *when* the marker is created, instead of afterwards.
+<p>
+Any number of attributes may be given when the marker is created. Most
+marker attributes can also be modified after a marker has been created
+by sending setAttribute messages to the marker.
+
diff --git a/vendor/x11iraf/obm/docs/gui.doc/gui.html b/vendor/x11iraf/obm/docs/gui.doc/gui.html
new file mode 100644
index 00000000..d7e20546
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/gui.html
@@ -0,0 +1,93 @@
+<html>
+<body bgcolor=#FFFFFF>
+
+<title>IRAF Object Manager</title>
+<h1>IRAF Object Manager</h1>
+<HR>
+<p>
+An Object Manager (OBM) user interface (UI) consists of one or more windows
+containing an arbitrary hierarchy of widgets. These widgets and their
+runtime actions are defined by an interpreted text program uploaded
+by the client application, which does not itself deal directly with
+the window user interface. Currently, this interpreted program is written
+in Tcl.
+<p>
+The object manager provides a higher level of abstraction for dealing
+with widgets and other UI objects. The main function of the object
+manager is to deliver messages to UI objects. Each instance of a widget,
+the client programs, and the OBM itself are
+objects in the UI. The UI contains other types of objects however,
+including the client object (client application), the server object
+(the object manager itself), and the application specific UI parameters,
+each of which is an object with a callback list of UI procedures to be
+called when the parameter value changes. All of these UI objects can
+receive messages and take actions as a result. Messages may come from the
+client application, or as a result of actions executed by the interpreted
+UI code in response to graphics events.
+<p>
+<h2>Object classes:</h2>
+<p>
+<pre>
+<a href="Client.html">Client</a> the client application
+<a href="Server.html">Server</a> the object manager itself
+<a href="widgetclass.html">Widget</a> widgets
+<a href="uiparameterclass.html">ParameterUI</a> control parameter
+<a href="gtermclass.html">Gterm</a> graphics/imaging widget
+<a href="gmc.html">Graphics Markers</a> marker widgets
+<a href="ximclient.html">Image Client</a> imageing widget
+<p>
+<a href="notyet.html">Various Xt and Athena widgets</a>
+ {box, shell, label, command, text, list, etc.}
+</pre>
+<p>
+To locate specific IRAF GUI commands quickly, here is an
+<pre>
+ <a href="alphabetic.html">alphabetized list of IRAF GUI commands</a>
+</pre>
+<p>
+Sophisticated graphics applications will download a UI during initialization
+to define a custom graphics user interface. This is done by sending a
+message to the object manager. Naive applications assume a simple graphics
+terminal and do not download a UI; in this case, a default UI is created
+for the application when the UI is enabled with ObmEnable. The default
+UI is a single top level shell window containing a single gterm (graphics
+terminal) widget.
+<p>
+<pre>
+ <a href="servercom.html#resetReset">reset-server</a>
+ <a href="servercom.html#appInitialize">appInitialize</a> appname,appclass,resources
+ <a href="servercom.html#createObjects">createObjects</a> [resource-name]
+ (UI specific code)
+ <a href="servercom.html#activate">activate</a>
+</pre>
+<p>
+A UI specification consists of a sequence of commands to be executed by
+the server object. This is downloaded by the client as a message for the
+server object. The commands should include "reset-server" (this must be
+the first executable command), "appInitialize" (defines the UI objects and
+their resources), and "createObjects" (creates the objects and the widget
+tree), followed by any UI specific commands to define and register UI
+callback procedures. Finally, "activate" is executed to activate the new
+user interface.
+<p>
+Class descriptors for all UI object classes. In the following, only the
+class initializer function needs to be set statically, since the class
+initializer function will initialize the remaining fields of the class
+descriptor at run time when the object manager is opened.
+<p>
+<pre>
+ Server Client Parameter Gterm Core
+ Object Widget Command Grip Label
+ List Scrollbar StripChart Toggle SimpleMenu
+ Sme SmeBSB SmeLine MenuButton AsciiText
+ Box Dialog Form Paned Viewport
+
+ Shell
+ OverrideShell
+ WMShell
+ TransientShell
+ TopLevelShell
+ ApplicationShell
+</pre>
+</body>
+</html>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/guiintro.html b/vendor/x11iraf/obm/docs/gui.doc/guiintro.html
new file mode 100644
index 00000000..81511434
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/guiintro.html
@@ -0,0 +1,9 @@
+<title>Introduction and Overview</title>
+<h2><IMG SRC="irafgui.gif"> Introduction and Overview</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
+<h3>Design Philosophy</h3>
+<p>
+<h3>Basic Tools</h3>
+<p>
+<h3><a href="example.html">An Example</a></h3>
+<p>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowse.gif b/vendor/x11iraf/obm/docs/gui.doc/imbrowse.gif
new file mode 100644
index 00000000..af1e7c0a
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowse.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/controlForm.html b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/controlForm.html
new file mode 100644
index 00000000..88e74c83
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/controlForm.html
@@ -0,0 +1,3 @@
+<title>Example: Imbrowse panel</title>
+<h2><IMG SRC="irafgui.gif"> You selected the controlForm</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/dirName.html b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/dirName.html
new file mode 100644
index 00000000..4c4b3cb3
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/dirName.html
@@ -0,0 +1,3 @@
+<title>Example: Imbrowse panel</title>
+<h2><IMG SRC="irafgui.gif"> You selected the dirName</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/dirSelect.html b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/dirSelect.html
new file mode 100644
index 00000000..fe8f8f40
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/dirSelect.html
@@ -0,0 +1,3 @@
+<title>Example: Imbrowse panel</title>
+<h2><IMG SRC="irafgui.gif"> You selected the dirSelect</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/headerText.html b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/headerText.html
new file mode 100644
index 00000000..a132c5f3
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/headerText.html
@@ -0,0 +1,3 @@
+<title>Example: Imbrowse panel</title>
+<h2><IMG SRC="irafgui.gif"> You selected the headerText</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/imageButton.html b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/imageButton.html
new file mode 100644
index 00000000..12595f3c
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/imageButton.html
@@ -0,0 +1,3 @@
+<title>Example: Imbrowse panel</title>
+<h2><IMG SRC="irafgui.gif"> You selected the imageButton</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/none.html b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/none.html
new file mode 100644
index 00000000..9cd7d5e3
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/none.html
@@ -0,0 +1,3 @@
+<title>Example: Imbrowse none</title>
+<h2><IMG SRC="irafgui.gif"> You selected none of the ellipses</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/objView.html b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/objView.html
new file mode 100644
index 00000000..a830a57a
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/objView.html
@@ -0,0 +1,3 @@
+<title>Example: Imbrowse panel</title>
+<h2><IMG SRC="irafgui.gif"> You selected the objView</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/panel.html b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/panel.html
new file mode 100644
index 00000000..b6b0ff2e
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/panel.html
@@ -0,0 +1,3 @@
+<title>Example: Imbrowse panel</title>
+<h2><IMG SRC="irafgui.gif"> You selected the panel</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/sectionBox.html b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/sectionBox.html
new file mode 100644
index 00000000..60895b18
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/sectionBox.html
@@ -0,0 +1,3 @@
+<title>Example: Imbrowse panel</title>
+<h2><IMG SRC="irafgui.gif"> You selected the sectionBox</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/statusBox.html b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/statusBox.html
new file mode 100644
index 00000000..061f5045
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imbrowsemap/statusBox.html
@@ -0,0 +1,3 @@
+<title>Example: Imbrowse panel</title>
+<h2><IMG SRC="irafgui.gif"> You selected the statusBox</h2>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
diff --git a/vendor/x11iraf/obm/docs/gui.doc/imtool.gif b/vendor/x11iraf/obm/docs/gui.doc/imtool.gif
new file mode 100644
index 00000000..a29811ef
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/imtool.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/intro.gif b/vendor/x11iraf/obm/docs/gui.doc/intro.gif
new file mode 100644
index 00000000..7f7af646
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/intro.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/irafgui.gif b/vendor/x11iraf/obm/docs/gui.doc/irafgui.gif
new file mode 100644
index 00000000..032c72d5
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/irafgui.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/llama.gif b/vendor/x11iraf/obm/docs/gui.doc/llama.gif
new file mode 100644
index 00000000..be0ceef4
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/llama.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/marker.gif b/vendor/x11iraf/obm/docs/gui.doc/marker.gif
new file mode 100644
index 00000000..639b19bd
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/marker.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/newgui.html b/vendor/x11iraf/obm/docs/gui.doc/newgui.html
new file mode 100644
index 00000000..36e7ec1a
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/newgui.html
@@ -0,0 +1,18 @@
+<title>IRAF GUI Documentation</title>
+<h1><IMG SRC="irafgui.gif"> IRAF Graphical User Interfaces</h1>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
+<p>
+This hypertext work is introductory documentation for the IRAF graphical
+user interface facility introduced with IRAF version 2.10.3. Questions
+can be directed, via electronic mail, to iraf.noao.edu or posted to the
+newsgroup adass.iraf.programmer.
+<p>
+<pre>
+<a href="guiintro.html"><IMG ALIGN=MIDDLE SRC="intro.gif"></a> An introduction and overview
+
+<a href="widgets.html"><IMG ALIGN=MIDDLE SRC="widgets.gif"></a> The widgets and how they work
+
+<a href="tcl.html"><IMG ALIGN=MIDDLE SRC="tcl.gif"></a> The language used to build GUIs
+
+<a href="notyet2.html"><IMG ALIGN=MIDDLE SRC="softgui.gif"></a> Software - GUI communication
+</pre>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/notyet.html b/vendor/x11iraf/obm/docs/gui.doc/notyet.html
new file mode 100644
index 00000000..9a292a44
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/notyet.html
@@ -0,0 +1,5 @@
+<title>NOTYET</title>
+<p>
+<a href="einstein.html"><IMG align=middle SRC="einstein.gif"></a>
+The info you requested is not yet available.
+<p>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/notyet2.html b/vendor/x11iraf/obm/docs/gui.doc/notyet2.html
new file mode 100644
index 00000000..2a6e3dca
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/notyet2.html
@@ -0,0 +1,5 @@
+<title>NOTYET</title>
+<p>
+<IMG align=middle SRC="llama.gif">
+The info you requested is not yet available.
+<p>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/otherwidgets.html b/vendor/x11iraf/obm/docs/gui.doc/otherwidgets.html
new file mode 100644
index 00000000..f477fdc7
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/otherwidgets.html
@@ -0,0 +1,10 @@
+<title>Other Widgets</title>
+<h1><IMG SRC="irafgui.gif"> Other Widgets</h1>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
+<p>
+There are a few more widgets to be aware of, these are the parameter
+widgets, ....
+<p>
+<pre>
+<a href="parameterwidgets.html">Parameter Widget</a>
+</pre>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/params.gif b/vendor/x11iraf/obm/docs/gui.doc/params.gif
new file mode 100644
index 00000000..053f424b
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/params.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/redline.gif b/vendor/x11iraf/obm/docs/gui.doc/redline.gif
new file mode 100644
index 00000000..574a6c8a
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/redline.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/serverclass.html b/vendor/x11iraf/obm/docs/gui.doc/serverclass.html
new file mode 100644
index 00000000..3fdaec2a
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/serverclass.html
@@ -0,0 +1,38 @@
+<title>SERVER class</title>
+<h1><IMG SRC="/iraf/web/images/iraf.gif"> SERVER class</h1>
+<p>
+<HR>
+<p>
+The server, or object manager, is the control center of the user interface.
+The server object provides a Tcl interpreter calling custom object manager
+commands. These are used to define and initialize the user interface, and
+execute UI action procedures at runtime.
+<p>
+<pre>
+ <a href="servercom.html#resetReset">reset-server</a>
+ <a href="servercom.html#appInitialize">appInitialize</a> appname,appclass,resources
+ <a href="servercom.html#createObjects">createObjects</a> [resource-name]
+ <a href="servercom.html#destroyObject">destroyObject</a> object
+ <a href="servercom.html#activate">activate</a>
+ <a href="servercom.html#deactivate">deactivate</a> [unmap]
+<p>
+ value = <a href="servercom.html#getResource">getResource</a> resource-name [default-value [class]]</a>
+ <a href="servercom.html#getResources">getResources</a> resource-list
+<p>
+ <a href="servercom.html#createMenu">createMenu</a> menu-name parent item-list
+ <a href="servercom.html#createMenu">editMenu</a> menu-name parent item-list
+ <a href="servercom.html#destroyMenu">destroyMenu</a> menu-name
+<p>
+ <a href="servercom.html#createBitmap">createBitmap</a> name width height data
+ <a href="servercom.html#createCursor">createCursor</a> name source mask fg_color bg_color x_hot y_hot
+ <a href="servercom.html#createPixmap">createPixmap</a> name width height depth fg_color bg_color data
+<p>
+ <a href="servercom.html#print">print</a> arg [arg ...] # debug messages
+ <a href="servercom.html#send">send</a> object message
+<p>
+ <a href="servercom.html#postActivateCallback">postActivateCallback</a> procedure
+id = <a href="servercom.html#postTimedCallback">postTimedCallback</a> procedure msec [client-data]
+ <a href="servercom.html#deleteTimedCallback">deleteTimedCallback</a> id
+ id = <a href="servercom.html#postWorkCallback">postWorkCallback</a> procedure [client-data]
+ <a href="servercom.html#deleteWorkCallback">deleteWorkCallback</a> id
+</pre>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/servercom.html b/vendor/x11iraf/obm/docs/gui.doc/servercom.html
new file mode 100644
index 00000000..16c4c24e
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/servercom.html
@@ -0,0 +1,375 @@
+<h1><A NAME="serverReset">serverReset</A></h1>
+<p>
+The "reset-server" command is implemented as a special case in ServerEvaluate.
+After doing a true reset ServerEvaluate calls Tcl_Eval to evaluate the full
+message which still contains the reset-server command. We want to ignore
+this the second time, so we treat the command here as a no-op.
+<p>
+Usage:
+<p>
+<pre>
+ reset-server
+</pre>
+<p>
+Note: for reset-server to be recognized by ServerEvaluate and really reset
+things, it must be the first command in a message to the server.
+<p>
+<h1><A NAME="appInitialize>appInitialize</A></h1>
+<p>
+TCL command to initialize the server for a new application, setting the
+application name and loading the application resources.
+<p>
+Usage:
+<p>
+<pre>
+ appInitialize appname, appclass, resources
+</pre>
+<p>
+<h1><A NAME ="createObjects">createObjects</A></h1>
+<p>
+TCL command to create the tree of UI objects comprising the user interface.
+The object tree is defined by a string valued resource. If no resource is
+named the default "objects" resource will be used.
+<p>
+Usage:
+<p>
+<pre>
+ createObjects [resource-name]
+</pre>
+<h1><A NAME="destroyObject">destroyObject</A></h1>
+<p>
+Destroy an object and all of its children.
+<p>
+Usage:
+<pre>
+ destroyObject object-name
+</pre>
+<p>
+<h1><A NAME="activate">activate</A></h1>
+Activate the user interface. When called the first time the user interface
+is created and activated, thereafter the UI is merely reactivated (e.g.
+mapped if unmapped).
+<p>
+Usage:
+<p>
+<pre>
+ activate
+</pre>
+<p>
+<h1><A NAME="deactivate">deactivate</A></h1>
+<p>
+Deactivate the user interface. Optionally unmaps the UI and calls the Obm
+client back to let it know that the UI has been deactivated.
+<p>
+Usage:
+<p>
+<pre>
+ deactivate [unmap]
+</pre>
+<p>
+<h1><A NAME="getResource">getResource</A></h1>
+<p>
+Get the string value of the specified application resource (window
+system parameter). This allows use of the resource mechanism to supply
+default values for GUI parameters.
+<p>
+Usage:
+<p>
+<pre>
+ value = getResource resource-name [class [default-value]]
+</pre>
+<p>
+In the simplest case one merely requests a resource by name and the
+string value is returned as the function value. If the resource has
+an entry in the fallback resources for the application (appInitialize
+resource list) then a value is guaranteed to be returned.
+<p>
+If the Class name for the resource is given then a class default value
+will be returned if no entry is found for the name resource instance. This
+is useful when there are a number of resources of the same type (same class).
+If most or all resources in the same class have the same default value one
+need only make one entry for the Class in the application defaults resource
+list. It is up to the application developer to define the class name of a
+resource - the class name can be any string. Examples are "Font", "Cursor",
+etc. By convention the first character of a class name is capitalized, while
+instance names begin with a lower case letter.
+<p>
+If there is an entry for the named resource in the resource list passed to
+appInitialize then a value string is guaranteed to be returned. This will be
+either the appInitialize default, or a value specified by the system or the
+user in an X resources file. If one is not certain a default value is defined
+somewhere, a default value should be specified in the getResource call as
+shown above.
+<p>
+See also getResources, used to get multiple resources in one call.
+<p>
+<h1><A NAME="getResources">getResources</A></h1>
+<p>
+Get the string values of a list of resources.
+<p>
+Usage:
+<p>
+<pre>
+ getResources resource-list
+</pre>
+<p>
+e.g.
+<pre>
+ getResources {
+ { resource [variable class [default-value]]] }
+ { resource [variable class [default-value]]] }
+ (etc.)
+ }
+</pre>
+<p>
+<h1><A NAME="createMenu">createMenu, editMenu</A></h1>
+<p>
+Create or modify a menu. The editMenu function is an alias for createMenu.
+<p>
+Usage:
+<pre>
+ createMenu menu-name parent item-list
+</pre>
+<p>
+e.g.,
+<pre>
+ createMenu menu-name parent {
+ { label function data [options...] }
+ { label function data [options...] }
+ (etc.)
+ }
+</pre>
+<p>
+where
+<p>
+<pre>
+ menu-name is the object name for the menu popup shell
+ parent is the parent widget of the menu shell
+ label is a menu item label
+ function is the function to be performed when the menu
+ item is selected, e.g., f.exec, f.data, f.space, or f.line.
+ data is function dependent data
+ options are option-name option-value pairs, as specified
+ below.
+</pre>
+<p>
+In the item list the fields label and option-value may be any Tcl expression.
+Expressions are evaluated in the server context. The data field is a Tcl
+script to be executed when the menu item is selected.
+<p>
+Options are specified as "option option-value". The menu item options are
+as follows.
+<p>
+<pre>
+ bitmap A bitmap to be displayed left justified in the label field
+ (e.g. to indicate a parameter setting).
+ sensitive Specifies whether the menu item is active (sensitive=true)
+ or inactive (sensitive=false, item grayed out).
+ accelerator Specifies an input translation (accelerator, e.g.,
+ keyboard event) which can be used to execute the
+ menu item.
+</pre>
+<p>
+The option-value field may be any Tcl expression.
+<p>
+Example:
+<p>
+<pre>
+ createMenu fileMenu toplevel {
+ { "File Menu" f.title}
+ { Open f.exec openFile}
+ { Save f.exec saveFile}
+ { Load f.menu loadMenu}
+ { no-label f.line }
+ { Quit f.exec "send client Quit" }
+ }
+</pre>
+<p>
+The first createMenu is called for a given menu the menu is created, added
+to the menu list, and all window system widgets are created for the menu.
+Subsequent calls will result in only the changed parts of the menu being
+altered provided the changes are not great. Hence this routine can be called
+to efficiently modify a menu when minor runtime changes occur, e.g., an
+item label or action changes, the item value changes state, and so on,
+without need for the GUI code to know how to make the necessary detailed
+changes to the widgets used to implement the menu.
+<p>
+<h1><A NAME="destroyMenu">destroyMenu</A></h1>
+<p>
+Destroy a menu. This can be used to free up the resources used by a
+menu, e.g., if the menu is not expected to be needed again for a while.
+<p>
+Usage:
+<p>
+<pre>
+ destroyMenu menu-name
+</pre>
+<p>
+<h1><A NAME="createBitmap">createBitmap</A></h1>
+<p>
+Create a named bitmap. This replaces any old bitmap of the same name. The
+new bitmap is cached in server memory; when a widget bitmap resource is set,
+the bitmap cache will be searched for the named bitmap before asking Xlib
+to find the bitmap.
+<p>
+Usage:
+<p>
+<pre>
+ createBitmap name width height data
+</pre>
+<p>
+e.g.,
+<p>
+<pre>
+ createBitmap foo 16 16 {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,
+ 0x60,0x03,0x20,0x02,0x60,0x03,0xc0,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }
+<p>
+<h1><A NAME="createCursor">createCursor</A></h1>
+<p>
+Create a cursor from bitmap data. The cursor is entered into the server's
+cursor cache and will override any existing entry of the same name.
+<p>
+Usage:
+<p>
+<pre>
+ createCursor name source mask fg_color bg_color x_hot y_hot
+</pre>
+<p>
+e.g.,
+<p>
+<pre>
+ createCursor foo bitmap1 bitmap2 black white 8 8
+</pre>
+<p>
+The named bitmaps must be created first with createBitmap.
+<p>
+<h1><A NAME="createPixmap">createPixmap</A></h1>
+<p>
+Create a named pixmap. This replaces any old pixmap of the same name. The
+new pixmap is cached in server memory; when a widget pixmap resource is set,
+the pixmap cache will be searched for the named pixmap before asking Xlib
+to find the pixmap.
+<p>
+Usage:
+<p>
+<pre>
+ createPixmap name width height depth fg_color bg_color data
+</pre>
+<p>
+e.g.,
+<p>
+<pre>
+ createPixmap foo 16 16 8 black white {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,
+ 0x60,0x03,0x20,0x02,0x60,0x03,0xc0,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }
+</pre>
+<p>
+<h1><A NAME="print">print</A></h1>
+<p>
+Print a string on the standard output. This is used mainly for debugging
+user interfaces.
+<p>
+Usage:
+<p>
+<pre>
+ print arg [arg ...]
+</pre>
+<p>
+<h1><A NAME="send">send</A></h1>
+<p>
+Send a message to an object. The object interprets the message and returns
+a function value as the string result of the TCL command.
+<p>
+Usage
+<p>
+<pre>
+ send &lt;object&gt; &lt;message&gt;
+</pre>
+<p>
+<h1><A NAME="postActivateCallback">postActivateCallback</A></h1>
+<p>
+Post a callback procedure to be called when the UI is activated. The UI is
+activated when it is first downloaded to server, but it may also be
+activated (reactivated) after the application has exited and is later
+restarted, or when the UI is deactivated and reactivated. Note
+that the UI state vis-a-vis the external world (client application) may
+no longer be accurate after it has been idle for a time and then reactivated.
+<p>
+Usage:
+<p>
+<pre>
+ postActivateCallback &lt;procedure&gt;
+</pre>
+<p>
+<p>
+<h1><A NAME="postTimedCallback">postTimedCallback</A></h1>
+<p>
+Post a callback to call the named procedure back after a specified delay
+in milliseconds.
+<p>
+Usage:
+<p>
+<pre>
+ id = postTimedCallback procedure msec [client-data]
+</pre>
+<p>
+After the specified delay the user callback procedure will be called with
+client_data (if given) as the single argument. Only one call will be made;
+the client must repost the callback in each call if the procedure is to be
+repeatedly executed.
+<p>
+An ID value is returned which may be passed to deleteTimedCallback to delete
+the timer.
+<p>
+<h1><A NAME="deleteTimedCallback">deleteTimedCallback</A></h1>
+<p>
+Delete a timer callback procedure. This procedure is typically used to
+break a timer loop, where the timer procedure repeatedly reposts itself at
+the end of each interval.
+<p>
+Usage:
+<p>
+<pre>
+ deleteTimedCallback id
+</pre>
+<p>
+The ID string is returned by postTimedCallback when a timer is posted.
+<p>
+<h1><A NAME="postWorkCallback">postWorkCallback</A></h1>
+<p>
+Post a callback for a procedure to be called when the server is idle.
+Work procedures are used to perform computations in the background while
+the user interface remains active and able to respond to input events.
+This works only if the user work procedure does its job in small increments,
+doing only a small amount of processing in each call. The work procedure
+will be called repeatedly until it returns a status indicating that it has
+finished its task.
+<p>
+Usage:
+<p>
+<pre>
+ id = postWorkCallback procedure [client-data]
+</pre>
+<p>
+When the server has nothing else to do the user work procedure will be
+called with client_data (if given) as the single argument. The work procedure
+should return the string "done" when all processing is finished, or any other
+string if the procedure is to be called again.
+<p>
+An ID value is returned which may be passed to deleteWorkCallback to delete
+the work procedure.
+<p>
+<h1><A NAME="deleteWorkCallback">deleteWorkCallback</A></h1>
+<p>
+Delete a work callback procedure.
+<p>
+Usage:
+<p>
+<pre>
+ deleteWorkCallback id
+</pre>
+<p>
+The ID string is returned by postWorkCallback when a work procedure is posted.
diff --git a/vendor/x11iraf/obm/docs/gui.doc/softgui.gif b/vendor/x11iraf/obm/docs/gui.doc/softgui.gif
new file mode 100644
index 00000000..7e287b10
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/softgui.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/tcl.gif b/vendor/x11iraf/obm/docs/gui.doc/tcl.gif
new file mode 100644
index 00000000..804a4afb
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/tcl.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/tcl.html b/vendor/x11iraf/obm/docs/gui.doc/tcl.html
new file mode 100644
index 00000000..259192f2
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/tcl.html
@@ -0,0 +1,7 @@
+<title>Tcl page</title>
+<h1>Tcl page</h1>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
+<p>
+<a href="book.p1.ps"><h2>John Ousterhout's Tcl book</a> (over 700 Kbytes of PostScript)</h2>
+<p>
+<a href="TclQuickRef.html"><h2>Tcl Quick Reference</h2></a>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/uiparameterclass.html b/vendor/x11iraf/obm/docs/gui.doc/uiparameterclass.html
new file mode 100644
index 00000000..fe189fc5
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/uiparameterclass.html
@@ -0,0 +1,107 @@
+<title>UI PARAMETER class</title>
+<h1><IMG SRC="/iraf/web/images/iraf.gif"> UI PARAMETER class</h1>
+<p>
+<HR>
+<p>
+The UI parameter class is used for client-UI communications. The client
+does not control the user interface directly, rather the UI defines a set
+of abstract UI parameters, and during execution the client application
+assigns values to these parameters. These UI parameters should be thought
+of as describing the runtime state of the client as viewed by the GUI.
+The GUI is free to interpret this state information in any way, including
+ignoring it. Many GUIs can be written which use the same client state
+as described by the UI parameters.
+<p>
+Assigning a value to a UI parameter causes the new value to be stored, and
+any parameter action procedures registered by the UI to be called.
+The action or actions [if any] taken when a parameter value changes are
+arbitrary, e.g. the action might be something as simple as changing a
+displayed value of a UI widget, or something more complex like displaying
+a popup.
+<p>
+UI Parameter class commands:
+<p>
+<pre>
+ <a href="#getValue">getValue</a>
+ <a href="#setValue">setValue</a> &lt;new-value&gt;
+ <a href="#addCallback">addCallback</a> &lt;procedure-name&gt;
+ <a href="#deleteCallback">deleteCallback</a> &lt;procedure-name&gt;
+ <a href="#notify">notify</a>
+</pre>
+<p>
+The most common usage is for the GUI to post one or more callbacks for
+each UI parameter. When the UI parameter value is changed [with setValue,
+e.g. by the client] the GUI callback procedures are called with the old
+and new UI parameter values on the command line. addCallback is used to
+add a callback procedure, and deleteCallback to delete one. Multiple
+callbacks may be registered for a single UI parameter. notify is used
+to simulate a parameter value change, causing any callback procedures to
+be invoked.
+<p>
+The callback procedure is called as follows:
+<p>
+<pre>
+ user-procedure param-name {old-value} {new-value}
+</pre>
+<p>
+The important thing to note here is that the old and new value strings
+are quoted with braces. This prevents any interpretation of the string
+by Tcl when the callback is executed, which is necessary because the
+strings can contain arbitrary data. When Tcl calls the callback the
+first level of braces will be stripped off, leaving old-value and new-value
+each as a single string argument.
+<p>
+<p>
+<h2><A NAME="setValue">setValue</A></h2>
+<p>
+Set the value of a parameter, and notify all clients
+via the posted callback procedures that the parameter value has changed.
+<p>
+Usage:
+<p>
+<pre>
+ setValue &lt;new-value&gt;
+</pre>
+<p>
+<h2><A NAME="getValue">getValue</A></h2>
+<p>
+Get the value of a parameter.
+<p>
+Usage:
+<p>
+<pre>
+ getValue
+</pre>
+<p>
+<h2><A NAME="notify">notify</A></h2>
+<p>
+Notify the registered clients of a parameter as if the
+value had changed.
+<p>
+Usage:
+<p>
+<pre>
+ notify
+</pre>
+<p>
+<h2><A NAME="addCallback">addCallback</A></h2>
+<p>
+Add a callback procedure to the callback list for
+a parameter.
+<p>
+Usage:
+<p>
+<pre>
+ addCallback &lt;procedure-name&gt;
+</pre>
+<p>
+<h2><A NAME="deleteCallback">deleteCallback</A></h2>
+<p>
+Delete a callback procedure previously registered
+for a parameter.
+<p>
+Usage:
+<p>
+<pre>
+ deleteCallback &lt;procedure-name&gt;
+</pre>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/widgetclass.html b/vendor/x11iraf/obm/docs/gui.doc/widgetclass.html
new file mode 100644
index 00000000..78d534db
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/widgetclass.html
@@ -0,0 +1,450 @@
+<title>WIDGET class</title>
+<h1><IMG SRC="/iraf/web/images/iraf.gif"> WIDGET class</h1>
+<p>
+<HR>
+<p>
+The Widget class is the generic or base class for the window system
+toolkit widgets supported by the object manager. The Widget class
+supports a number of different Xt widget classes using a table driven
+approach to describe each widget. Any widget may be created, destroyed,
+and manipulated in various ways using only the generic Widget class
+procedures and Widget-specific resources. The Widget class may be
+subclassed to support complex Widgets that require custom class-specific
+commands for use by the GUI code.
+<p>
+Generic Widget-class commands:
+<p>
+<pre>
+ <a href="#set">set</a> &lt;resource-name&gt; &lt;value&gt;
+ <a href="#get">get</a> &lt;resource-name&gt;
+<p>
+ <a href="#addCallback">addCallback</a> &lt;procedure-name&gt; [<callback-name>]
+ <a href="#deleteCallback">deleteCallback</a> &lt;procedure-name&gt;
+ <a href="#setSensitive">setSensitive</a> &lt;sensitive&gt;
+ <a href="#isSensitive">isSensitive</a>
+<p>
+ <a href="#realize">realize</a>
+ <a href="#unrealize">unrealize</a>
+ <a href="#isRealized">isRealizeed</a>
+ <a href="#map">map</a>
+ <a href="#unmap">unmap</a>
+ <a href="#manage">manage</a> child [child ...]
+ <a href="#unmanage">unmanage</a> child [child ...]
+ <a href="#popup">popup</a> [grab-kind]
+ <a href="#popdown">popdown</a>
+ <a href="#popupSpringLoaded">popupSpringLoaded</a>
+<p>
+ <a href="#move">move</a> &lt;x&gt; &lt;y&gt;
+ <a href="#resize">resize</a> &lt;width&gt; &lt;height&gt; &lt;border-width&gt;
+ <a href="#configure">configure</a> &lt;x&gt; &lt;y&gt; &lt;width&gt; &lt;height&gt; &lt;border-width&gt;
+</pre>
+<p>
+The most important Widget commands are set/get resource, and the
+callbacks. The widget sensitivity can be set and queried using set/get
+resource, but special procedures are provided to make this common operation
+more convenient.
+<p>
+Class specific functions:
+<p>
+<pre>
+ <a href="#append">append</a> text # text widget
+ <a href="#setList">setList</a> list [resize] # list widget
+ value = <a href="#getItem">getItem</a> itemno
+ <a href="#highlight">highlight</a> itemno
+ <a href="#unhighlight">unhighlight</a>
+</pre>
+<p>
+Ideally the widget class should be subclassed for widgets that require
+class-specific functions, but in simple cases involving standard widgets
+the support is built into the widget class code as a special case.
+<p>
+Special actions (used in translations):
+<p>
+<pre>
+ <a href="#do_userproc">call</a> (proc [,arg, ...])
+ <a href="#do_popup">popup</a> (menu-name [xoffset [yoffset]])
+ <a href="#do_popdown">popdown</a> (menu-name)
+</pre>
+<p>
+The "call" action is a very general mechanism which allows any GUI procedure
+to be registered with any translation using the X translation table
+mechanism. The popup and popdown actions are used for popup menus. The
+menu will be popped up at the event coordinates plus the optional offsets
+if given.
+<p>
+Event handling:
+<p>
+<pre>
+ <a href="#addEventHandler">addEventHandler</a> &lt;procname&gt; &lt;event-mask&gt; [&lt;event-mask&gt;...]
+</pre>
+<p>
+Event callback:
+<p>
+<pre>
+ <a href="#userEventHandler">userEventHandler</a> widget event-type time wx wy rx ry other
+</pre>
+<p>
+In most cases translations are preferable to events, but a GUI can capture
+raw events if it wishes by adding event handlers. Nearly all of the X
+event types are supported. The callback syntax employs a number of
+standard arguments, followed by a number of event-specific arguments.
+<p>
+<h1><A NAME="addCallback">addCallback</A></h1>
+<p>
+Add a callback procedure to the callback list for
+a widget. If no callback name is given, "callback" is assumed.
+<p>
+Usage:
+<p>
+<pre>
+ addCallback <procedure-name> [&lt;callback-name&gt;]
+</pre>
+<p>
+Specific widgets only support certain types of callbacks. There is no
+checking that the callback type specified is supported by a widget; the
+wrong type of callback can be registered, but it will never be called.
+<p>
+<h1><A NAME="deleteCallback">deleteCallback</A></h1>
+<p>
+Delete a callback procedure previously registered
+for a widget.
+<p>
+Usage:
+<p>
+<pre>
+ deleteCallback &lt;procedure-name&gt;
+</pre>
+<p>
+<h1><A NAME="do_userproc">do_userproc (call)</A></h1>
+<p>
+Translation action procedure used to call general user
+action procedures in the interpreter. The name of the user procedure to
+be called is given as the first argument in the translation. For example,
+the translation "call(foo,a,b,c)" would cause procedure foo to be called
+with the arguments (a,b,c). The following arguments are special:
+<p>
+<pre>
+ Argument Replaced by
+<p>
+ $name object name of widget
+ $time event->time
+ $x event->x
+ $y event->y
+ $x_root event->x_root
+ $y_root event->y_root
+</pre>
+<p>
+The "user procedure" can be any server procedure.
+<p>
+<h1><A NAME="do_popup">do_popup</A></h1>
+<p>
+Popup a menu (or other spring loaded popup) at the location
+of the event which triggered this action.
+<p>
+Usage:
+<p>
+<pre>
+ popup(menu-name [xoffset [yoffset]])
+</pre>
+<p>
+<h1><A NAME="do_popdown">do_popdown</A></h1>
+<p>
+Pop down a menu.
+<p>
+Usage:
+<p>
+<pre>
+ popdown(menu-name)
+</pre>
+<p>
+<h1><A NAME="set">set</A></h1>
+<p>
+Set a widget resource.
+<p>
+Usage:
+<p>
+<pre>
+ set &lt;resource-name&gt; &lt;value&gt;
+</pre>
+<p>
+<h1><A NAME="get">get</A></h1>
+<p>
+Get a widget resource value as a string.
+<p>
+Usage:
+<p>
+<pre>
+ get &lt;resource-name&gt;
+</pre>
+<p>
+<h1><A NAME="append">append</A></h1>
+<p>
+Append data to a text widget.
+<p>
+Usage:
+<p>
+<pre>
+ append &lt;text&gt;
+</pre>
+<p>
+<h1><A NAME="setList">setList</A></h1>
+<p>
+Set the item list of a list widget.
+<p>
+Usage:
+<p>
+<pre>
+ setList list [resize]
+</pre>
+<p>
+The list is a simple list of strings, passed as a single string argument to
+setList (quotes, braces, etc. may be used to quote strings containing
+special characters).
+<p>
+<h1><A NAME="getItem">getItem</A></h1>
+<p>
+Get an item in a list widget.
+<p>
+Usage:
+<p>
+<pre>
+ value = getItem itemno
+</pre>
+<p>
+If ITEMNO is a number the indicated list item is returned, or the string
+"EOF" if the requested item is beyond the end of the list. Otherwise the
+currently selected item is returned, and the index of the item is returned
+in the output variable ITEMNO. If no item is currently selected ITEMNO
+will be set to "none" on output.
+<p>
+<h1><A NAME="highlight">highlight</A></h1>
+<p>
+Highlight an item in a list widget.
+<p>
+Usage:
+<p>
+<pre>
+ highlight itemno
+</pre>
+<p>
+The indicated item of the list is highlighted as if the item had been
+selected by the user. Any previously highlighted item is unhighlighted.
+<p>
+<h1><A NAME="unhighlight">unhighlight</A></h1>
+<p>
+Unhighlight the currently highlighted item in a
+list widget.
+<p>
+Usage:
+<p>
+<pre>
+ unhighlight
+</pre>
+<p>
+Any currently highlighted item in the list widget is unhighlighted.
+<p>
+<h1><A NAME="realize">realize</A></h1>
+<p>
+Realize a widget. This activates and assigns windows for
+a widget and all of its descendants. Realizing a widget does not in itself
+cause it to appear on the screen.
+<p>
+Usage:
+<p>
+<pre>
+ realize
+</pre>
+<p>
+<h1><A NAME="unrealize">unrealize</A></h1>
+<p>
+Unrealize a widget. This destroys the windows assigned
+to a widget and all of its descendants.
+<p>
+Usage:
+<p>
+<pre>
+ unrealize
+</pre>
+<p>
+<h1><A NAME="isRealized">isRealized</A></h1>
+<p>
+Test whether a widget is realized.
+<p>
+Usage:
+<p>
+<pre>
+ isRealized
+</pre>
+<p>
+<h1><A NAME="map">map</A></h1>
+<p>
+Map a widget.
+<p>
+Usage:
+<p>
+<pre>
+ map
+</pre>
+<p>
+<h1><A NAME="unmap">unmap</A></h1>
+<p>
+Unmap a widget.
+<p>
+Usage:
+<p>
+<pre>
+ unmap
+</pre>
+<p>
+<h1><A NAME="manage">manage</A></h1>
+<p>
+Manage a list of child widgets. These should share the
+same common parent, a geometry widget of some sort. Managing the
+children makes them appear in the window, possibly causing the other
+children to be rearranged in the window.
+<p>
+Usage:
+<p>
+<pre>
+ manage child [child ...]
+</pre>
+<p>
+This message should be sent to the geometry widget which is the parent
+of the children.
+<p>
+<h1><A NAME="unmanage">unmanage</A></h1>
+<p>
+Unmanage a list of child widgets. These should share the
+same common parent, a geometry widget of some sort. Unmanaging the
+children makes them disappear from the window and be removed from geometry
+management, possibly causing the other children to be rearranged in the
+window.
+<p>
+Usage:
+<p>
+<pre>
+ unmanage child [child ...]
+</pre>
+<p>
+This message should be sent to the geometry widget which is the parent
+of the children.
+<p>
+<h1><A NAME="popup">popup</A></h1>
+<p>
+Popup a shell widget. If no grab is indicated the popup
+can remain up while other windows accept input.
+<p>
+Usage:
+<p>
+<pre>
+ popup [grab-kind]
+</pre>
+<p>
+<h1><A NAME="popdown">popdown</A></h1>
+<p>
+Popdown a shell widget.
+<p>
+Usage:
+<p>
+<pre>
+ popdown
+</pre>
+<p>
+<h1><A NAME="popupSpringLoaded">popupSpringLoaded</A></h1>
+<p>
+Popup a shell widget, e.g., a popup menu.
+This implies an exclusive grab.
+<p>
+Usage:
+<p>
+<pre>
+ popupSpringLoaded
+</pre>
+<p>
+<h1><A NAME="move">move</A></h1>
+<p>
+Move a widget to the given window relative coordinates.
+<p>
+Usage:
+<p>
+<pre>
+ move &lt;x&gt; &lt;y&gt;
+</pre>
+<p>
+<h1><A NAME="resize">resize</A></h1>
+<p>
+Resize a widget.
+<p>
+Usage:
+<p>
+<pre>
+ resize &lt;width&gt; &lt;height&gt; &lt;border-width&gt;
+</pre>
+<p>
+<h1><A NAME="configure">configure</A></h1>
+<p>
+Configure a widget, i.e., execute a simultaneous
+move and resize.
+<p>
+Usage:
+<p>
+<pre>
+ configure &lt;x&gt; &lt;y&gt; &lt;width&gt; &lt;height&gt; &lt;border-width&gt;
+</pre>
+<p>
+<h1><A NAME="setSensitive">setSensitive</A></h1>
+<p>
+Set the sensitivity of a widget.
+<p>
+Usage:
+<p>
+<pre>
+ setSensitive &lt;sensitive&gt;
+</pre>
+<p>
+<h1><A NAME="isSensitive">isSensitive</A></h1>
+<p>
+Test the sensitivity of a widget.
+<p>
+Usage:
+<p>
+<pre>
+ isSensitive
+</pre>
+<p>
+<h1><A NAME="addEventHandler">addEventHandler</A></h1>
+<p>
+Add a custom event handler to a widget. A list
+of event masks is given to define the classes of events the user supplied
+event handling procedure is to receive.
+<p>
+Usage:
+<p>
+<pre>
+ addEventHandler &lt;procname&gt; &lt;event-mask&gt; [&lt;event-mask&gt;...]
+</pre>
+<p>
+<h1><A NAME="removeEventHandler">removeEventHandler</A></h1>
+<p>
+Remove an event handler previously posted
+with addEventHandler, above.
+<p>
+Usage:
+<p>
+<pre>
+ removeEventHandler procname
+</pre>
+<p>
+<h1><A NAME="event">event</A></h1>
+<p>
+Generic event handler called when a widget event handler
+posted by addEventHandler is called.
+<p>
+The user event handler is called as
+<p>
+<pre>
+ userEventHandler widget event-type time wx wy rx ry other
+</pre>
+<p>
+where "other" is an event-type specific list of fields describing the
+the event.
diff --git a/vendor/x11iraf/obm/docs/gui.doc/widgets.gif b/vendor/x11iraf/obm/docs/gui.doc/widgets.gif
new file mode 100644
index 00000000..17f9371e
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/widgets.gif
Binary files differ
diff --git a/vendor/x11iraf/obm/docs/gui.doc/widgets.html b/vendor/x11iraf/obm/docs/gui.doc/widgets.html
new file mode 100644
index 00000000..af80a997
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/widgets.html
@@ -0,0 +1,14 @@
+<title>The Widgets</title>
+<h1><IMG SRC="irafgui.gif"> Widgets</h1>
+<IMG SRC="/iraf/web/projects/x11iraf/docs/gui.doc/blueline.gif">
+<p>
+The basic widgets available to the IRAF GUI implimenter are the Athena
+Widgets, the gterm widget, the image display widget, and markers.
+<p>
+<pre>
+<a href="athena.html"><IMG ALIGN=MIDDLE SRC="athena.gif"></a> Athena widgets <a href="notyet2.html"><IMG ALIGN=MIDDLE SRC="gterm.gif"></a> Gterm widget
+
+<a href="notyet2.html"><IMG ALIGN=MIDDLE SRC="imtool.gif"></a> Imtool widget <a href="notyet2.html"><IMG ALIGN=MIDDLE SRC="marker.gif"></a> Marker widgets
+
+<a href="parameterwidget.html"><IMG ALIGN=MIDDLE SRC="params.gif"></a> Parameters
+</pre>
diff --git a/vendor/x11iraf/obm/docs/gui.doc/ximclient.html b/vendor/x11iraf/obm/docs/gui.doc/ximclient.html
new file mode 100644
index 00000000..12eac899
--- /dev/null
+++ b/vendor/x11iraf/obm/docs/gui.doc/ximclient.html
@@ -0,0 +1,194 @@
+<title>XIMCLIENT</title>
+<h1><IMG SRC="/iraf/web/images/iraf.gif"> XIMCLIENT</h1>
+<p>
+<HR>
+<p>
+The Ximtool "client" object. This code implements an OBM client and
+responds to messages sent to the client object by the GUI code executing
+under the object manager.
+<p>
+Client commands:
+<p>
+<pre>
+ <a href="#setFrame">setFrame</a> frameno
+ frameno = <a href="#getFrame">getFrame</a> [raster]
+ <a href="#nextFrame">nextFrame</a>
+ <a href="#prevFrame">prevFrame</a>
+ <a href="#matchFrames">matchFrames</a> [frame]
+ <a href="#fitFrame">fitFrame</a>
+
+ <a href="#setColormap">setColormap</a> colormap
+ <a href="#windowColormap">windowColormap</a> offset scale
+ <a href="#zoom">zoom</a> [mag | xmag ymag [ xcen ycen ]]
+ <a href="#zoom">zoomAbs</a> [mag | xmag ymag [ xcen ycen ]]
+ <a href="#pan">pan</a> xcen ycen
+ <a href="#flip">flip</a> axis [axis ...]
+
+
+ wcsstr = <a href="#encodewcs">encodewcs</a> sx sy sz
+ <a href="#retCursorVal">retCursorVal</a> sx sy [frame [wcs [key [strval]]]]
+
+ <a href="#Quit">Quit</a>
+</pre>
+<p>
+XIMTOOL CLIENT commands.
+<p>
+<h1><A NAME="Quit">Quit</A></h1>
+<p>
+Exit ximtool.
+<p>
+Usage:
+<p>
+<pre>
+ Quit
+</pre>
+<p>
+<h1><A NAME="setFrame">setFrame</A></h1>
+<p>
+Set the frame to be displayed.
+<p>
+Usage:
+<p>
+<pre>
+ setFrame <frameno>
+</pre>
+<p>
+<h1><A NAME="getFrame">getFrame</A></h1>
+<p>
+Get the frame number.
+<p>
+Usage:
+<p>
+<pre>
+ getFrame [raster]
+</pre>
+<p>
+This routine has two forms. When called with no argument getFrame returns
+the current display frame. When called with a raster number getFrame
+returns the frame number with which the raster is associated.
+<p>
+<h1><A NAME="nextFrame">nextFrame</A></h1>
+<p>
+Display the next frame in sequence.
+<p>
+Usage:
+<p>
+<pre>
+ nextFrame
+</pre>
+<p>
+<h1><A NAME="prevFrame">prevFrame</A></h1>
+<p>
+Display the previous frame in sequence.
+<p>
+Usage:
+<p>
+<pre>
+ prevFrame
+</pre>
+<p>
+<h1><A NAME="matchFrames">matchFrames</A></h1>
+<p>
+Set the enhancement of all frames to match the current
+display frame.
+<p>
+Usage:
+<p>
+<pre>
+ matchFrames [frame]
+</pre>
+<p>
+<h1><A NAME="fitFrame">fitFrame</A></h1>
+<p>
+Attempt to make the display window the same size as the frame
+buffer.
+<p>
+Usage:
+<p>
+<pre>
+ fitFrame
+</pre>
+<p>
+<h1><A NAME="setColormap">setColormap</A></h1>
+<p>
+Set the colormap for the current display frame.
+<p>
+Usage:
+<p>
+<pre>
+ setColormap <colormap>
+</pre>
+<p>
+<h1><A NAME="windowColormap">windowColormap</A></h1>
+<p>
+Set the colormap for the current display frame.
+<p>
+Usage:
+<p>
+<pre>
+ windowColormap <offset> <scale>
+</pre>
+<p>
+<h1><A NAME="zoom">zoom, zoomAbs</A></h1>
+<p>
+Set the zoom factors for the current frame to the given values.
+A zoom factor > 1 enlarges the image, < 1 shrinks the image, 1.0 maps
+one source pixel to one destination pixel.
+<p>
+Usage:
+<p>
+<pre>
+ zoom <xymag> 1 argument
+ zoom <xmag> <ymag> 2 arguments
+ zoom <xmag> <ymag> <xcen> <ycen> 4 arguments
+</pre>
+<p>
+When called as "zoom" the magnification is relative to the fixed scaling,
+if any, used to scale the frame to fit the display window at mag=1.0.
+When called as zoomAbs" the magnification given is the actual scale factor
+used to map raster pixels to display pixels.
+<p>
+<h1><A NAME="pan">pan</A></h1>
+<p>
+Pan the current frame, i.e., change the view center.
+<p>
+Usage:
+<p>
+<pre>
+ pan <xcen> <ycen>
+</pre>
+<p>
+<h1><A NAME="flip">flip</A></h1>
+<p>
+Flip the current display frame in the indicated axis or axes.
+<p>
+Usage:
+<p>
+<pre>
+ flip [axis [axis ...]]
+</pre>
+<p>
+<h1><A NAME="retCursorVal">retCursorVal</A></h1>
+<p>
+Return a cursor value to the ximtool client process. This
+should be executed by the GUI to terminate a cursor read.
+<p>
+Usage:
+<p>
+<pre>
+ retCursorVal sx sy [frame [wcs [key [strval]]]]
+</pre>
+<p>
+<h1><A NAME="encodewcs">encodewcs</A></h1>
+<p>
+Convert raw screen coordinates x,y,z (z=pixel value) to
+world coordinates using the WCS passed to ximtool by the client application
+when the frame was loaded. The encoded description of the current position
+and pixel value is returned to the GUI as a string value.
+<p>
+Usage:
+<p>
+<pre>
+ string = encodewcs sx sy sz
+</pre>
+<p>