x11

spec graphics under the X Window System

DESCRIPTION

You can have spec draw high resolution graphics in X Window System windows by selecting high resolution graphics (with the setplot macro) and setting the GTERM global variable to x11 (the default since spec release 3.03.12). You can set GTERM either as an environment variable in the shell or by assigning it the "x11" string while running spec. However, each time you start spec, the environment variable will override a previously assigned value to GTERM.

The process that spec creates (named x11filt) to do the plotting looks at the DISPLAY environment variable. The value of spec's built-in variable named DISPLAY will be propagated to the x11filt process environment when it is spawned. Thus it is possible to change the host on which the plots are drawn while running spec by assigning new values to DISPLAY. For example,

DISPLAY="host1:0"; plot_cntl("filter1,open")
DISPLAY="host2:0"; plot_cntl("filter2,open")

will create plot windows on two different hosts.

RESOURCE FILE ITEMS (.Xdefaults)

Some parameters associated with the X windows plot can be set in an .Xdefaults file in your home directory. You can include some or all of the following parameters:

spec.geometry:      =640x380-20+10
spec.Foreground:    black
spec.Background:    white
spec.Backstore:     off
spec.Retained:      on
spec.BorderWidth:   4
spec.Border:        black
spec.Font:          -*-*-*-r-*-*-*-*-*-*-*-*-*-*
spec.FontDebug:     0
spec.Colors:        on
spec.AutoRaise:     on
spec.DotSize:       small

The values for the parameters given above are the defaults. Changes to the file will take effect on the next login. Or changes can be incorporated into the current session with the command xrdb ~/.Xdefaults.

Up to nine X graphics windows may be used with spec simultaneously. Parameters specified in the .Xdefaults file with the keyword spec will apply to all, unless overridden by the following. Parameters specified with the keyword spec_1, will apply to the window selected with the command plot_cntl("filter1"), parameters specified with the keyword spec_2 will apply to the window selected with the command plot_cntl("filter2"), etc. An additional x11filt process is created for each window. For example, to set the default geometry for the first six windows to be non-overlapping on a 2560x1440 pixel screen, use directives such as:

spec_1.geometry:  =640x400+1920+10
spec_2.geometry:  =640x400+1920+430
spec_3.geometry:  =640x400+1920+850
spec_4.geometry:  =640x400+1270+10
spec_5.geometry:  =640x400+1270+430
spec_6.geometry:  =640x400+1270+870

The geometry parameter uses the conventional notation to set the width and height of the window and the offsets from the edges of the root window. All the values are in pixels. Positive offsets measure from the left and top of the screen. Negative values measure from the right and bottom.

The Background and Foreground parameters set the colors associated with color numbers zero and one, respectively. (See the colors help file.)

The Backstore and Retained parameters select how the image in the window will be saved when the window is covered up by another window. The backing-store method can be the most efficient way to preserve the window contents if the graphics display supports it. For the retained-pixmap method, the x11filt process performs all the drawing operations on both the active display and an in-memory copy of the window, and uses the in-memory copy to redraw uncovered portions of the window on expose events. The retained-pixmap method is generally not as efficient as using backing store, but may be necessary if backing store is unavailable. If backing store is requested, but unsupported by the display, the retained-pixmap method is automatically used.

(The default values for Backstore and Retained were swapped in spec release 6.08.07 to make Retained the default. Efficiency considerations aren't as important now as compared to when x11filt was written, and modern window managers don't all support the legacy backing store requests from x11filt.)

The BorderWidth and Border parameters select the width and color of the window border, but are generally ignored when a window manager (such as mwm) is running.

The Font parameter uses the standard notation for specifying application fonts in X Windows. The default font uses the * to wild card all fields except the fourth, which selects a roman font. The graphics program selects among all the fonts that match the pattern the one that best fits the height and width of the window when the program first starts and each time the window is resized. The font selected can be limited to a single family in your .Xdefaults file with syntax as in following examples,

spec.Font: -*-lucidatypewriter-bold-r-*-*-*-*-*-*-*-*-*-*
spec.Font: -*-fixed-medium-r-*-*-*-*-*-*-*-*-*-*
spec.Font: -*-courier-medium-r-*

Note, your choice of a font can be aided with the X utility xlsfonts which lists all the available fonts, and the utility xfontsel which can be used to inspect the available fonts.

The x11filt program also supports scalable fonts introduced in X11R5, when such a font is selected using the .Xdefaults resources or the plot_cntl() "font=" option described below. For scalable fonts, the server uses an algorithm to fit the font to whatever size is requested. Scalable fonts can be identified by the zeros in the 7th, 8th and 12th fields of their long name. For example,

spec.Font: -adobe-courier-bold-r-normal--0-0-0-0-m-0-iso8859-1
spec.Font: -adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1

are a couple of possible scalable fonts.

Please note that on some older systems, the fonts.dir files in the /usr/lib/X11/fonts directories aren't up to date, so the x11filt graphics program will try to load a font that doesn't exist. This problem can be fixed by having the system administrator run the mkfontdir command.

Setting the FontDebug property to a nonzero value will cause the x11filt filter process to display some font diagnostics on the terminal screen, which may be useful if there are problems with the font appearance. Debugging can be turned off either by setting the property value back to zero or with the plot_cntl() 9900 command described below.

The program will use color if it determines you are using a color display. The Colors parameter lets you turn use of colors off.

By default, the graphics window will be brought to the top of the stacking order among its siblings each time its contents are changed. To disable this feature, set the AutoRaise parameter to off.

The DotSize parameter controls the size of the smallest point drawn by spec. Possible values are:

scaled
pixel
small
medium
large

The pixel patterns are as follows:

                                    X
    X               X      XXX     XXX
   XX       X      XXX     XXX    XXXXX
                    X      XXX     XXX
                                    X
 scaled   pixel   small   medium  large
(typical)

The scaled points use the X library XFillArc() routine to draw a filled circle. The result depends on the platform and is often nonsymmetric. Before being a configurable option, the default dot size was scaled. The default is now small.

plot_cntl() COMMANDS

You can assign a title to the graphics window using the command

plot_cntl("title=This is a title")

from spec. The title can be changed at any time.

You can also change the size and position of the window at any time using the plot_cntl() function as in

plot_cntl("geometry=640x380-20+10")

Fonts can be selected using:

plot_cntl("font=-adobe-courier-bold-r-normal--20-140-100-100-m-110-iso8859-1")

for example. If a non-scalable font is chosen this way, the font size will no longer change to match the size of the window. Any valid font name can be used, including short alias names, as in,

plot_cntl("font=8x16")

Several special features can be accessed using

plot_cntl("cmd=numb")

(as of spec release 5.01.02-7) where the following values for numb are recognized:

     
  9103 turns retained-pixmap mode on
  9104 turns retained-pixmap mode off
  9105 turns backing-store mode on
  9106 turns backing-store mode off
  9109 turns auto-raise mode on
  9110 turns auto-raise mode off
  9120 selects scaled dot size
  9121 selects single pixel dot size
  9122 selects small dot size
  9123 selects medium dot size
  9124 selects large dot size
  9666 creates a detached window (see below)
  9900 turns font debugging off
  9901 turns font debugging on

Also, the numb argument can be a space- or comma-separated list of numbers.

DETACHING A WINDOW

You can make a detached copy of an active spec X11 plot window by pressing the control key and any mouse button while the mouse cursor is over the window (as of spec release 5.01.02-7). A new X11 window will be created that contains the contents of the original window. The contents of the new window will no longer change, and the window will remain on the screen, even after spec exits. Use the window manager close button or menu item to delete the window.

SEE ALSO

colors setplot splot