Path: iraf!irafmail-gateway From: tody@noao.edu (Doug Tody) Newsgroups: adass.iraf.announce Subject: XImtool version 0.5 released Date: 24 May 1994 00:26:46 -0700 Organization: IRAF Project, National Optical Astronomy Observatories Lines: 787 Sender: daemon@iraf.noao.edu Message-ID: <9405240726.AA11099@lepus.tuc.noao.edu> NNTP-Posting-Host: tucana.tuc.noao.edu XIMTOOL VERSION 0.5 May 22 1994 Version 0.5 of the alpha test ximtool is now available in pub/v2103-beta on iraf.noao.edu and consists of the following files: 1589248 May 22 15:14 ximtool-0.5 # executable Anyone using an earlier version of ximtool is encouraged to update to the new version, which is a major new version. Keep the old version around in case you run into any problems. This is ALPHA TEST software. This means that the software is still under development and may lack planned features. The software is only partially tested and can be expected to have some bugs. Anyone using an alpha test version of ximtool is asked to update to version 1.0 when it becomes available. INSTALLATION To install ximtool, download the executable, rename it "ximtool" and place it somewhere in your search path (e.g. /usr/bin/X11 or /usr/local/bin). An app-defaults file is not required to run ximtool. Don't install the new version while someone is using ximtool, or you will crash their session. The simplest way to avoid this is to "mv" the old executable to change the name, e.g. "mv ximtool ximtool.old". Since this is still alpha test software, all we are releasing is a snapshot from our development system, which is a Sun sparc running SunOS. Hence only a Sun binary is available at this time (unless someone wants to hack the sources and generate their own binary for a new platform). BASIC USAGE Ximtool is an image display server. To view images with it you need some client software, such as IRAF, to load images into the display. Ximtool is upwards compatible with older display servers such as SAOimage and imtool. For example, to use ximtool instead of SAOimage, start up ximtool instead of SAOimage and display in the usual fashion. You shouldn't need much documentation to be able to use ximtool effectively. Just start it up, load images into one or more frames, and experiment with the GUI to see what can be done to manipulate the display. Most of the controls are obvious, but here are a few things which might not be obvious: o Clicking and dragging MB1 (mouse button 1) in the main image window creates a rectangular region marker, used to select a region of the image. If you do this accidentally and don't want the marker, put the pointer in the marker and type DELETE or BACKSPACE to delete the marker. With the pointer in the marker, MB3 will call up a menu listing some thing you can do with the marker, like zoom the outlined region. MB1 can be used to drag or resize the marker. o Clicking on MB2 in the main image window pans (one click) or zooms (two clicks) the image. Further clicks cycle through the builtin zoom factors. Moving the pointer to a new location and clicking moves the feature under the pointer to the center of the display window. o MB3 is used to adjust the contrast and brightness of the displayed image. The position of the pointer within the display window determines the contrast and brightness values. Click once to set the values corresponding to the pointer location, or click and drag to continuously adjust the display. o Ctrl-f, Ctrl-b can be used to move forward or backward through the current set of frame buffers. A frame buffer is an image (picture) stored in the display server. Ximtool supports up to four frame buffers. Frame buffers can be any size; the size is set by the client when an image is loaded into a frame. For example, in IRAF "set stdimage = imt800" would set the frame buffer size to 800x800 pixels. Changing the frame buffer size forces an initialize of the display server. In IRAF the command "gdev" will list the frame buffer configurations defined on your system. Ximtool has a control panel which can be used to exercise most the capabilities the program has for image display. The control panel can be accessed either via the Options menu from the main window menubar, or by pressing the leftmost button in the row of buttons at the upper right side of the display. A more detailed overview of the ximtool capabilities and usage is given below. THINGS TO WATCH OUT FOR o It is possible to run multiple ximtools, or ximtool and other display servers such as saoimage, imtool, skyview, etc., simultaneously on the same computer, but don't attempt this unless you know how to set the servers up on different i/o ports. In the default configuration there will be conflicts with multiple servers trying to listen on the same port. o Most workstations have a single 8 bit, 256 element colortable per screen. This means that only 256 unique colors can be displayed at any one time. Image display programs like ximtool (or SAOimage, or xv, xloadimage, mosaic, etc.) need a lot of colortable entries in order to display smoothly varying images. If you try to run multiple image display programs at the same time you are likely to run out of colortable space. This may result in warning messages when a program starts up, cause images to be displayed funny, causing flashing when the pointer moves in and out of image display windows, and so on. It is best to avoid these problems by killing off any other display programs when running ximtool. If you do run out of colortable space when using ximtool this is harmless, but the image won't be displayed correctly when the pointer is not in the image window. To correct this condition, free up some colortable space (by killing off some other X programs, especially any display programs) and then move the pointer into the ximtool image window and back out. This will cause ximtool to update the default colormap of the display and in most cases will make the ximtool image display correctly. Ximtool will always display correctly when the pointer is in the image window, the problem occurs only when the pointer (colormap focus) is in other windows. WHAT'S NEW? Ximtool 0.5, while still incomplete, is a major new version, probably the first really usable version of ximtool. Major new features in this version include the following: o A popup control panel, providing control over frame selection, zoom and pan, colortable selection from a list (including user defined colortables), contrast and brightness display and controls, blink control, including blink frames and blink rate, and option control. (The ximtool control panel uses the new widgets and other OBM enhancements discussed in the Xgterm 0.11 announcement.) o An option called the "panner". The panner displays a reduced version of the entire frame buffer, with the region currently displayed outlined with a marker. One can pan and zoom within the panner window, e.g. by dragging the panner region marker, to pan or zoom the main image window. This is useful when viewing images too large to fit on the screen. o Autoscale option. If autoscale is enabled then at zoom=1, the frame buffer will be automatically scaled to fit within the display window. With autoscale disabled (the default), the image scale is more predictable, but the image may be clipped by the display window, or may not fill the display window. o Integer zoom. Ximtool supports both fractional zoom and integer zoom. Fractional zoom uses a non-integer scale factor to scale an image region as necessary to fill the display window. Integer zoom ensures that each frame buffer pixel is displayed as exactly N display pixels. Integer zoom is slightly faster than a fractional zoom. o Antialiasing. When dezooming an image, i.e., displaying a large image in a smaller display window, antialiasing causes all the data to be used to compute the displayed image. If antialiasing is disabled then image is subsampled to compute the displayed image. Antialiasing can prevent subsampling from omitting image features that don't fall in the sample grid, but it is significantly slower than dezooming via subsampling. The default is no antialising. o Tile frames. The default display mode is to view one frame at a time. In tile frames mode, 2 or 4 frames may be viewed simultaneously in the display window. All the usual operations (zoom and pan, colortable enhancement, cursor readback, etc.) still work for each frame even when in tile frames mode. o Fitframe now works. Fitframe resizes the display window to the same size as the frame buffer. o Ximtool allows clients to connect in any of the following ways: fifo pipes The traditional approach. The default, global /dev/imt1[io] pipes may be used, or a private set of fifos. tcp/ip socket Clients connect via a tcp/ip socket. There is a default port, or a custom port may be specified. This permits connecting to the server over a remote network connection anywhere on the Internet. unix domain socket Like a tcp/ip socket, but limited to a single host system. Usually faster than a tcp/ip socket, and comparable to a fifo. By default each user gets their own unix domain socket, so this option allows multiple users to run ximtools on the same host without having to customize things. By default ximtool listens simultaneously for client connctions on all three types of ports. o Ximtool now supports multiple simultaneous client connections. For example, one can be using the IRAF imexamine task to interact with the image displayed in frame 1, while some other program simultaneously displays an image in frame 2 (or any frame, including the frame being examined). o An improved set of builtin colormaps are now provided. The user can define additional custom colormaps when ximtool is started. There were many additional minor changes and bug fixes not worth going into here. TECHNICAL NOTES This isn't the place to write a detailed comprehensive reference manual for ximtool, but since there isn't any such manual yet (this is still prerelease software) some additional information on a few selected topics will probably be useful. COMMAND LINE OPTIONS This prerelease version of ximtool doesn't support general command line options yet (except for the -defgui option described below). However, one can accomplish the same thing by setting resources on the command line. For example, ximtool \ -xrm "*port:0" \ -xrm "*input_fifo:none" \ -xrm "*userCmapDir1:/user/smith/cmaps" \ -xrm "*displayPanner:false" would start up ximtool with tcp/ip sockets and fifos disabled (leaving only unix sockets for client connections). Ximtool will look for user colormaps in the directory /user/smith/cmaps. The panner option will be disabled at startup. RESOURCES Ximtool has a ton of resources (hundreds of them), but in practice only a few are likely to be useful at the user level. BUILTIN RESOURCES Resource Name Default Value defConfig: 1 defNFrames: 0 tileBorderWidth: 3 tileBorderColor: 9 autoscale: false antialias: false tileFrames: false highlightFrames: true gui: default imtoolrc: /usr/local/lib/imtoolrc memModel: fast cmap1: none cmap2: none cmapDir1: none cmapDir2: /usr/local/lib/imtoolcmap input_fifo: /dev/imt1i output_fifo: /dev/imt1o unixaddr: /tmp/.IMT%d port: 5137 All of these are application resources, hence they would be specified in the .Xdefaults file as, e.g., "XImtool.autoscale: true", etc. Description of ximtool client resources: defConfig Default frame buffer configuration on startup. defNFrames Default number of frames on startup. Set to zero to use value from imtoolrc file. There isn't a whole lot of reason to preallocate frames here, since new frames will be created on demand if needed. tileBorderWidth Used by the tile frames option. Specifies how far tileBorderColor apart to space the frames in tile frames mode. Color "9" refers to the Gterm widget resource color9, which is assigned a color with its own resource. autoscale Enable/disable the autoscale option. antialias Enable/disable the antialias option. tileFrames Enable/disable the tile frames option. highlightFrames Determines whether the current frame is highlighted when in tile frames mode. gui The GUI to be executed. "default" refers to the default, builtin ximtool GUI. You can replace this with your own GUI file if you are bold enough, and completely change the look and functionality of the GUI if desired. imtoolrc Where to find the imtoolrc file. This defines the recognized frame buffer configurations. memModel Determines how ximtool uses memory in the ximtool client and the X server. The options are "fast", "beNiceToServer", and "small". The default is fast, which uses server pixmaps to make frame blink fast. This is recommended unless server memory is very limited. Note that even in fast mode, the server pixmap is only the size of the display window, so memory usage is reasonable even if the frame buffer is very large. cmap1 User colormap files. The intent here is to allow cmap2 individual colormaps to be conveniently specified on the command line. cmapDir1 User or system colormap directories. By default cmapDir2 cmapDir2 points to the system directory /usr/local/lib/imtoolcmap, allowing a set of site default colormaps to be defined here. This leaves cmapDir1 available to a user colormap directory. input_fifo The input and output fifos for fifo i/o. "Input" output_fifo and "output" are from the client's point of view. Note that only one display server can use a fifo-pair at one time. unixaddr Template address for unix domain socket. The user must have write permission on this directory, or the file must already exist. %d, if given, is replaced by the user's UID. port TCP/IP port for the server. Note that only one server can listen on a port at one time, so if multiple ximtool servers are desired on the same machine, they should be given different ports. GUI RESOURCES In principle ximtool can have any number of different GUIs, each of which defines its own set of resources. GUIs typically define a great many resources, but most of these are not really intended for modification by the user (although one can modify them if desired). The following are some of the more useful resources used by the default ximtool GUI. Resource Name Default Value .geometry: *controlShell.geometry: *info.geometry: 420x120 *cmapName: image *basePixel: 64 *maxColors: 216 *imagewin.warpCursor: true *imagewin.raiseWindow: true *imagewin.deiconifyWindow: true *imagewin.ginmodeCursor: circle *imagewin.ginmodeBlinkInterval: 500 *imagewin.color8: #7c8498 *imagewin.color9: steelblue *autoscale: True *zoomfactors: 1 2 4 8 *displayCoords: True *displayPanner: True *blinkRate: 1.0 *pannerArea: 150*150 *pannerGeom: -5+5 *wcsboxGeom: -5-5 *maxContrast: 5.0 *warnings: True Description of selected resources: .geometry Geometry of main image window *controlShell.geometry Geometry of control panel shell *info.geometry Geometry of info box *cmapName Name used for private colormap. The default for all IRAF imaging applications is "image". Gterm widget based imaging applications which have the same value of cmapName will share the same colormap, minimizing colormap flashing and allowing multiple applications to be run at the same time. *basePixel These two resources determine the *maxColors region of colormap space used to render image pixels. *imagewin.warpCursor Warp pointer into image window when initiating a cursor read. *imagewin.raiseWindow Raise image window when initiating a cursor read. *imagewin.deiconifyWindow Deiconify image window if necessary when initiating a cursor read. *imagewin.ginmodeCursor Type of cursor when a cursor read is in progress. The default is a circle. Any selection from the X cursor font can be used. A special case is "full_crosshair" which is the full crosshair cursor of the Gterm widget. *imagewin.ginmodeBlinkInterval Determines whether the cursor blinks when a cursor read is in progress. The value is given in milliseconds. *imagewin.color8 Color assigned the panner window. *imagewin.color9 Color used for the tileFrames highlight. *pannerArea Area in pixels of the panner window. *pannerGeom Where to place the panner window. *wcsboxGeom Where to place the coords box. *maxContrast Maximum contrast value. For a complete description of the ximtool resources, refer to the GUI file. The "appInitialize" command contains the full resource list for the GUI. CONTROL PANEL NOTES VIEW CONTROLS o The "Frame" box will list only the frame buffers you currently have defined. Currently, the only way to destroy a frame buffer is to change the frame buffer configuration. o The text display gives the field X,Y center, X,Y scale factors, and the X,Y zoom factors. The scale factor and the zoom factor will be the same unless autoscale is enabled. The scale is in units of display pixels per frame buffer pixel, and is an absolute measure (it doesn't matter whether or not autoscale is enabled). Zoom is relative to the autoscale factor, which is 1.0 if autoscaling is disabled. o The numbers in the Zoom box are zoom factors. Blue numbers zoom, red numbers dezoom. Zoom In and Zoom Out may be used to go to larger or smaller zoom factors, e.g. "5" followed by "Zoom In" will get you to zoom factor 10. Center centers the field. Toggle Zoom toggles between the current zoom/center values, and the unzoomed image. o Aspect recomputes the view so that the aspect ratio is 1.0. Aspect also integerizes the zoom factor (use the version in the View menu if you don't want integerization). o Fit Frame makes the display window the same size as the frame buffer. Note that autoscale has much the same effect, and allows you to resize the display window to any size you want, or view images to large to fit on the screen. ENHANCEMENT CONTROLS o At the top is a scrolled list of all the available colormaps. Click on the one you want to load it. You can add your own custom colormaps to this list. o The two sliders adjust the contrast (upper slider) and brightness (lower slider) of the display. The Invert button inverts the colormap (multiples the contrast by -1.0). Note that due to the use of the private colormap the sliders are a bit sluggish when dragged to window the display. If this is annoying, using MB3 in the display window is faster. o The Normalize button (on the bottom of the control panel) will normalize the enhancement, i.e. set the contrast and brightness to the default one-to-one values (1.0, 0.5). This is the preferred setting for many of the pseudocolor colortables. BLINK CONTROLS o Blink frames is the list of frames to be blink. When blink mode is in effect ximtool just cycles through these frames endlessly, pausing "blink rate" seconds between each frame. The same frame can be entered in the list more than once. To program an arbitrary list of blink frames, hit the Reset button and click on each blink frame button until it is set to the desired frame number. o The blink rate can be adjusted as slow or as fast as you want using the arrow buttons. If you set the blink rate small enough it will go to zero, enabling single step mode (see below). o The Register button registers all the blink frames with the current display frame. Frames not in the blink list are not affected. o The Match LUTs button sets the enhancement of all blink frames to the same values as the display frame. Frames not in the blink list are not affected. o The Blink button turns blink on and off. When the blink rate is set to zero the Blink button will single step through the blink frames, one frame per button press. NOTE: you can blink no matter what ximtool options are in effect, but many of these will slow blink down. To get the fastest blink you may want to turn off the panner and coords box, and match the LUTs of all the blink frames. All the ximtool controls are fully active during blink mode, plus you can load frames etc. OPTIONS CONTROLS o The options box contains a set of option toggles. If the toggle is yellow the option is in effect. OTHER o Initialize initializes ximtool. This resets a lot of things, but tries to not change the view. Select Reset in the File menu on the main window menubar to fully reset things. o Normalize normalizes the view for the current display frame. o Done makes the control panel go away. CUSTOM COLOR TABLES The cmap[12] and cmapDir[12] resources are used to tell ximtool where to look for colortables. The colortables are loaded when ximtool starts up, or when it is reinitialized (e.g. by pressing the Initialize button in the control panel). Ximtool will ignore any files in the colormap directory which do not look like colortables. The format of a user lookup table is very simple: each row defines one colortable entry, and consists of three columns defining the red, green, and blue values scaled to the range 0.0 (off) to 1.0 (full intensity). R G B R G B (etc.) Blank lines and comment lines (# ...) are ignored. Usually 256 rows are provided, but the number may actually be anything in the range 1 to 256. Ximtool will interpolate the table as necessary to compute the colortable values used in Ximtool. Ximtool uses only 201 colors to render pixel data, so it is usually necessary to interpolate the table when it is loaded. Tables are loaded into Ximtool by setting one of the user colormap directory resources. When Ximtool starts up it will read all the files in the colormap directory, disregarding any files that are unreadable or that do not appear to be colortables. The name of the colortable as it will appear in the Ximtool control panel is the root name of the file, e.g., if the file is "rainbow.lut" the colortable name will be "rainbow". Lower case names are suggested to avoid name collisions with the builtin colortables. If the same colortable file appears in multiple user colortable directories, the first one will be used. The directory "luts" in the ximtool source directory contains a sample set of colortable files. This can be installed as /usr/local/lib/imtoolcmap when ximtool is installed. THE MARKER MENU o MB3 (mouse button 3) calls up the marker menu (by default). o Zoom does an equal aspect zoom of the region outlined by the marker. In this way you can mark a region of the image and zoom it up. o Fill exactly zooms the area outlined by the marker, making it fill the display window. Since the marker is not likely to be exactly square, the aspect ratio of the resultant image will not be unitary. o Print prints a description of the marked region. The text is printed in the Info box. o Unrotate unrotates a rotated marker. o Color is a menu of possible marker colors. o Type is a menu of possible marker types. This is still a little buggy and it isn't very useful, but you can use it to play with different types of markers. o Destroy destroys the marker. You can also hit the delete or backspace key in a marker to destroy the marker. MORE ON GRAPHICS MARKERS Although ximtool doesn't do much with markers currently, they are a general feature of the Gterm widget and are used more extensively in other programs (e.g. the prototype IRAF science GUI applications). Ximtool uses markers for the marker zoom feature discussed above, and also for the panner and the coords box. All markers share some of the same characteristics, so it is worthwhile learning basic marker manipulation keystrokes. o MB1 anywhere inside a marker may be used to drag the marker. o MB1 near a marker corner or edge, depending on the type of marker, resizes the marker. o Shift-MB1 on the corner of most markers will rotate the marker. o Markers stack, if you have several markers and you put one on top of the other. The active marker is highlighted to tell you which of the stacked markers is active. If the markers overlap, this will be marker "on top" in the stacking order. o MB2 in the body of a marker "lowers" the marker, i.e. moves it to the bottom of the stacking order. o Delete or backspace in a marker deletes the marker. For example, try placing the pointer anywhere in the coords box, then press MB1 and hold it down, and drag the coords box marker somewhere else on the screen. You can also resize the coords box by dragging a corner, or delete it with the delete or backspace key. (The Initialize button will get the original coords box back). NOTES ON THE PANNER The panner window always displays the full frame buffer. Try setting the frame buffer configuration to a nonsquare frame buffer (e.g. imtcryo) and then displaying a square image (e.g. dev$pix) and the panner will show you exactly where the image has been loaded into the frame. The panner window uses two markers, one for the window border and one to mark the displayed region of the frame. Most of the usual marker keystrokes mentioned above apply to these markers as well, e.g. you can use MB1 to reposition on the panner window within the main image display window, or to drag the region marker within the panner (pan the image). Resizing the region marker zooms the image; this is a non-aspect constrained zoom. The panner window itself can be resized by dragging a corner with MB1. Typing delete or backspace anywhere in the panner window deletes the panner. A special case is MB2. Typing MB2 anywhere in the panner window pans the image to that point. This is analogous to typing MB2 in the main display window to pan the image. THE COORDS BOX Ximtool provides a limited notion of world coordinates, allowing frame buffer pixel coordinates and pixel values to be converted to some arbitrary client defined coordinate system. The coords box feature is used to display these world coordinates as the pointer is moved about in the image window. The quantities displayed in the coords box are X, Y, and Z: the X,Y world coordinates of the pointer, and Z, the world equivalent of the pixel value under the pointer. All coordinate systems are linear. The precision of a displayed quantity is limited by the range of values of the associated raw frame buffer value. For example, if the display window is 512x512 only 512 coordinate values are possible in either axis (the positional precision can be increased however by zooming the image). More seriously, at most about 200 pixel values can be displayed since this is the limit on the range of pixel values loaded into the frame buffer. If a display pixel is saturated a "+" will be displayed after the intensity value. The coords box is a marker (text marker) and it can be moved and resized with the pointer like any other marker. VIEWING THE IMAGE TITLE The title of the image loaded into the current display frame is displayed centered in the control area at the top of the main display window. If the title string is too long to be fully displayed it will be clipped at either end. To see the full title string, either resize the display window, or pop up the Info box. The Info box always displays the full image title. NOTES ON CLIENT-SERVER I/O As mentioned earlier ximtool allows clients to connect using any of three different communications domains: fifos, tcp/ip sockets, and unix domain sockets. By default ximtool will listen and accept connections on all three types of ports. This is fine if there is only one display server running on a host, but conflicts arise if multiple display servers try to listen on the same port. If this happens one needs to either disable a port, or change the address. FIFOs The default fifos are /dev/imt1i and /dev/imt1o. The resources input_fifo and output_fifo may be set to use a different set of fifos. To disable the fifo port entirely set input_fifo=none. The fifos must be created and must have read and write permission, before starting ximtool. TCP/IP socket The default tcp/ip port is 5137. The resource "port" may be set to set a different port. To disable tcp/ip sockets completely set port=0. If ximtool is terminated it may take a couple of minutes before unix allows ximtool to use the port again. UNIX socket The default unix domain socket is /tmp/.IMT%d, where %d is the user's UID number. Hence, each user has a private unix domain socket, allowing multiple ximtools to be run on the same host (but only one per user unless the addresss is changed). To disable unix domain sockets set unixaddr=none. The server will automatically create and delete the unix domain socket if none exists. In 2.10.3 beta-3 and later versions of IRAF the default action when connecting to the display server is to first try a unix domain socket connection using the socket /tmp/.IMT%d. If this fails the IRAF client tries to connect via the old style FIFOs /dev/imt1[io]. Hence, if ximtool is being used with only newer versions of IRAF and all connections are local, FIFOs and tcp/ip sockets can be disabled and different users can transparently run ximtool on the same host system. IRAF 2.10.3 or later uses the new ZFIOND network driver (described elsewhere) to connect to the server. The graphcap file defines how to connect to the server. This can be overridden however, by defining IMTDEV in the host environment. For example to connect to a TCP/IP socket on host foo.bar.edu, one could define setenv IMTDEV inet:5137:foo.bar.edu before logging into IRAF. CUSTOM GUIs The default GUI of ximtool can be viewed by running ximtool as follows: ximtool -defgui This will print the default builtin GUI to the standard output. If this output is saved in a file one can set the "gui" resource to point to this file, and when ximtool starts up it will use this GUI file instead of the builtin default GUI. The user can modify the GUI file as desired to customize the GUI. Since the full GUI of ximtool is encapsulated in the GUI file, ths is a very powerful option; one can generate quite a different program merely by modifying the GUI file, without need to recompile any code. PLANNED FUTURE WORK The following items are on the near term TODO list for ximtool. o Print dialog. Will be used to print whatever is displayed in the main image window, generating a variety of types of output. o File load/save. For standalone use it is desirable to be able to load the display from a disk file. The plan is to support at least FITS for file input. o Info box. The info box is due for a major rewrite (the existing one isn't very useful). o TclShell. This will allow experienced users to type Tcl commands directly into the OBM interpreter at the heart of ximtool. o Add global translation actions for a variety of GUI functions, so that the user can bind keystrokes and function keys to these actions. o Implement online help (question mark button in main window). o "Snap to equal aspect" feature for use when resizing panner. There are still quite a few useful features that could be implemented. For example, a magnifier window (similar to the panner but displays a magnified view of the region under the cursor). Similarly, one could have a magnifier which pops up under the pointer. Split screen would be useful for comparing multiple frame buffers. A window into an alternate frame would be a useful alternative to frame blink. The Optimize button in the Enhancement portion of the control panel will be used to automatically compute the optimum contrast and brightness valus for the region for the image in the main display window. More dramatically, alternate, completely different GUIs for ximtool are possible, merely by loading a different GUI file. The planned SAOtng user interface (being developed by SAO) is an example of this. SAOtng will also provide enhanced client-server communications via an alternative, more general communications protocol based on the X selection mechanism.